diff options
Diffstat (limited to 'tools/perf/util/evlist.h')
| -rw-r--r-- | tools/perf/util/evlist.h | 34 | 
1 files changed, 31 insertions, 3 deletions
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h index 56003f779e6..2dd07bd60b4 100644 --- a/tools/perf/util/evlist.h +++ b/tools/perf/util/evlist.h @@ -17,10 +17,18 @@ struct perf_record_opts;  #define PERF_EVLIST__HLIST_BITS 8  #define PERF_EVLIST__HLIST_SIZE (1 << PERF_EVLIST__HLIST_BITS) +struct perf_mmap { +	void		 *base; +	int		 mask; +	unsigned int	 prev; +	union perf_event event_copy; +}; +  struct perf_evlist {  	struct list_head entries;  	struct hlist_head heads[PERF_EVLIST__HLIST_SIZE];  	int		 nr_entries; +	int		 nr_groups;  	int		 nr_fds;  	int		 nr_mmaps;  	int		 mmap_len; @@ -29,7 +37,6 @@ struct perf_evlist {  		pid_t	pid;  	} workload;  	bool		 overwrite; -	union perf_event event_copy;  	struct perf_mmap *mmap;  	struct pollfd	 *pollfd;  	struct thread_map *threads; @@ -76,8 +83,8 @@ union perf_event *perf_evlist__mmap_read(struct perf_evlist *self, int idx);  int perf_evlist__open(struct perf_evlist *evlist); -void perf_evlist__config_attrs(struct perf_evlist *evlist, -			       struct perf_record_opts *opts); +void perf_evlist__config(struct perf_evlist *evlist, +			 struct perf_record_opts *opts);  int perf_evlist__prepare_workload(struct perf_evlist *evlist,  				  struct perf_record_opts *opts, @@ -135,4 +142,25 @@ static inline struct perf_evsel *perf_evlist__last(struct perf_evlist *evlist)  }  size_t perf_evlist__fprintf(struct perf_evlist *evlist, FILE *fp); + +static inline unsigned int perf_mmap__read_head(struct perf_mmap *mm) +{ +	struct perf_event_mmap_page *pc = mm->base; +	int head = pc->data_head; +	rmb(); +	return head; +} + +static inline void perf_mmap__write_tail(struct perf_mmap *md, +					 unsigned long tail) +{ +	struct perf_event_mmap_page *pc = md->base; + +	/* +	 * ensure all reads are done before we write the tail out. +	 */ +	/* mb(); */ +	pc->data_tail = tail; +} +  #endif /* __PERF_EVLIST_H */  |