Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6fab0192 authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar
Browse files

perf_counter: provide misc bits in the event header



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: default avatarPeter 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: default avatarIngo Molnar <mingo@elte.hu>
parent e30e08f6
Loading
Loading
Loading
Loading
+5 −1
Original line number Original line Diff line number Diff line
@@ -201,9 +201,13 @@ struct perf_counter_mmap_page {
	__u32   data_head;		/* head in the data section */
	__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 {
struct perf_event_header {
	__u32	type;
	__u32	type;
	__u32	size;
	__u16	misc;
	__u16	size;
};
};


enum perf_event_type {
enum perf_event_type {
+3 −0
Original line number Original line Diff line number Diff line
@@ -1831,6 +1831,9 @@ static void perf_counter_output(struct perf_counter *counter,
	header.type = PERF_EVENT_COUNTER_OVERFLOW;
	header.type = PERF_EVENT_COUNTER_OVERFLOW;
	header.size = sizeof(header);
	header.size = sizeof(header);


	header.misc = user_mode(regs) ?
		PERF_EVENT_MISC_USER : PERF_EVENT_MISC_KERNEL;

	if (record_type & PERF_RECORD_IP) {
	if (record_type & PERF_RECORD_IP) {
		ip = instruction_pointer(regs);
		ip = instruction_pointer(regs);
		header.type |= __PERF_EVENT_IP;
		header.type |= __PERF_EVENT_IP;