diff options
| author | Feng Tang <[email protected]> | 2012-08-08 09:57:52 +0000 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <[email protected]> | 2012-08-08 15:46:40 +0000 |
| commit | 73994dc158a24df4af77d0a76c9702f120f7a6ad (patch) | |
| tree | 26380804ed9dd1c8bc6e3d00459aaed01edd4d74 /tools/perf/util/scripting-engines/trace-event-python.c | |
| parent | perf script: Add general python handler to process non-tracepoint events (diff) | |
| download | kernel-73994dc158a24df4af77d0a76c9702f120f7a6ad.tar.gz kernel-73994dc158a24df4af77d0a76c9702f120f7a6ad.zip | |
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 <[email protected]>
Signed-off-by: Feng Tang <[email protected]>
Acked-by: David Ahern <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Robert Richter <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
Diffstat (limited to 'tools/perf/util/scripting-engines/trace-event-python.c')
| -rw-r--r-- | tools/perf/util/scripting-engines/trace-event-python.c | 13 |
1 files changed, 7 insertions, 6 deletions
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, struct perf_sample *sample, struct perf_evsel *evsel, struct machine *machine __unused, - struct thread *thread) + struct addr_location *al) { PyObject *handler, *retval, *context, *t, *obj, *dict = NULL; static char handler_name[256]; @@ -238,6 +238,7 @@ static void python_process_tracepoint(union perf_event *perf_event __unused, int cpu = sample->cpu; void *data = sample->raw_data; unsigned long long nsecs = sample->time; + struct thread *thread = al->thread; char *comm = thread->comm; t = PyTuple_New(MAX_FIELDS); @@ -342,7 +343,7 @@ static void python_process_general_event(union perf_event *perf_event __unused, struct perf_sample *sample, struct perf_evsel *evsel, struct machine *machine __unused, - struct thread *thread __unused) + struct addr_location *al __unused) { PyObject *handler, *retval, *t; static char handler_name[64]; @@ -361,7 +362,7 @@ static void python_process_general_event(union perf_event *perf_event __unused, goto exit; } - /* Pass 3 parameters: event_attr, perf_sample, raw data */ + /* Pass 4 parameters: event_attr, perf_sample, raw data, thread name */ PyTuple_SetItem(t, n++, PyString_FromStringAndSize((void *)&evsel->attr, sizeof(evsel->attr))); PyTuple_SetItem(t, n++, PyString_FromStringAndSize((void *)sample, sizeof(*sample))); PyTuple_SetItem(t, n++, PyString_FromStringAndSize(data, sample->raw_size)); @@ -380,17 +381,17 @@ static void python_process_event(union perf_event *perf_event, struct perf_sample *sample, struct perf_evsel *evsel, struct machine *machine, - struct thread *thread) + struct addr_location *al) { switch (evsel->attr.type) { case PERF_TYPE_TRACEPOINT: python_process_tracepoint(perf_event, sample, evsel, - machine, thread); + machine, al); break; /* Reserve for future process_hw/sw/raw APIs */ default: python_process_general_event(perf_event, sample, evsel, - machine, thread); + machine, al); } } |
