summaryrefslogtreecommitdiff
path: root/Documentation/perf_counter/builtin-record.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-05-27 09:10:38 +0200
committerIngo Molnar <mingo@elte.hu>2009-05-27 08:10:35 +0200
commit16f762a2ac5ecf8a11f6f0332e46cc3459220da5 (patch)
treea54f013d037637a91ceac237b2b0455b29cf45d4 /Documentation/perf_counter/builtin-record.c
parent815e777f913ed54ddb449d2854015c65b4ecbfe3 (diff)
downloadlwn-16f762a2ac5ecf8a11f6f0332e46cc3459220da5.tar.gz
lwn-16f762a2ac5ecf8a11f6f0332e46cc3459220da5.zip
perf_counter tools: Introduce stricter C code checking
Tighten up our C code requirements: - disallow warnings - disallow declarations-mixed-with-statements - require proper prototypes - require C99 (with gcc extensions) Fix up a ton of problems these measures unearth: - unused functions - needlessly global functions - missing prototypes - code mixed with declarations Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: Marcelo Tosatti <mtosatti@redhat.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: John Kacur <jkacur@redhat.com> Cc: Steven Rostedt <rostedt@goodmis.org> LKML-Reference: <20090526222155.GJ4424@ghostprotocols.net> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'Documentation/perf_counter/builtin-record.c')
-rw-r--r--Documentation/perf_counter/builtin-record.c38
1 files changed, 21 insertions, 17 deletions
diff --git a/Documentation/perf_counter/builtin-record.c b/Documentation/perf_counter/builtin-record.c
index ec2b787b23bd..68abfdf71d39 100644
--- a/Documentation/perf_counter/builtin-record.c
+++ b/Documentation/perf_counter/builtin-record.c
@@ -1,6 +1,7 @@
#include "perf.h"
+#include "builtin.h"
#include "util/util.h"
#include "util/parse-options.h"
#include "util/parse-events.h"
@@ -144,26 +145,32 @@ static int nr_poll;
static int nr_cpu;
struct mmap_event {
- struct perf_event_header header;
- __u32 pid, tid;
- __u64 start;
- __u64 len;
- __u64 pgoff;
- char filename[PATH_MAX];
+ struct perf_event_header header;
+ __u32 pid;
+ __u32 tid;
+ __u64 start;
+ __u64 len;
+ __u64 pgoff;
+ char filename[PATH_MAX];
};
+
struct comm_event {
- struct perf_event_header header;
- __u32 pid,tid;
- char comm[16];
+ struct perf_event_header header;
+ __u32 pid;
+ __u32 tid;
+ char comm[16];
};
static pid_t pid_synthesize_comm_event(pid_t pid)
{
+ struct comm_event comm_ev;
char filename[PATH_MAX];
+ pid_t spid, ppid;
char bf[BUFSIZ];
- struct comm_event comm_ev;
+ int fd, nr, ret;
+ char comm[18];
size_t size;
- int fd;
+ char state;
snprintf(filename, sizeof(filename), "/proc/%d/stat", pid);
@@ -178,12 +185,8 @@ static pid_t pid_synthesize_comm_event(pid_t pid)
}
close(fd);
- pid_t spid, ppid;
- char state;
- char comm[18];
-
memset(&comm_ev, 0, sizeof(comm_ev));
- int nr = sscanf(bf, "%d %s %c %d %d ",
+ nr = sscanf(bf, "%d %s %c %d %d ",
&spid, comm, &state, &ppid, &comm_ev.pid);
if (nr != 5) {
fprintf(stderr, "couldn't get COMM and pgid, malformed %s\n",
@@ -198,7 +201,8 @@ static pid_t pid_synthesize_comm_event(pid_t pid)
memcpy(comm_ev.comm, comm + 1, size);
size = ALIGN(size, sizeof(uint64_t));
comm_ev.header.size = sizeof(comm_ev) - (sizeof(comm_ev.comm) - size);
- int ret = write(output, &comm_ev, comm_ev.header.size);
+
+ ret = write(output, &comm_ev, comm_ev.header.size);
if (ret < 0) {
perror("failed to write");
exit(-1);