195be9d19SArnaldo Carvalho de Melo // SPDX-License-Identifier: GPL-2.0 295be9d19SArnaldo Carvalho de Melo #ifndef __PERF_EVSEL_CONFIG_H 395be9d19SArnaldo Carvalho de Melo #define __PERF_EVSEL_CONFIG_H 1 495be9d19SArnaldo Carvalho de Melo 595be9d19SArnaldo Carvalho de Melo #include <linux/types.h> 695be9d19SArnaldo Carvalho de Melo #include <stdbool.h> 795be9d19SArnaldo Carvalho de Melo 895be9d19SArnaldo Carvalho de Melo /* 935ac0cadSArnaldo Carvalho de Melo * The 'struct evsel_config_term' is used to pass event 106ec17b4eSArnaldo Carvalho de Melo * specific configuration data to evsel__config routine. 1195be9d19SArnaldo Carvalho de Melo * It is allocated within event parsing and attached to 1235ac0cadSArnaldo Carvalho de Melo * evsel::config_terms list head. 1395be9d19SArnaldo Carvalho de Melo */ 1495be9d19SArnaldo Carvalho de Melo enum evsel_term_type { 1535ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_PERIOD, 1635ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_FREQ, 1735ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_TIME, 1835ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_CALLGRAPH, 1935ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_STACK_USER, 2035ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_INHERIT, 2135ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_MAX_STACK, 2235ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_MAX_EVENTS, 2335ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_OVERWRITE, 2435ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_DRV_CFG, 2535ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_BRANCH, 2635ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_PERCORE, 2735ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_AUX_OUTPUT, 2835ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_AUX_SAMPLE_SIZE, 2935ac0cadSArnaldo Carvalho de Melo EVSEL__CONFIG_TERM_CFG_CHG, 3095be9d19SArnaldo Carvalho de Melo }; 3195be9d19SArnaldo Carvalho de Melo 3235ac0cadSArnaldo Carvalho de Melo struct evsel_config_term { 3395be9d19SArnaldo Carvalho de Melo struct list_head list; 3495be9d19SArnaldo Carvalho de Melo enum evsel_term_type type; 353220fb8dSLeo Yan bool free_str; 3695be9d19SArnaldo Carvalho de Melo union { 3795be9d19SArnaldo Carvalho de Melo u64 period; 3895be9d19SArnaldo Carvalho de Melo u64 freq; 3995be9d19SArnaldo Carvalho de Melo bool time; 4095be9d19SArnaldo Carvalho de Melo u64 stack_user; 4195be9d19SArnaldo Carvalho de Melo int max_stack; 4295be9d19SArnaldo Carvalho de Melo bool inherit; 4395be9d19SArnaldo Carvalho de Melo bool overwrite; 4495be9d19SArnaldo Carvalho de Melo unsigned long max_events; 4595be9d19SArnaldo Carvalho de Melo bool percore; 4695be9d19SArnaldo Carvalho de Melo bool aux_output; 47eb7a52d4SAdrian Hunter u32 aux_sample_size; 48a1ac7de6SAdrian Hunter u64 cfg_chg; 49e884602bSLeo Yan char *str; 5095be9d19SArnaldo Carvalho de Melo } val; 5195be9d19SArnaldo Carvalho de Melo bool weak; 5295be9d19SArnaldo Carvalho de Melo }; 53eb7a52d4SAdrian Hunter 54eb7a52d4SAdrian Hunter struct evsel; 55eb7a52d4SAdrian Hunter 5635ac0cadSArnaldo Carvalho de Melo struct evsel_config_term *__evsel__get_config_term(struct evsel *evsel, enum evsel_term_type type); 57eb7a52d4SAdrian Hunter 5835ac0cadSArnaldo Carvalho de Melo #define evsel__get_config_term(evsel, type) \ 5935ac0cadSArnaldo Carvalho de Melo __evsel__get_config_term(evsel, EVSEL__CONFIG_TERM_ ## type) 60eb7a52d4SAdrian Hunter 6195be9d19SArnaldo Carvalho de Melo #endif // __PERF_EVSEL_CONFIG_H 62