aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-kmem.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2009-11-27 13:29:22 -0500
committerIngo Molnar <mingo@elte.hu>2009-11-27 14:22:01 -0500
commit62daacb51a2bf8480e6f6b3696b03f102fc15eb0 (patch)
tree5b9ed87005a5e59bcc95dd9a42e3d09d6481362d /tools/perf/builtin-kmem.c
parent1de8e24520ffdcf2a90c842eed937f59079a2abd (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.c33
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
34static char default_sort_order[] = "frag,hit,bytes"; 34static char default_sort_order[] = "frag,hit,bytes";
35 35
36static char *cwd;
37static int cwdlen;
38
39static int *cpunode_map; 36static int *cpunode_map;
40static int max_cpu_num; 37static int max_cpu_num;
41 38
@@ -126,25 +123,6 @@ static void setup_cpunode_map(void)
126 } 123 }
127} 124}
128 125
129static int
130process_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
148static void insert_alloc_stat(unsigned long call_site, unsigned long ptr, 126static 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
343static int 321static int process_sample_event(event_t *event)
344process_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
404static struct perf_file_handler file_handler = { 379static 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
419static double fragmentation(unsigned long n_req, unsigned long n_alloc) 394static double fragmentation(unsigned long n_req, unsigned long n_alloc)