diff options
Diffstat (limited to 'tools/include/uapi/linux/perf_event.h')
| -rw-r--r-- | tools/include/uapi/linux/perf_event.h | 23 | 
1 files changed, 20 insertions, 3 deletions
diff --git a/tools/include/uapi/linux/perf_event.h b/tools/include/uapi/linux/perf_event.h index 7b2d6fc9e6ed..21a1edd08cbe 100644 --- a/tools/include/uapi/linux/perf_event.h +++ b/tools/include/uapi/linux/perf_event.h @@ -532,9 +532,10 @@ struct perf_event_mmap_page {  				cap_bit0_is_deprecated	: 1, /* Always 1, signals that bit 0 is zero */  				cap_user_rdpmc		: 1, /* The RDPMC instruction can be used to read counts */ -				cap_user_time		: 1, /* The time_* fields are used */ +				cap_user_time		: 1, /* The time_{shift,mult,offset} fields are used */  				cap_user_time_zero	: 1, /* The time_zero field is used */ -				cap_____res		: 59; +				cap_user_time_short	: 1, /* the time_{cycle,mask} fields are used */ +				cap_____res		: 58;  		};  	}; @@ -593,13 +594,29 @@ struct perf_event_mmap_page {  	 *               ((rem * time_mult) >> time_shift);  	 */  	__u64	time_zero; +  	__u32	size;			/* Header size up to __reserved[] fields. */ +	__u32	__reserved_1; + +	/* +	 * If cap_usr_time_short, the hardware clock is less than 64bit wide +	 * and we must compute the 'cyc' value, as used by cap_usr_time, as: +	 * +	 *   cyc = time_cycles + ((cyc - time_cycles) & time_mask) +	 * +	 * NOTE: this form is explicitly chosen such that cap_usr_time_short +	 *       is a correction on top of cap_usr_time, and code that doesn't +	 *       know about cap_usr_time_short still works under the assumption +	 *       the counter doesn't wrap. +	 */ +	__u64	time_cycles; +	__u64	time_mask;  		/*  		 * Hole for extension of the self monitor capabilities  		 */ -	__u8	__reserved[118*8+4];	/* align to 1k. */ +	__u8	__reserved[116*8];	/* align to 1k. */  	/*  	 * Control data for the mmap() data buffer.  |