/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PERF_SYMBOL_CONF
#define __PERF_SYMBOL_CONF 1

#include <stdbool.h>
#include <linux/bitmap.h>
#include "perf.h"

struct strlist;
struct intlist;

enum unwind_style {
	UNWIND_STYLE_UNKNOWN = 0,
	UNWIND_STYLE_LIBDW,
	UNWIND_STYLE_LIBUNWIND,
};

#define MAX_UNWIND_STYLE (UNWIND_STYLE_LIBUNWIND + 1)


enum a2l_style {
	A2L_STYLE_UNKNOWN = 0,
	A2L_STYLE_LIBDW,
	A2L_STYLE_LLVM,
	A2L_STYLE_LIBBFD,
	A2L_STYLE_CMD,
};
#define MAX_A2L_STYLE (A2L_STYLE_CMD + 1)

struct symbol_conf {
	bool		nanosecs;
	unsigned short	priv_size;
	bool		try_vmlinux_path,
			init_annotation,
			force,
			ignore_vmlinux,
			ignore_vmlinux_buildid,
			show_kernel_path,
			use_modules,
			allow_aliases,
			show_nr_samples,
			show_total_period,
			use_callchain,
			cumulate_callchain,
			show_branchflag_count,
			exclude_other,
			show_cpu_utilization,
			initialized,
			kptr_restrict,
			event_group,
			demangle,
			demangle_kernel,
			filter_relative,
			show_hist_headers,
			has_filter,
			show_ref_callgraph,
			hide_unresolved,
			raw_trace,
			report_hierarchy,
			report_block,
			report_individual_block,
			inline_name,
			addr2line_disable_warn,
			no_buildid_mmap2,
			guest_code,
			lazy_load_kernel_maps,
			keep_exited_threads,
			annotate_data_member,
			annotate_data_sample,
			skip_empty,
			enable_latency,
			prefer_latency;
	const char	*vmlinux_name,
			*kallsyms_name,
			*source_prefix,
			*field_sep,
			*graph_function;
	const char	*default_guest_vmlinux_name,
			*default_guest_kallsyms,
			*default_guest_modules;
	const char	*guestmount;
	const char	*dso_list_str,
			*comm_list_str,
			*pid_list_str,
			*tid_list_str,
			*sym_list_str,
			*parallelism_list_str,
			*col_width_list_str,
			*bt_stop_list_str;
	const char		*addr2line_path;
	enum a2l_style	addr2line_style[MAX_A2L_STYLE];
	int             addr2line_timeout_ms;
	enum unwind_style unwind_style[MAX_UNWIND_STYLE];
	unsigned long	time_quantum;
       struct strlist	*dso_list,
			*comm_list,
			*sym_list,
			*dso_from_list,
			*dso_to_list,
			*sym_from_list,
			*sym_to_list,
			*bt_stop_list;
	struct intlist	*pid_list,
			*tid_list,
			*addr_list;
	const char	*symfs;
	bool		symfs_layout_flat;
	int		res_sample;
	int		pad_output_len_dso;
	int		group_sort_idx;
	int		addr_range;
	DECLARE_BITMAP(parallelism_filter, MAX_NR_CPUS + 1);
};

extern struct symbol_conf symbol_conf;

#endif // __PERF_SYMBOL_CONF
