From 59472d49b39867f6d63fad1e8171af074b37281f Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Wed, 2 Sep 2009 20:20:38 +0200 Subject: [PATCH] --- yaml --- r: 158297 b: refs/heads/master c: cd6feeeafddbef6abfe4d90fb26e42fd844d34ed h: refs/heads/master i: 158295: 53c61b32edc122eb641ae9fad89d6a41ed0737f8 v: v3 --- [refs] | 2 +- trunk/tools/perf/builtin-record.c | 4 +++- trunk/tools/perf/builtin-trace.c | 9 ++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 191f7c7555f3..1bd97ce10bdc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 65014ab36196f6d86edc9ee23759d6930b9d89a8 +refs/heads/master: cd6feeeafddbef6abfe4d90fb26e42fd844d34ed diff --git a/trunk/tools/perf/builtin-record.c b/trunk/tools/perf/builtin-record.c index add514d53d2e..ff93f8ecba28 100644 --- a/trunk/tools/perf/builtin-record.c +++ b/trunk/tools/perf/builtin-record.c @@ -403,8 +403,10 @@ static void create_counter(int counter, int cpu, pid_t pid) if (call_graph) attr->sample_type |= PERF_SAMPLE_CALLCHAIN; - if (raw_samples) + if (raw_samples) { attr->sample_type |= PERF_SAMPLE_RAW; + attr->sample_type |= PERF_SAMPLE_CPU; + } attr->mmap = track; attr->comm = track; diff --git a/trunk/tools/perf/builtin-trace.c b/trunk/tools/perf/builtin-trace.c index 8247fd04745a..bbe4c444ef8f 100644 --- a/trunk/tools/perf/builtin-trace.c +++ b/trunk/tools/perf/builtin-trace.c @@ -58,12 +58,19 @@ process_sample_event(event_t *event, unsigned long offset, unsigned long head) struct dso *dso = NULL; struct thread *thread; u64 ip = event->ip.ip; + u32 cpu = -1; u64 period = 1; void *more_data = event->ip.__more_data; int cpumode; thread = threads__findnew(event->ip.pid, &threads, &last_match); + if (sample_type & PERF_SAMPLE_CPU) { + cpu = *(u32 *)more_data; + more_data += sizeof(u32); + more_data += sizeof(u32); /* reserved */ + } + if (sample_type & PERF_SAMPLE_PERIOD) { period = *(u64 *)more_data; more_data += sizeof(u64); @@ -120,7 +127,7 @@ process_sample_event(event_t *event, unsigned long offset, unsigned long head) * field, although it should be the same than this perf * event pid */ - print_event(0, raw->data, raw->size, 0, thread->comm); + print_event(cpu, raw->data, raw->size, 0, thread->comm); } total += period;