From 02aac47fe533583d299ba1430416b31303133a40 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Wed, 8 Apr 2009 15:01:26 +0200 Subject: [PATCH] --- yaml --- r: 147346 b: refs/heads/master c: 6fab01927e8bdbbc77bafba2abb4810c5591ad52 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/linux/perf_counter.h | 6 +++++- trunk/kernel/perf_counter.c | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 88a3411dc090..3882ea7c09e7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e30e08f65c7ef6c230424264f09c3d53f117f58b +refs/heads/master: 6fab01927e8bdbbc77bafba2abb4810c5591ad52 diff --git a/trunk/include/linux/perf_counter.h b/trunk/include/linux/perf_counter.h index 7f5d353d78ac..5bd8817b12d4 100644 --- a/trunk/include/linux/perf_counter.h +++ b/trunk/include/linux/perf_counter.h @@ -201,9 +201,13 @@ struct perf_counter_mmap_page { __u32 data_head; /* head in the data section */ }; +#define PERF_EVENT_MISC_KERNEL (1 << 0) +#define PERF_EVENT_MISC_USER (1 << 1) + struct perf_event_header { __u32 type; - __u32 size; + __u16 misc; + __u16 size; }; enum perf_event_type { diff --git a/trunk/kernel/perf_counter.c b/trunk/kernel/perf_counter.c index 84a39081344c..4af98f943d3b 100644 --- a/trunk/kernel/perf_counter.c +++ b/trunk/kernel/perf_counter.c @@ -1831,6 +1831,9 @@ static void perf_counter_output(struct perf_counter *counter, header.type = PERF_EVENT_COUNTER_OVERFLOW; header.size = sizeof(header); + header.misc = user_mode(regs) ? + PERF_EVENT_MISC_USER : PERF_EVENT_MISC_KERNEL; + if (record_type & PERF_RECORD_IP) { ip = instruction_pointer(regs); header.type |= __PERF_EVENT_IP;