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_ACTION, 29 EVSEL__CONFIG_TERM_AUX_SAMPLE_SIZE, 30 EVSEL__CONFIG_TERM_CFG_CHG, 31 }; 32 33 struct evsel_config_term { 34 struct list_head list; 35 enum evsel_term_type type; 36 bool free_str; 37 union { 38 u64 period; 39 u64 freq; 40 bool time; 41 u64 stack_user; 42 int max_stack; 43 bool inherit; 44 bool overwrite; 45 unsigned long max_events; 46 bool percore; 47 bool aux_output; 48 u32 aux_sample_size; 49 u64 cfg_chg; 50 char *str; 51 } val; 52 bool weak; 53 }; 54 55 struct evsel; 56 57 struct evsel_config_term *__evsel__get_config_term(struct evsel *evsel, enum evsel_term_type type); 58 59 #define evsel__get_config_term(evsel, type) \ 60 __evsel__get_config_term(evsel, EVSEL__CONFIG_TERM_ ## type) 61 62 #endif // __PERF_EVSEL_CONFIG_H 63