xref: /OK3568_Linux_fs/kernel/tools/perf/util/tool.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef __PERF_TOOL_H
3*4882a593Smuzhiyun #define __PERF_TOOL_H
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #include <stdbool.h>
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #include <linux/types.h>
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun struct perf_session;
10*4882a593Smuzhiyun union perf_event;
11*4882a593Smuzhiyun struct evlist;
12*4882a593Smuzhiyun struct evsel;
13*4882a593Smuzhiyun struct perf_sample;
14*4882a593Smuzhiyun struct perf_tool;
15*4882a593Smuzhiyun struct machine;
16*4882a593Smuzhiyun struct ordered_events;
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun typedef int (*event_sample)(struct perf_tool *tool, union perf_event *event,
19*4882a593Smuzhiyun 			    struct perf_sample *sample,
20*4882a593Smuzhiyun 			    struct evsel *evsel, struct machine *machine);
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun typedef int (*event_op)(struct perf_tool *tool, union perf_event *event,
23*4882a593Smuzhiyun 			struct perf_sample *sample, struct machine *machine);
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun typedef int (*event_attr_op)(struct perf_tool *tool,
26*4882a593Smuzhiyun 			     union perf_event *event,
27*4882a593Smuzhiyun 			     struct evlist **pevlist);
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun typedef int (*event_op2)(struct perf_session *session, union perf_event *event);
30*4882a593Smuzhiyun typedef s64 (*event_op3)(struct perf_session *session, union perf_event *event);
31*4882a593Smuzhiyun typedef int (*event_op4)(struct perf_session *session, union perf_event *event, u64 data);
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun typedef int (*event_oe)(struct perf_tool *tool, union perf_event *event,
34*4882a593Smuzhiyun 			struct ordered_events *oe);
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun enum show_feature_header {
37*4882a593Smuzhiyun 	SHOW_FEAT_NO_HEADER = 0,
38*4882a593Smuzhiyun 	SHOW_FEAT_HEADER,
39*4882a593Smuzhiyun 	SHOW_FEAT_HEADER_FULL_INFO,
40*4882a593Smuzhiyun };
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun struct perf_tool {
43*4882a593Smuzhiyun 	event_sample	sample,
44*4882a593Smuzhiyun 			read;
45*4882a593Smuzhiyun 	event_op	mmap,
46*4882a593Smuzhiyun 			mmap2,
47*4882a593Smuzhiyun 			comm,
48*4882a593Smuzhiyun 			namespaces,
49*4882a593Smuzhiyun 			cgroup,
50*4882a593Smuzhiyun 			fork,
51*4882a593Smuzhiyun 			exit,
52*4882a593Smuzhiyun 			lost,
53*4882a593Smuzhiyun 			lost_samples,
54*4882a593Smuzhiyun 			aux,
55*4882a593Smuzhiyun 			itrace_start,
56*4882a593Smuzhiyun 			context_switch,
57*4882a593Smuzhiyun 			throttle,
58*4882a593Smuzhiyun 			unthrottle,
59*4882a593Smuzhiyun 			ksymbol,
60*4882a593Smuzhiyun 			bpf,
61*4882a593Smuzhiyun 			text_poke;
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun 	event_attr_op	attr;
64*4882a593Smuzhiyun 	event_attr_op	event_update;
65*4882a593Smuzhiyun 	event_op2	tracing_data;
66*4882a593Smuzhiyun 	event_oe	finished_round;
67*4882a593Smuzhiyun 	event_op2	build_id,
68*4882a593Smuzhiyun 			id_index,
69*4882a593Smuzhiyun 			auxtrace_info,
70*4882a593Smuzhiyun 			auxtrace_error,
71*4882a593Smuzhiyun 			time_conv,
72*4882a593Smuzhiyun 			thread_map,
73*4882a593Smuzhiyun 			cpu_map,
74*4882a593Smuzhiyun 			stat_config,
75*4882a593Smuzhiyun 			stat,
76*4882a593Smuzhiyun 			stat_round,
77*4882a593Smuzhiyun 			feature;
78*4882a593Smuzhiyun 	event_op4	compressed;
79*4882a593Smuzhiyun 	event_op3	auxtrace;
80*4882a593Smuzhiyun 	bool		ordered_events;
81*4882a593Smuzhiyun 	bool		ordering_requires_timestamps;
82*4882a593Smuzhiyun 	bool		namespace_events;
83*4882a593Smuzhiyun 	bool		cgroup_events;
84*4882a593Smuzhiyun 	bool		no_warn;
85*4882a593Smuzhiyun 	enum show_feature_header show_feat_hdr;
86*4882a593Smuzhiyun };
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun #endif /* __PERF_TOOL_H */
89