diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2009-11-27 13:29:22 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-11-27 14:22:01 -0500 |
commit | 62daacb51a2bf8480e6f6b3696b03f102fc15eb0 (patch) | |
tree | 5b9ed87005a5e59bcc95dd9a42e3d09d6481362d /tools/perf/builtin-kmem.c | |
parent | 1de8e24520ffdcf2a90c842eed937f59079a2abd (diff) |
perf tools: Reorganize event processing routines, lotsa dups killed
While implementing event__preprocess_sample, that will do all of
the symbol lookup in one convenient function, I noticed that
util/process_event.[ch] were not being used at all, then started
looking if there were other functions that could be shared
and...
All those functions really don't need to receive offset + head,
the only thing they did was common to all of them, so do it at
one place instead.
Stats about number of each type of event processed now is done
in a central place.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: John Kacur <jkacur@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <1259346563-12568-11-git-send-email-acme@infradead.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/builtin-kmem.c')
-rw-r--r-- | tools/perf/builtin-kmem.c | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c index 35722fafc4d1..e7294c8fc620 100644 --- a/tools/perf/builtin-kmem.c +++ b/tools/perf/builtin-kmem.c | |||
@@ -33,9 +33,6 @@ static bool raw_ip; | |||
33 | 33 | ||
34 | static char default_sort_order[] = "frag,hit,bytes"; | 34 | static char default_sort_order[] = "frag,hit,bytes"; |
35 | 35 | ||
36 | static char *cwd; | ||
37 | static int cwdlen; | ||
38 | |||
39 | static int *cpunode_map; | 36 | static int *cpunode_map; |
40 | static int max_cpu_num; | 37 | static int max_cpu_num; |
41 | 38 | ||
@@ -126,25 +123,6 @@ static void setup_cpunode_map(void) | |||
126 | } | 123 | } |
127 | } | 124 | } |
128 | 125 | ||
129 | static int | ||
130 | process_comm_event(event_t *event, unsigned long offset, unsigned long head) | ||
131 | { | ||
132 | struct thread *thread = threads__findnew(event->comm.pid); | ||
133 | |||
134 | dump_printf("%p [%p]: PERF_RECORD_COMM: %s:%d\n", | ||
135 | (void *)(offset + head), | ||
136 | (void *)(long)(event->header.size), | ||
137 | event->comm.comm, event->comm.pid); | ||
138 | |||
139 | if (thread == NULL || | ||
140 | thread__set_comm(thread, event->comm.comm)) { | ||
141 | dump_printf("problem processing PERF_RECORD_COMM, skipping event.\n"); | ||
142 | return -1; | ||
143 | } | ||
144 | |||
145 | return 0; | ||
146 | } | ||
147 | |||
148 | static void insert_alloc_stat(unsigned long call_site, unsigned long ptr, | 126 | static void insert_alloc_stat(unsigned long call_site, unsigned long ptr, |
149 | int bytes_req, int bytes_alloc, int cpu) | 127 | int bytes_req, int bytes_alloc, int cpu) |
150 | { | 128 | { |
@@ -340,8 +318,7 @@ process_raw_event(event_t *raw_event __used, void *more_data, | |||
340 | } | 318 | } |
341 | } | 319 | } |
342 | 320 | ||
343 | static int | 321 | static int process_sample_event(event_t *event) |
344 | process_sample_event(event_t *event, unsigned long offset, unsigned long head) | ||
345 | { | 322 | { |
346 | u64 ip = event->ip.ip; | 323 | u64 ip = event->ip.ip; |
347 | u64 timestamp = -1; | 324 | u64 timestamp = -1; |
@@ -366,9 +343,7 @@ process_sample_event(event_t *event, unsigned long offset, unsigned long head) | |||
366 | more_data += sizeof(u64); | 343 | more_data += sizeof(u64); |
367 | } | 344 | } |
368 | 345 | ||
369 | dump_printf("%p [%p]: PERF_RECORD_SAMPLE (IP, %d): %d/%d: %p period: %Ld\n", | 346 | dump_printf("(IP, %d): %d/%d: %p period: %Ld\n", |
370 | (void *)(offset + head), | ||
371 | (void *)(long)(event->header.size), | ||
372 | event->header.misc, | 347 | event->header.misc, |
373 | event->ip.pid, event->ip.tid, | 348 | event->ip.pid, event->ip.tid, |
374 | (void *)(long)ip, | 349 | (void *)(long)ip, |
@@ -403,7 +378,7 @@ static int sample_type_check(u64 type) | |||
403 | 378 | ||
404 | static struct perf_file_handler file_handler = { | 379 | static struct perf_file_handler file_handler = { |
405 | .process_sample_event = process_sample_event, | 380 | .process_sample_event = process_sample_event, |
406 | .process_comm_event = process_comm_event, | 381 | .process_comm_event = event__process_comm, |
407 | .sample_type_check = sample_type_check, | 382 | .sample_type_check = sample_type_check, |
408 | }; | 383 | }; |
409 | 384 | ||
@@ -413,7 +388,7 @@ static int read_events(void) | |||
413 | register_perf_file_handler(&file_handler); | 388 | register_perf_file_handler(&file_handler); |
414 | 389 | ||
415 | return mmap_dispatch_perf_file(&header, input_name, 0, 0, | 390 | return mmap_dispatch_perf_file(&header, input_name, 0, 0, |
416 | &cwdlen, &cwd); | 391 | &event__cwdlen, &event__cwd); |
417 | } | 392 | } |
418 | 393 | ||
419 | static double fragmentation(unsigned long n_req, unsigned long n_alloc) | 394 | static double fragmentation(unsigned long n_req, unsigned long n_alloc) |