trinity.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch] perf_event_open: update to features in 4.8-rc2
@ 2016-08-18  0:23 Vince Weaver
  0 siblings, 0 replies; only message in thread
From: Vince Weaver @ 2016-08-18  0:23 UTC (permalink / raw)
  To: trinity; +Cc: Dave Jones


This patch adds in the new ABI features found in 4.7 and 4.8-rc

Signed-off-by: Vince Weaver <vincent.weaver@maine.edu>


diff --git a/include/perf_event.h b/include/perf_event.h
index 356f3be..cb0796f 100644
--- a/include/perf_event.h
+++ b/include/perf_event.h
@@ -170,6 +170,9 @@ enum perf_branch_sample_type_shift {
 	PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT	= 12, /* indirect jumps */
 	PERF_SAMPLE_BRANCH_CALL_SHIFT		= 13, /* direct call */
 
+	PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT	= 14, /* no flags */
+	PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT	= 15, /* no cycles */
+
 	PERF_SAMPLE_BRANCH_MAX_SHIFT		/* non-ABI */
 };
 
@@ -191,6 +194,9 @@ enum perf_branch_sample_type {
 	PERF_SAMPLE_BRANCH_IND_JUMP	= 1U << PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT,
 	PERF_SAMPLE_BRANCH_CALL		= 1U << PERF_SAMPLE_BRANCH_CALL_SHIFT,
 
+	PERF_SAMPLE_BRANCH_NO_FLAGS	= 1U << PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT,
+	PERF_SAMPLE_BRANCH_NO_CYCLES	= 1U << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT,
+
 	PERF_SAMPLE_BRANCH_MAX		= 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT,
 };
 
@@ -269,6 +275,9 @@ enum perf_event_read_format {
 
 /*
  * Hardware event_id to monitor via a performance monitoring event:
+ *
+ * @sample_max_stack: Max number of frame pointers in a callchain,
+ *		      should be < /proc/sys/kernel/perf_event_max_stack
  */
 struct perf_event_attr {
 
@@ -333,7 +342,8 @@ struct perf_event_attr {
 				comm_exec      :  1, /* flag comm events that are due to an exec */
 				use_clockid    :  1, /* use @clockid for time fields */
 				context_switch :  1, /* context switch data */
-				__reserved_1   : 37;
+				write_backward :  1, /* Write ring buffer from end to beginning */
+				__reserved_1   : 36;
 
 	union {
 		__u32		wakeup_events;	  /* wakeup every n events */
@@ -377,7 +387,8 @@ struct perf_event_attr {
 	 * Wakeup watermark for AUX area
 	 */
 	__u32	aux_watermark;
-	__u32	__reserved_2;	/* align to __u64 */
+	__u16	sample_max_stack;
+	__u16	__reserved_2;	/* align to __u64 */
 };
 
 #define perf_flags(attr)	(*(&(attr)->read_format + 1))
@@ -394,6 +405,7 @@ struct perf_event_attr {
 #define PERF_EVENT_IOC_SET_FILTER	_IOW('$', 6, char *)
 #define PERF_EVENT_IOC_ID		_IOR('$', 7, __u64 *)
 #define PERF_EVENT_IOC_SET_BPF		_IOW('$', 8, __u32)
+#define PERF_EVENT_IOC_PAUSE_OUTPUT	_IOW('$', 9, __u32)
 
 enum perf_event_ioc_flags {
 	PERF_IOC_FLAG_GROUP		= 1U << 0,
@@ -853,6 +865,7 @@ enum perf_event_type {
 };
 
 #define PERF_MAX_STACK_DEPTH		127
+#define PERF_MAX_CONTEXTS_PER_STACK	  8
 
 enum perf_callchain_context {
 	PERF_CONTEXT_HV			= (__u64)-32,
diff --git a/syscalls/perf_event_open.c b/syscalls/perf_event_open.c
index dd434bb..3b28cae 100644
--- a/syscalls/perf_event_open.c
+++ b/syscalls/perf_event_open.c
@@ -1020,6 +1020,7 @@ static void create_mostly_valid_counting_event(struct perf_event_attr *attr,
 	attr->comm_exec = RAND_BOOL();
 	attr->use_clockid = RAND_BOOL();
 	attr->context_switch = RAND_BOOL();
+	attr->write_backward = RAND_BOOL();
 
 	/* wakeup events not relevant */
 
@@ -1036,6 +1037,10 @@ static void create_mostly_valid_counting_event(struct perf_event_attr *attr,
 	/* sample_regs_user not relevant if not sampling */
 
 	/* sample_stack_user not relevant if not sampling */
+
+	/* aux_watermark not relevant if not sampling */
+
+	/* sample_max_stack not relevant if not sampling */
 }
 
 static void create_mostly_valid_sampling_event(struct perf_event_attr *attr,
@@ -1085,6 +1090,7 @@ static void create_mostly_valid_sampling_event(struct perf_event_attr *attr,
 	attr->comm_exec = RAND_BOOL();
 	attr->use_clockid = RAND_BOOL();
 	attr->context_switch = RAND_BOOL();
+	attr->write_backward = RAND_BOOL();
 
 	attr->wakeup_events = rand32();
 
@@ -1134,6 +1140,8 @@ static void create_mostly_valid_sampling_event(struct perf_event_attr *attr,
 		}
 	}
 
+	attr->aux_watermark = rand32();
+	attr->sample_max_stack = rand32();
 }
 
 

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2016-08-18  0:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-18  0:23 [patch] perf_event_open: update to features in 4.8-rc2 Vince Weaver

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).