Skip to content

Commit

Permalink
perf_counter: provide misc bits in the event header
Browse files Browse the repository at this point in the history
Limit the size of each record to 64k (or should we count in multiples
of u64 and have a 512K limit?), this gives 16 bits or spare room in the
header, which we can use for misc bits, so as to not have to grow the
record with u64 every time we have a few bits to report.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
LKML-Reference: <20090408130408.769271806@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Peter Zijlstra authored and Ingo Molnar committed Apr 8, 2009
1 parent e30e08f commit 6fab019
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
6 changes: 5 additions & 1 deletion include/linux/perf_counter.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
3 changes: 3 additions & 0 deletions kernel/perf_counter.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 6fab019

Please sign in to comment.