1 #ifndef __PERF_EVLIST_H 2 #define __PERF_EVLIST_H 1 3 4 #include <linux/list.h> 5 #include "../perf.h" 6 #include "event.h" 7 8 struct pollfd; 9 struct thread_map; 10 struct cpu_map; 11 12 #define PERF_EVLIST__HLIST_BITS 8 13 #define PERF_EVLIST__HLIST_SIZE (1 << PERF_EVLIST__HLIST_BITS) 14 15 struct perf_evlist { 16 struct list_head entries; 17 struct hlist_head heads[PERF_EVLIST__HLIST_SIZE]; 18 int nr_entries; 19 int nr_fds; 20 int mmap_len; 21 bool overwrite; 22 union perf_event event_copy; 23 struct perf_mmap *mmap; 24 struct pollfd *pollfd; 25 struct thread_map *threads; 26 struct cpu_map *cpus; 27 }; 28 29 struct perf_evsel; 30 31 struct perf_evlist *perf_evlist__new(struct cpu_map *cpus, 32 struct thread_map *threads); 33 void perf_evlist__init(struct perf_evlist *evlist, struct cpu_map *cpus, 34 struct thread_map *threads); 35 void perf_evlist__exit(struct perf_evlist *evlist); 36 void perf_evlist__delete(struct perf_evlist *evlist); 37 38 void perf_evlist__add(struct perf_evlist *evlist, struct perf_evsel *entry); 39 int perf_evlist__add_default(struct perf_evlist *evlist); 40 41 void perf_evlist__id_add(struct perf_evlist *evlist, struct perf_evsel *evsel, 42 int cpu, int thread, u64 id); 43 44 int perf_evlist__alloc_pollfd(struct perf_evlist *evlist); 45 void perf_evlist__add_pollfd(struct perf_evlist *evlist, int fd); 46 47 struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id); 48 49 union perf_event *perf_evlist__read_on_cpu(struct perf_evlist *self, int cpu); 50 51 int perf_evlist__alloc_mmap(struct perf_evlist *evlist); 52 int perf_evlist__mmap(struct perf_evlist *evlist, int pages, bool overwrite); 53 void perf_evlist__munmap(struct perf_evlist *evlist); 54 55 static inline void perf_evlist__set_maps(struct perf_evlist *evlist, 56 struct cpu_map *cpus, 57 struct thread_map *threads) 58 { 59 evlist->cpus = cpus; 60 evlist->threads = threads; 61 } 62 63 int perf_evlist__create_maps(struct perf_evlist *evlist, pid_t target_pid, 64 pid_t target_tid, const char *cpu_list); 65 void perf_evlist__delete_maps(struct perf_evlist *evlist); 66 int perf_evlist__set_filters(struct perf_evlist *evlist); 67 68 #endif /* __PERF_EVLIST_H */ 69