summaryrefslogtreecommitdiff
path: root/tools/perf/util/symbol_conf.h
blob: 37d35f42dcc1b7358ef34bf2443961549f643571 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/* 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)

enum symbol__weight_mode {
	WEIGHT_NONE = 0,
	WEIGHT_WEIGHT,
	WEIGHT_INSNLAT,
	WEIGHT_WEIGHT3,
};

#define for_each_weight(_weight) \
	for ((_weight) = WEIGHT_WEIGHT; (_weight) <= WEIGHT_WEIGHT3; (_weight)++)

struct symbol_conf {
	bool		hybrid_merge;
	/* Was hybrid_merge given on the command line rather than in a config file? */
	bool		hybrid_merge_set;
	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,
			annotate_weight;
	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