diff options
Diffstat (limited to 'tools/perf/util/evlist.h')
-rw-r--r-- | tools/perf/util/evlist.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h new file mode 100644 index 000000000000..b2b862374f37 --- /dev/null +++ b/tools/perf/util/evlist.h | |||
@@ -0,0 +1,74 @@ | |||
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 nr_mmaps; | ||
21 | int mmap_len; | ||
22 | bool overwrite; | ||
23 | union perf_event event_copy; | ||
24 | struct perf_mmap *mmap; | ||
25 | struct pollfd *pollfd; | ||
26 | struct thread_map *threads; | ||
27 | struct cpu_map *cpus; | ||
28 | }; | ||
29 | |||
30 | struct perf_evsel; | ||
31 | |||
32 | struct perf_evlist *perf_evlist__new(struct cpu_map *cpus, | ||
33 | struct thread_map *threads); | ||
34 | void perf_evlist__init(struct perf_evlist *evlist, struct cpu_map *cpus, | ||
35 | struct thread_map *threads); | ||
36 | void perf_evlist__exit(struct perf_evlist *evlist); | ||
37 | void perf_evlist__delete(struct perf_evlist *evlist); | ||
38 | |||
39 | void perf_evlist__add(struct perf_evlist *evlist, struct perf_evsel *entry); | ||
40 | int perf_evlist__add_default(struct perf_evlist *evlist); | ||
41 | |||
42 | void perf_evlist__id_add(struct perf_evlist *evlist, struct perf_evsel *evsel, | ||
43 | int cpu, int thread, u64 id); | ||
44 | |||
45 | int perf_evlist__alloc_pollfd(struct perf_evlist *evlist); | ||
46 | void perf_evlist__add_pollfd(struct perf_evlist *evlist, int fd); | ||
47 | |||
48 | struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id); | ||
49 | |||
50 | union perf_event *perf_evlist__mmap_read(struct perf_evlist *self, int idx); | ||
51 | |||
52 | int perf_evlist__alloc_mmap(struct perf_evlist *evlist); | ||
53 | int perf_evlist__mmap(struct perf_evlist *evlist, int pages, bool overwrite); | ||
54 | void perf_evlist__munmap(struct perf_evlist *evlist); | ||
55 | |||
56 | static inline void perf_evlist__set_maps(struct perf_evlist *evlist, | ||
57 | struct cpu_map *cpus, | ||
58 | struct thread_map *threads) | ||
59 | { | ||
60 | evlist->cpus = cpus; | ||
61 | evlist->threads = threads; | ||
62 | } | ||
63 | |||
64 | int perf_evlist__create_maps(struct perf_evlist *evlist, pid_t target_pid, | ||
65 | pid_t target_tid, const char *cpu_list); | ||
66 | void perf_evlist__delete_maps(struct perf_evlist *evlist); | ||
67 | int perf_evlist__set_filters(struct perf_evlist *evlist); | ||
68 | |||
69 | u64 perf_evlist__sample_type(const struct perf_evlist *evlist); | ||
70 | bool perf_evlist__sample_id_all(const const struct perf_evlist *evlist); | ||
71 | |||
72 | bool perf_evlist__valid_sample_type(const struct perf_evlist *evlist); | ||
73 | bool perf_evlist__valid_sample_id_all(const struct perf_evlist *evlist); | ||
74 | #endif /* __PERF_EVLIST_H */ | ||