Messages in this thread | | | Date | Tue, 1 Mar 2011 13:49:26 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH 4/6] perf script: dump software events too |
| |
Em Tue, Mar 01, 2011 at 09:11:20AM -0700, David Ahern escreveu: > On 03/01/2011 08:11 AM, Frederic Weisbecker wrote: > > Why shouldn't it be designed to dump software events? It's called print_event(). > > Its current version is rather something I would call "limited". But it > > was not designed to be limited.
> That's because its origins are trace specific. Per last week's thread, > perf-script was perf-trace until Nov 2010. perf-script deals with > tracepoints.
> > Ideally, we should have print_tracepoint_event() in > > trace-event-parse.c, print_software_event() > > where you want, and have print_event() in builtin-script.c that wraps on those. > > process_event does not take the event sample, it takes elements of it: > > struct scripting_ops { > ... > void (*process_event) (int cpu, void *data, int size, > unsigned long long nsecs, char *comm);
I still have to read the entire thread, but this definetely should receive "struct perf_sample", i.e. the parsed sample and the 'struct thread' from where it can get the comm, etc
Look at the process_event for builtin-script.c:
scripting_ops->process_event(sample->cpu, sample->raw_data, sample->raw_size, sample->time, thread->comm);
I'd change it to:
scripting_ops->process_event(event, sample, thread);
Or even short circuit it completely modulo debugging, becoming:
static int process_sample_event(union perf_event *event, struct perf_sample *sample, struct perf_session *session) { if (debug_mode) { if (sample->time < last_timestamp) { pr_err("Samples misordered, previous: %" PRIu64 " this: %" PRIu64 "\n", last_timestamp, sample->time); nr_unordered++; } last_timestamp = sample->time; } else { scripting_ops->process_event(event, sample, session); session->hists.stats.total_period += sample->period; } return 0; }
Script modules may then do their thread accounting if comms are asked for, etc.
- Arnaldo
| |