perf tools: Make event__preprocess_sample parse the sample
Simplifying the tools that were using both in sequence and allowing upcoming simplifications, such as Arun's patch to sort by cpus. Cc: David S. Miller <davem@davemloft.net> Cc: Frédéric Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Cc: Tom Zanussi <tzanussi@gmail.com> LKML-Reference: <new-submission> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
@ -655,11 +655,36 @@ static void dso__calc_col_width(struct dso *self)
|
||||
}
|
||||
|
||||
int event__preprocess_sample(const event_t *self, struct perf_session *session,
|
||||
struct addr_location *al, symbol_filter_t filter)
|
||||
struct addr_location *al, struct sample_data *data,
|
||||
symbol_filter_t filter)
|
||||
{
|
||||
u8 cpumode = self->header.misc & PERF_RECORD_MISC_CPUMODE_MASK;
|
||||
struct thread *thread = perf_session__findnew(session, self->ip.pid);
|
||||
struct thread *thread;
|
||||
|
||||
event__parse_sample(self, session->sample_type, data);
|
||||
|
||||
dump_printf("(IP, %d): %d/%d: %#Lx period: %Ld cpu:%d\n",
|
||||
self->header.misc, data->pid, data->tid, data->ip,
|
||||
data->period, data->cpu);
|
||||
|
||||
if (session->sample_type & PERF_SAMPLE_CALLCHAIN) {
|
||||
unsigned int i;
|
||||
|
||||
dump_printf("... chain: nr:%Lu\n", data->callchain->nr);
|
||||
|
||||
if (!ip_callchain__valid(data->callchain, self)) {
|
||||
pr_debug("call-chain problem with event, "
|
||||
"skipping it.\n");
|
||||
goto out_filtered;
|
||||
}
|
||||
|
||||
if (dump_trace) {
|
||||
for (i = 0; i < data->callchain->nr; i++)
|
||||
dump_printf("..... %2d: %016Lx\n",
|
||||
i, data->callchain->ips[i]);
|
||||
}
|
||||
}
|
||||
thread = perf_session__findnew(session, self->ip.pid);
|
||||
if (thread == NULL)
|
||||
return -1;
|
||||
|
||||
@ -724,9 +749,9 @@ out_filtered:
|
||||
return 0;
|
||||
}
|
||||
|
||||
int event__parse_sample(event_t *event, u64 type, struct sample_data *data)
|
||||
int event__parse_sample(const event_t *event, u64 type, struct sample_data *data)
|
||||
{
|
||||
u64 *array = event->sample.array;
|
||||
const u64 *array = event->sample.array;
|
||||
|
||||
if (type & PERF_SAMPLE_IP) {
|
||||
data->ip = event->ip.ip;
|
||||
|
Reference in New Issue
Block a user