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