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; 9f8a95309SArnaldo Carvalho de Melo struct thread_map; 10f8a95309SArnaldo Carvalho de Melo struct cpu_map; 115c581041SArnaldo Carvalho de Melo 1270db7533SArnaldo Carvalho de Melo #define PERF_EVLIST__HLIST_BITS 8 1370db7533SArnaldo Carvalho de Melo #define PERF_EVLIST__HLIST_SIZE (1 << PERF_EVLIST__HLIST_BITS) 1470db7533SArnaldo Carvalho de Melo 15361c99a6SArnaldo Carvalho de Melo struct perf_evlist { 16361c99a6SArnaldo Carvalho de Melo struct list_head entries; 1770db7533SArnaldo Carvalho de Melo struct hlist_head heads[PERF_EVLIST__HLIST_SIZE]; 18361c99a6SArnaldo Carvalho de Melo int nr_entries; 195c581041SArnaldo Carvalho de Melo int nr_fds; 2070db7533SArnaldo Carvalho de Melo int mmap_len; 217bb41152SArnaldo Carvalho de Melo bool overwrite; 228115d60cSArnaldo Carvalho de Melo union perf_event event_copy; 2370db7533SArnaldo Carvalho de Melo struct perf_mmap *mmap; 245c581041SArnaldo Carvalho de Melo struct pollfd *pollfd; 257e2ed097SArnaldo Carvalho de Melo struct thread_map *threads; 267e2ed097SArnaldo Carvalho de Melo struct cpu_map *cpus; 27361c99a6SArnaldo Carvalho de Melo }; 28361c99a6SArnaldo Carvalho de Melo 29361c99a6SArnaldo Carvalho de Melo struct perf_evsel; 30361c99a6SArnaldo Carvalho de Melo 317e2ed097SArnaldo Carvalho de Melo struct perf_evlist *perf_evlist__new(struct cpu_map *cpus, 327e2ed097SArnaldo Carvalho de Melo struct thread_map *threads); 337e2ed097SArnaldo Carvalho de Melo void perf_evlist__init(struct perf_evlist *evlist, struct cpu_map *cpus, 347e2ed097SArnaldo Carvalho de Melo struct thread_map *threads); 35ef1d1af2SArnaldo Carvalho de Melo void perf_evlist__exit(struct perf_evlist *evlist); 36361c99a6SArnaldo Carvalho de Melo void perf_evlist__delete(struct perf_evlist *evlist); 37361c99a6SArnaldo Carvalho de Melo 38361c99a6SArnaldo Carvalho de Melo void perf_evlist__add(struct perf_evlist *evlist, struct perf_evsel *entry); 39361c99a6SArnaldo Carvalho de Melo int perf_evlist__add_default(struct perf_evlist *evlist); 40361c99a6SArnaldo Carvalho de Melo 413d3b5e95SArnaldo Carvalho de Melo void perf_evlist__id_hash(struct perf_evlist *evlist, struct perf_evsel *evsel, 423d3b5e95SArnaldo Carvalho de Melo int cpu, int thread, u64 id); 433d3b5e95SArnaldo Carvalho de Melo 447e2ed097SArnaldo Carvalho de Melo int perf_evlist__alloc_pollfd(struct perf_evlist *evlist); 4570082dd9SArnaldo Carvalho de Melo void perf_evlist__add_pollfd(struct perf_evlist *evlist, int fd); 465c581041SArnaldo Carvalho de Melo 4770db7533SArnaldo Carvalho de Melo struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id); 4870db7533SArnaldo Carvalho de Melo 498115d60cSArnaldo Carvalho de Melo union perf_event *perf_evlist__read_on_cpu(struct perf_evlist *self, int cpu); 5004391debSArnaldo Carvalho de Melo 517e2ed097SArnaldo Carvalho de Melo int perf_evlist__alloc_mmap(struct perf_evlist *evlist); 527e2ed097SArnaldo Carvalho de Melo int perf_evlist__mmap(struct perf_evlist *evlist, int pages, bool overwrite); 537e2ed097SArnaldo Carvalho de Melo void perf_evlist__munmap(struct perf_evlist *evlist); 547e2ed097SArnaldo Carvalho de Melo 557e2ed097SArnaldo Carvalho de Melo static inline void perf_evlist__set_maps(struct perf_evlist *evlist, 567e2ed097SArnaldo Carvalho de Melo struct cpu_map *cpus, 577e2ed097SArnaldo Carvalho de Melo struct thread_map *threads) 587e2ed097SArnaldo Carvalho de Melo { 597e2ed097SArnaldo Carvalho de Melo evlist->cpus = cpus; 607e2ed097SArnaldo Carvalho de Melo evlist->threads = threads; 617e2ed097SArnaldo Carvalho de Melo } 627e2ed097SArnaldo Carvalho de Melo 637e2ed097SArnaldo Carvalho de Melo int perf_evlist__create_maps(struct perf_evlist *evlist, pid_t target_pid, 647e2ed097SArnaldo Carvalho de Melo pid_t target_tid, const char *cpu_list); 657e2ed097SArnaldo Carvalho de Melo void perf_evlist__delete_maps(struct perf_evlist *evlist); 660a102479SFrederic Weisbecker int perf_evlist__set_filters(struct perf_evlist *evlist); 67f8a95309SArnaldo Carvalho de Melo 68361c99a6SArnaldo Carvalho de Melo #endif /* __PERF_EVLIST_H */ 69