|  | // SPDX-License-Identifier: GPL-2.0 | 
|  | #ifndef __PERF_EVSEL_CONFIG_H | 
|  | #define __PERF_EVSEL_CONFIG_H 1 | 
|  |  | 
|  | #include <linux/types.h> | 
|  | #include <stdbool.h> | 
|  |  | 
|  | /* | 
|  | * The 'struct evsel_config_term' is used to pass event | 
|  | * specific configuration data to evsel__config routine. | 
|  | * It is allocated within event parsing and attached to | 
|  | * evsel::config_terms list head. | 
|  | */ | 
|  | enum evsel_term_type { | 
|  | EVSEL__CONFIG_TERM_PERIOD, | 
|  | EVSEL__CONFIG_TERM_FREQ, | 
|  | EVSEL__CONFIG_TERM_TIME, | 
|  | EVSEL__CONFIG_TERM_CALLGRAPH, | 
|  | EVSEL__CONFIG_TERM_STACK_USER, | 
|  | EVSEL__CONFIG_TERM_INHERIT, | 
|  | EVSEL__CONFIG_TERM_MAX_STACK, | 
|  | EVSEL__CONFIG_TERM_MAX_EVENTS, | 
|  | EVSEL__CONFIG_TERM_OVERWRITE, | 
|  | EVSEL__CONFIG_TERM_DRV_CFG, | 
|  | EVSEL__CONFIG_TERM_BRANCH, | 
|  | EVSEL__CONFIG_TERM_PERCORE, | 
|  | EVSEL__CONFIG_TERM_AUX_OUTPUT, | 
|  | EVSEL__CONFIG_TERM_AUX_SAMPLE_SIZE, | 
|  | EVSEL__CONFIG_TERM_CFG_CHG, | 
|  | }; | 
|  |  | 
|  | struct evsel_config_term { | 
|  | struct list_head      list; | 
|  | enum evsel_term_type  type; | 
|  | bool		      free_str; | 
|  | union { | 
|  | u64	      period; | 
|  | u64	      freq; | 
|  | bool	      time; | 
|  | u64	      stack_user; | 
|  | int	      max_stack; | 
|  | bool	      inherit; | 
|  | bool	      overwrite; | 
|  | unsigned long max_events; | 
|  | bool	      percore; | 
|  | bool	      aux_output; | 
|  | u32	      aux_sample_size; | 
|  | u64	      cfg_chg; | 
|  | char	      *str; | 
|  | } val; | 
|  | bool weak; | 
|  | }; | 
|  |  | 
|  | struct evsel; | 
|  |  | 
|  | struct evsel_config_term *__evsel__get_config_term(struct evsel *evsel, enum evsel_term_type type); | 
|  |  | 
|  | #define evsel__get_config_term(evsel, type) \ | 
|  | __evsel__get_config_term(evsel, EVSEL__CONFIG_TERM_ ## type) | 
|  |  | 
|  | #endif // __PERF_EVSEL_CONFIG_H |