diff options
Diffstat (limited to 'tools/perf/util/evsel_config.h')
-rw-r--r-- | tools/perf/util/evsel_config.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tools/perf/util/evsel_config.h b/tools/perf/util/evsel_config.h new file mode 100644 index 000000000..aee6f808b --- /dev/null +++ b/tools/perf/util/evsel_config.h @@ -0,0 +1,61 @@ +// 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 |