]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blame - tools/perf/util/evlist.h
perf sort: Check return value of strdup()
[mirror_ubuntu-hirsute-kernel.git] / tools / perf / util / evlist.h
CommitLineData
361c99a6
ACM
1#ifndef __PERF_EVLIST_H
2#define __PERF_EVLIST_H 1
3
4#include <linux/list.h>
50d08e47 5#include <stdio.h>
70db7533 6#include "../perf.h"
04391deb 7#include "event.h"
0c21f736 8#include "evsel.h"
50d08e47 9#include "util.h"
35b9d88e 10#include <unistd.h>
361c99a6 11
5c581041 12struct pollfd;
f8a95309
ACM
13struct thread_map;
14struct cpu_map;
0f82ebc4 15struct perf_record_opts;
5c581041 16
70db7533
ACM
17#define PERF_EVLIST__HLIST_BITS 8
18#define PERF_EVLIST__HLIST_SIZE (1 << PERF_EVLIST__HLIST_BITS)
19
361c99a6
ACM
20struct perf_evlist {
21 struct list_head entries;
70db7533 22 struct hlist_head heads[PERF_EVLIST__HLIST_SIZE];
361c99a6 23 int nr_entries;
97f63e4a 24 int nr_groups;
5c581041 25 int nr_fds;
aece948f 26 int nr_mmaps;
70db7533 27 int mmap_len;
35b9d88e
ACM
28 struct {
29 int cork_fd;
30 pid_t pid;
31 } workload;
7bb41152 32 bool overwrite;
8115d60c 33 union perf_event event_copy;
70db7533 34 struct perf_mmap *mmap;
5c581041 35 struct pollfd *pollfd;
7e2ed097
ACM
36 struct thread_map *threads;
37 struct cpu_map *cpus;
81cce8de 38 struct perf_evsel *selected;
361c99a6
ACM
39};
40
ee29be62
ACM
41struct perf_evsel_str_handler {
42 const char *name;
43 void *handler;
44};
45
7e2ed097
ACM
46struct perf_evlist *perf_evlist__new(struct cpu_map *cpus,
47 struct thread_map *threads);
48void perf_evlist__init(struct perf_evlist *evlist, struct cpu_map *cpus,
49 struct thread_map *threads);
ef1d1af2 50void perf_evlist__exit(struct perf_evlist *evlist);
361c99a6
ACM
51void perf_evlist__delete(struct perf_evlist *evlist);
52
53void perf_evlist__add(struct perf_evlist *evlist, struct perf_evsel *entry);
54int perf_evlist__add_default(struct perf_evlist *evlist);
79695e1b
ACM
55int __perf_evlist__add_default_attrs(struct perf_evlist *evlist,
56 struct perf_event_attr *attrs, size_t nr_attrs);
e60fc847 57
79695e1b
ACM
58#define perf_evlist__add_default_attrs(evlist, array) \
59 __perf_evlist__add_default_attrs(evlist, array, ARRAY_SIZE(array))
361c99a6 60
39876e7d
ACM
61int perf_evlist__add_newtp(struct perf_evlist *evlist,
62 const char *sys, const char *name, void *handler);
63
745cefc5
ACM
64int perf_evlist__set_filter(struct perf_evlist *evlist, const char *filter);
65
da378962
ACM
66struct perf_evsel *
67perf_evlist__find_tracepoint_by_id(struct perf_evlist *evlist, int id);
68
a91e5431
ACM
69void perf_evlist__id_add(struct perf_evlist *evlist, struct perf_evsel *evsel,
70 int cpu, int thread, u64 id);
3d3b5e95 71
70082dd9 72void perf_evlist__add_pollfd(struct perf_evlist *evlist, int fd);
5c581041 73
70db7533
ACM
74struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id);
75
aece948f 76union perf_event *perf_evlist__mmap_read(struct perf_evlist *self, int idx);
04391deb 77
6a4bb04c 78int perf_evlist__open(struct perf_evlist *evlist);
727ab04e 79
f77a9518
ACM
80void perf_evlist__config(struct perf_evlist *evlist,
81 struct perf_record_opts *opts);
0f82ebc4 82
35b9d88e
ACM
83int perf_evlist__prepare_workload(struct perf_evlist *evlist,
84 struct perf_record_opts *opts,
85 const char *argv[]);
86int perf_evlist__start_workload(struct perf_evlist *evlist);
87
50a682ce
ACM
88int perf_evlist__mmap(struct perf_evlist *evlist, unsigned int pages,
89 bool overwrite);
7e2ed097
ACM
90void perf_evlist__munmap(struct perf_evlist *evlist);
91
4152ab37 92void perf_evlist__disable(struct perf_evlist *evlist);
764e16a3 93void perf_evlist__enable(struct perf_evlist *evlist);
4152ab37 94
81cce8de
ACM
95void perf_evlist__set_selected(struct perf_evlist *evlist,
96 struct perf_evsel *evsel);
97
7e2ed097
ACM
98static inline void perf_evlist__set_maps(struct perf_evlist *evlist,
99 struct cpu_map *cpus,
100 struct thread_map *threads)
101{
102 evlist->cpus = cpus;
103 evlist->threads = threads;
104}
105
b809ac10
NK
106int perf_evlist__create_maps(struct perf_evlist *evlist,
107 struct perf_target *target);
7e2ed097 108void perf_evlist__delete_maps(struct perf_evlist *evlist);
1491a632 109int perf_evlist__apply_filters(struct perf_evlist *evlist);
f8a95309 110
63dab225
ACM
111void __perf_evlist__set_leader(struct list_head *list);
112void perf_evlist__set_leader(struct perf_evlist *evlist);
113
0c21f736
ACM
114u64 perf_evlist__sample_type(struct perf_evlist *evlist);
115bool perf_evlist__sample_id_all(struct perf_evlist *evlist);
116u16 perf_evlist__id_hdr_size(struct perf_evlist *evlist);
74429964 117
a3f698fe 118int perf_evlist__parse_sample(struct perf_evlist *evlist, union perf_event *event,
0807d2d8 119 struct perf_sample *sample);
cb0b29e0 120
0c21f736
ACM
121bool perf_evlist__valid_sample_type(struct perf_evlist *evlist);
122bool perf_evlist__valid_sample_id_all(struct perf_evlist *evlist);
0529bc1f
JO
123
124void perf_evlist__splice_list_tail(struct perf_evlist *evlist,
125 struct list_head *list,
126 int nr_entries);
0c21f736
ACM
127
128static inline struct perf_evsel *perf_evlist__first(struct perf_evlist *evlist)
129{
130 return list_entry(evlist->entries.next, struct perf_evsel, node);
131}
132
133static inline struct perf_evsel *perf_evlist__last(struct perf_evlist *evlist)
134{
135 return list_entry(evlist->entries.prev, struct perf_evsel, node);
136}
78f067b3
ACM
137
138size_t perf_evlist__fprintf(struct perf_evlist *evlist, FILE *fp);
361c99a6 139#endif /* __PERF_EVLIST_H */