aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/scripting-engines/trace-event-perl.c
diff options
context:
space:
mode:
authorFeng Tang <feng.tang@intel.com>2012-08-08 05:57:52 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2012-08-08 11:46:40 -0400
commit73994dc158a24df4af77d0a76c9702f120f7a6ad (patch)
tree26380804ed9dd1c8bc6e3d00459aaed01edd4d74 /tools/perf/util/scripting-engines/trace-event-perl.c
parent6a6daec2ae9f097703c1da4925367f1c198c9492 (diff)
perf script: Replace "struct thread" with "struct addr_location" as a parameter for "process_event()"
Both perl and python script start processing events other than trace points, and it's useful to pass the resolved symbol and the dso info to the event handler in script for better analysis and statistics. Struct thread is already a member of struct addr_location, using addr_location will keep the thread info, while providing additional symbol and dso info if exist, so that the script itself doesn't need to bother to do the symbol resolving and dso searching work. Tested-by: David Ahern <dsahern@gmail.com> Signed-off-by: Feng Tang <feng.tang@intel.com> Acked-by: David Ahern <dsahern@gmail.com> Cc: Andi Kleen <andi@firstfloor.org> Cc: David Ahern <dsahern@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Robert Richter <robert.richter@amd.com> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1344419875-21665-3-git-send-email-feng.tang@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/scripting-engines/trace-event-perl.c')
-rw-r--r--tools/perf/util/scripting-engines/trace-event-perl.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/tools/perf/util/scripting-engines/trace-event-perl.c b/tools/perf/util/scripting-engines/trace-event-perl.c
index 52580d09d75c..d28001016fb5 100644
--- a/tools/perf/util/scripting-engines/trace-event-perl.c
+++ b/tools/perf/util/scripting-engines/trace-event-perl.c
@@ -261,7 +261,7 @@ static void perl_process_tracepoint(union perf_event *perf_event __unused,
261 struct perf_sample *sample, 261 struct perf_sample *sample,
262 struct perf_evsel *evsel, 262 struct perf_evsel *evsel,
263 struct machine *machine __unused, 263 struct machine *machine __unused,
264 struct thread *thread) 264 struct addr_location *al)
265{ 265{
266 struct format_field *field; 266 struct format_field *field;
267 static char handler[256]; 267 static char handler[256];
@@ -272,6 +272,7 @@ static void perl_process_tracepoint(union perf_event *perf_event __unused,
272 int cpu = sample->cpu; 272 int cpu = sample->cpu;
273 void *data = sample->raw_data; 273 void *data = sample->raw_data;
274 unsigned long long nsecs = sample->time; 274 unsigned long long nsecs = sample->time;
275 struct thread *thread = al->thread;
275 char *comm = thread->comm; 276 char *comm = thread->comm;
276 277
277 dSP; 278 dSP;
@@ -349,7 +350,7 @@ static void perl_process_event_generic(union perf_event *event,
349 struct perf_sample *sample, 350 struct perf_sample *sample,
350 struct perf_evsel *evsel, 351 struct perf_evsel *evsel,
351 struct machine *machine __unused, 352 struct machine *machine __unused,
352 struct thread *thread __unused) 353 struct addr_location *al __unused)
353{ 354{
354 dSP; 355 dSP;
355 356
@@ -375,10 +376,10 @@ static void perl_process_event(union perf_event *event,
375 struct perf_sample *sample, 376 struct perf_sample *sample,
376 struct perf_evsel *evsel, 377 struct perf_evsel *evsel,
377 struct machine *machine, 378 struct machine *machine,
378 struct thread *thread) 379 struct addr_location *al)
379{ 380{
380 perl_process_tracepoint(event, sample, evsel, machine, thread); 381 perl_process_tracepoint(event, sample, evsel, machine, al);
381 perl_process_event_generic(event, sample, evsel, machine, thread); 382 perl_process_event_generic(event, sample, evsel, machine, al);
382} 383}
383 384
384static void run_start_sub(void) 385static void run_start_sub(void)