// 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
