xref: /openbmc/linux/tools/perf/util/evlist.h (revision 04391deb)
1361c99a6SArnaldo Carvalho de Melo #ifndef __PERF_EVLIST_H
2361c99a6SArnaldo Carvalho de Melo #define __PERF_EVLIST_H 1
3361c99a6SArnaldo Carvalho de Melo 
4361c99a6SArnaldo Carvalho de Melo #include <linux/list.h>
570db7533SArnaldo Carvalho de Melo #include "../perf.h"
604391debSArnaldo Carvalho de Melo #include "event.h"
7361c99a6SArnaldo Carvalho de Melo 
85c581041SArnaldo Carvalho de Melo struct pollfd;
95c581041SArnaldo Carvalho de Melo 
1070db7533SArnaldo Carvalho de Melo #define PERF_EVLIST__HLIST_BITS 8
1170db7533SArnaldo Carvalho de Melo #define PERF_EVLIST__HLIST_SIZE (1 << PERF_EVLIST__HLIST_BITS)
1270db7533SArnaldo Carvalho de Melo 
13361c99a6SArnaldo Carvalho de Melo struct perf_evlist {
14361c99a6SArnaldo Carvalho de Melo 	struct list_head entries;
1570db7533SArnaldo Carvalho de Melo 	struct hlist_head heads[PERF_EVLIST__HLIST_SIZE];
16361c99a6SArnaldo Carvalho de Melo 	int		 nr_entries;
175c581041SArnaldo Carvalho de Melo 	int		 nr_fds;
1870db7533SArnaldo Carvalho de Melo 	int		 mmap_len;
1904391debSArnaldo Carvalho de Melo 	event_t		 event_copy;
2070db7533SArnaldo Carvalho de Melo 	struct perf_mmap *mmap;
215c581041SArnaldo Carvalho de Melo 	struct pollfd	 *pollfd;
22361c99a6SArnaldo Carvalho de Melo };
23361c99a6SArnaldo Carvalho de Melo 
24361c99a6SArnaldo Carvalho de Melo struct perf_evsel;
25361c99a6SArnaldo Carvalho de Melo 
26361c99a6SArnaldo Carvalho de Melo struct perf_evlist *perf_evlist__new(void);
27361c99a6SArnaldo Carvalho de Melo void perf_evlist__delete(struct perf_evlist *evlist);
28361c99a6SArnaldo Carvalho de Melo 
29361c99a6SArnaldo Carvalho de Melo void perf_evlist__add(struct perf_evlist *evlist, struct perf_evsel *entry);
30361c99a6SArnaldo Carvalho de Melo int perf_evlist__add_default(struct perf_evlist *evlist);
31361c99a6SArnaldo Carvalho de Melo 
325c581041SArnaldo Carvalho de Melo int perf_evlist__alloc_pollfd(struct perf_evlist *evlist, int ncpus, int nthreads);
3370082dd9SArnaldo Carvalho de Melo void perf_evlist__add_pollfd(struct perf_evlist *evlist, int fd);
345c581041SArnaldo Carvalho de Melo 
3570db7533SArnaldo Carvalho de Melo struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id);
3670db7533SArnaldo Carvalho de Melo 
3704391debSArnaldo Carvalho de Melo event_t *perf_evlist__read_on_cpu(struct perf_evlist *self, int cpu);
3804391debSArnaldo Carvalho de Melo 
39361c99a6SArnaldo Carvalho de Melo #endif /* __PERF_EVLIST_H */
40