diff options
-rw-r--r-- | include/linux/perf_counter.h | 6 | ||||
-rw-r--r-- | kernel/perf_counter.c | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/include/linux/perf_counter.h b/include/linux/perf_counter.h index 7f5d353d78ac..5bd8817b12d4 100644 --- a/include/linux/perf_counter.h +++ b/include/linux/perf_counter.h | |||
@@ -201,9 +201,13 @@ struct perf_counter_mmap_page { | |||
201 | __u32 data_head; /* head in the data section */ | 201 | __u32 data_head; /* head in the data section */ |
202 | }; | 202 | }; |
203 | 203 | ||
204 | #define PERF_EVENT_MISC_KERNEL (1 << 0) | ||
205 | #define PERF_EVENT_MISC_USER (1 << 1) | ||
206 | |||
204 | struct perf_event_header { | 207 | struct perf_event_header { |
205 | __u32 type; | 208 | __u32 type; |
206 | __u32 size; | 209 | __u16 misc; |
210 | __u16 size; | ||
207 | }; | 211 | }; |
208 | 212 | ||
209 | enum perf_event_type { | 213 | enum perf_event_type { |
diff --git a/kernel/perf_counter.c b/kernel/perf_counter.c index 84a39081344c..4af98f943d3b 100644 --- a/kernel/perf_counter.c +++ b/kernel/perf_counter.c | |||
@@ -1831,6 +1831,9 @@ static void perf_counter_output(struct perf_counter *counter, | |||
1831 | header.type = PERF_EVENT_COUNTER_OVERFLOW; | 1831 | header.type = PERF_EVENT_COUNTER_OVERFLOW; |
1832 | header.size = sizeof(header); | 1832 | header.size = sizeof(header); |
1833 | 1833 | ||
1834 | header.misc = user_mode(regs) ? | ||
1835 | PERF_EVENT_MISC_USER : PERF_EVENT_MISC_KERNEL; | ||
1836 | |||
1834 | if (record_type & PERF_RECORD_IP) { | 1837 | if (record_type & PERF_RECORD_IP) { |
1835 | ip = instruction_pointer(regs); | 1838 | ip = instruction_pointer(regs); |
1836 | header.type |= __PERF_EVENT_IP; | 1839 | header.type |= __PERF_EVENT_IP; |