diff options
-rw-r--r-- | tools/perf/builtin-script.c | 5 | ||||
-rw-r--r-- | tools/perf/util/scripting-engines/trace-event-perl.c | 11 | ||||
-rw-r--r-- | tools/perf/util/scripting-engines/trace-event-python.c | 13 | ||||
-rw-r--r-- | tools/perf/util/trace-event-scripting.c | 2 | ||||
-rw-r--r-- | tools/perf/util/trace-event.h | 5 |
5 files changed, 20 insertions, 16 deletions
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 6425612b4d99..30a9cb8c9927 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c | |||
@@ -396,9 +396,10 @@ static void print_sample_bts(union perf_event *event, | |||
396 | 396 | ||
397 | static void process_event(union perf_event *event, struct perf_sample *sample, | 397 | static void process_event(union perf_event *event, struct perf_sample *sample, |
398 | struct perf_evsel *evsel, struct machine *machine, | 398 | struct perf_evsel *evsel, struct machine *machine, |
399 | struct thread *thread) | 399 | struct addr_location *al) |
400 | { | 400 | { |
401 | struct perf_event_attr *attr = &evsel->attr; | 401 | struct perf_event_attr *attr = &evsel->attr; |
402 | struct thread *thread = al->thread; | ||
402 | 403 | ||
403 | if (output[attr->type].fields == 0) | 404 | if (output[attr->type].fields == 0) |
404 | return; | 405 | return; |
@@ -511,7 +512,7 @@ static int process_sample_event(struct perf_tool *tool __used, | |||
511 | if (cpu_list && !test_bit(sample->cpu, cpu_bitmap)) | 512 | if (cpu_list && !test_bit(sample->cpu, cpu_bitmap)) |
512 | return 0; | 513 | return 0; |
513 | 514 | ||
514 | scripting_ops->process_event(event, sample, evsel, machine, thread); | 515 | scripting_ops->process_event(event, sample, evsel, machine, &al); |
515 | 516 | ||
516 | evsel->hists.stats.total_period += sample->period; | 517 | evsel->hists.stats.total_period += sample->period; |
517 | return 0; | 518 | return 0; |
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 | ||
384 | static void run_start_sub(void) | 385 | static void run_start_sub(void) |
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c index b9010d878b4b..24711b3536d3 100644 --- a/tools/perf/util/scripting-engines/trace-event-python.c +++ b/tools/perf/util/scripting-engines/trace-event-python.c | |||
@@ -225,7 +225,7 @@ static void python_process_tracepoint(union perf_event *perf_event __unused, | |||
225 | struct perf_sample *sample, | 225 | struct perf_sample *sample, |
226 | struct perf_evsel *evsel, | 226 | struct perf_evsel *evsel, |
227 | struct machine *machine __unused, | 227 | struct machine *machine __unused, |
228 | struct thread *thread) | 228 | struct addr_location *al) |
229 | { | 229 | { |
230 | PyObject *handler, *retval, *context, *t, *obj, *dict = NULL; | 230 | PyObject *handler, *retval, *context, *t, *obj, *dict = NULL; |
231 | static char handler_name[256]; | 231 | static char handler_name[256]; |
@@ -238,6 +238,7 @@ static void python_process_tracepoint(union perf_event *perf_event __unused, | |||
238 | int cpu = sample->cpu; | 238 | int cpu = sample->cpu; |
239 | void *data = sample->raw_data; | 239 | void *data = sample->raw_data; |
240 | unsigned long long nsecs = sample->time; | 240 | unsigned long long nsecs = sample->time; |
241 | struct thread *thread = al->thread; | ||
241 | char *comm = thread->comm; | 242 | char *comm = thread->comm; |
242 | 243 | ||
243 | t = PyTuple_New(MAX_FIELDS); | 244 | t = PyTuple_New(MAX_FIELDS); |
@@ -342,7 +343,7 @@ static void python_process_general_event(union perf_event *perf_event __unused, | |||
342 | struct perf_sample *sample, | 343 | struct perf_sample *sample, |
343 | struct perf_evsel *evsel, | 344 | struct perf_evsel *evsel, |
344 | struct machine *machine __unused, | 345 | struct machine *machine __unused, |
345 | struct thread *thread __unused) | 346 | struct addr_location *al __unused) |
346 | { | 347 | { |
347 | PyObject *handler, *retval, *t; | 348 | PyObject *handler, *retval, *t; |
348 | static char handler_name[64]; | 349 | static char handler_name[64]; |
@@ -361,7 +362,7 @@ static void python_process_general_event(union perf_event *perf_event __unused, | |||
361 | goto exit; | 362 | goto exit; |
362 | } | 363 | } |
363 | 364 | ||
364 | /* Pass 3 parameters: event_attr, perf_sample, raw data */ | 365 | /* Pass 4 parameters: event_attr, perf_sample, raw data, thread name */ |
365 | PyTuple_SetItem(t, n++, PyString_FromStringAndSize((void *)&evsel->attr, sizeof(evsel->attr))); | 366 | PyTuple_SetItem(t, n++, PyString_FromStringAndSize((void *)&evsel->attr, sizeof(evsel->attr))); |
366 | PyTuple_SetItem(t, n++, PyString_FromStringAndSize((void *)sample, sizeof(*sample))); | 367 | PyTuple_SetItem(t, n++, PyString_FromStringAndSize((void *)sample, sizeof(*sample))); |
367 | PyTuple_SetItem(t, n++, PyString_FromStringAndSize(data, sample->raw_size)); | 368 | PyTuple_SetItem(t, n++, PyString_FromStringAndSize(data, sample->raw_size)); |
@@ -380,17 +381,17 @@ static void python_process_event(union perf_event *perf_event, | |||
380 | struct perf_sample *sample, | 381 | struct perf_sample *sample, |
381 | struct perf_evsel *evsel, | 382 | struct perf_evsel *evsel, |
382 | struct machine *machine, | 383 | struct machine *machine, |
383 | struct thread *thread) | 384 | struct addr_location *al) |
384 | { | 385 | { |
385 | switch (evsel->attr.type) { | 386 | switch (evsel->attr.type) { |
386 | case PERF_TYPE_TRACEPOINT: | 387 | case PERF_TYPE_TRACEPOINT: |
387 | python_process_tracepoint(perf_event, sample, evsel, | 388 | python_process_tracepoint(perf_event, sample, evsel, |
388 | machine, thread); | 389 | machine, al); |
389 | break; | 390 | break; |
390 | /* Reserve for future process_hw/sw/raw APIs */ | 391 | /* Reserve for future process_hw/sw/raw APIs */ |
391 | default: | 392 | default: |
392 | python_process_general_event(perf_event, sample, evsel, | 393 | python_process_general_event(perf_event, sample, evsel, |
393 | machine, thread); | 394 | machine, al); |
394 | } | 395 | } |
395 | } | 396 | } |
396 | 397 | ||
diff --git a/tools/perf/util/trace-event-scripting.c b/tools/perf/util/trace-event-scripting.c index aceb8eea15fc..302ff262494c 100644 --- a/tools/perf/util/trace-event-scripting.c +++ b/tools/perf/util/trace-event-scripting.c | |||
@@ -39,7 +39,7 @@ static void process_event_unsupported(union perf_event *event __unused, | |||
39 | struct perf_sample *sample __unused, | 39 | struct perf_sample *sample __unused, |
40 | struct perf_evsel *evsel __unused, | 40 | struct perf_evsel *evsel __unused, |
41 | struct machine *machine __unused, | 41 | struct machine *machine __unused, |
42 | struct thread *thread __unused) | 42 | struct addr_location *al __unused) |
43 | { | 43 | { |
44 | } | 44 | } |
45 | 45 | ||
diff --git a/tools/perf/util/trace-event.h b/tools/perf/util/trace-event.h index cee16350cd86..7575dfd26e58 100644 --- a/tools/perf/util/trace-event.h +++ b/tools/perf/util/trace-event.h | |||
@@ -9,7 +9,6 @@ struct machine; | |||
9 | struct perf_sample; | 9 | struct perf_sample; |
10 | union perf_event; | 10 | union perf_event; |
11 | struct perf_tool; | 11 | struct perf_tool; |
12 | struct thread; | ||
13 | 12 | ||
14 | extern int header_page_size_size; | 13 | extern int header_page_size_size; |
15 | extern int header_page_ts_size; | 14 | extern int header_page_ts_size; |
@@ -76,6 +75,8 @@ struct tracing_data *tracing_data_get(struct list_head *pattrs, | |||
76 | void tracing_data_put(struct tracing_data *tdata); | 75 | void tracing_data_put(struct tracing_data *tdata); |
77 | 76 | ||
78 | 77 | ||
78 | struct addr_location; | ||
79 | |||
79 | struct scripting_ops { | 80 | struct scripting_ops { |
80 | const char *name; | 81 | const char *name; |
81 | int (*start_script) (const char *script, int argc, const char **argv); | 82 | int (*start_script) (const char *script, int argc, const char **argv); |
@@ -84,7 +85,7 @@ struct scripting_ops { | |||
84 | struct perf_sample *sample, | 85 | struct perf_sample *sample, |
85 | struct perf_evsel *evsel, | 86 | struct perf_evsel *evsel, |
86 | struct machine *machine, | 87 | struct machine *machine, |
87 | struct thread *thread); | 88 | struct addr_location *al); |
88 | int (*generate_script) (struct pevent *pevent, const char *outfile); | 89 | int (*generate_script) (struct pevent *pevent, const char *outfile); |
89 | }; | 90 | }; |
90 | 91 | ||