1 | // SPDX-License-Identifier: GPL-2.0 |
2 | #ifndef __PERF_EVSEL_CONFIG_H |
3 | #define __PERF_EVSEL_CONFIG_H 1 |
4 | |
5 | #include <linux/types.h> |
6 | #include <stdbool.h> |
7 | |
8 | /* |
9 | * The 'struct evsel_config_term' is used to pass event |
10 | * specific configuration data to evsel__config routine. |
11 | * It is allocated within event parsing and attached to |
12 | * evsel::config_terms list head. |
13 | */ |
14 | enum evsel_term_type { |
15 | EVSEL__CONFIG_TERM_PERIOD, |
16 | EVSEL__CONFIG_TERM_FREQ, |
17 | EVSEL__CONFIG_TERM_TIME, |
18 | EVSEL__CONFIG_TERM_CALLGRAPH, |
19 | EVSEL__CONFIG_TERM_STACK_USER, |
20 | EVSEL__CONFIG_TERM_INHERIT, |
21 | EVSEL__CONFIG_TERM_MAX_STACK, |
22 | EVSEL__CONFIG_TERM_MAX_EVENTS, |
23 | EVSEL__CONFIG_TERM_OVERWRITE, |
24 | EVSEL__CONFIG_TERM_DRV_CFG, |
25 | EVSEL__CONFIG_TERM_BRANCH, |
26 | EVSEL__CONFIG_TERM_PERCORE, |
27 | EVSEL__CONFIG_TERM_AUX_OUTPUT, |
28 | EVSEL__CONFIG_TERM_AUX_SAMPLE_SIZE, |
29 | EVSEL__CONFIG_TERM_CFG_CHG, |
30 | }; |
31 | |
32 | struct evsel_config_term { |
33 | struct list_head list; |
34 | enum evsel_term_type type; |
35 | bool free_str; |
36 | union { |
37 | u64 period; |
38 | u64 freq; |
39 | bool time; |
40 | u64 stack_user; |
41 | int max_stack; |
42 | bool inherit; |
43 | bool overwrite; |
44 | unsigned long max_events; |
45 | bool percore; |
46 | bool aux_output; |
47 | u32 aux_sample_size; |
48 | u64 cfg_chg; |
49 | char *str; |
50 | } val; |
51 | bool weak; |
52 | }; |
53 | |
54 | struct evsel; |
55 | |
56 | struct evsel_config_term *__evsel__get_config_term(struct evsel *evsel, enum evsel_term_type type); |
57 | |
58 | #define evsel__get_config_term(evsel, type) \ |
59 | __evsel__get_config_term(evsel, EVSEL__CONFIG_TERM_ ## type) |
60 | |
61 | #endif // __PERF_EVSEL_CONFIG_H |
62 | |