xref: /openbmc/linux/tools/perf/util/tool.h (revision 3812d298)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
245694aa7SArnaldo Carvalho de Melo #ifndef __PERF_TOOL_H
345694aa7SArnaldo Carvalho de Melo #define __PERF_TOOL_H
445694aa7SArnaldo Carvalho de Melo 
5ee29be62SArnaldo Carvalho de Melo #include <stdbool.h>
6ee29be62SArnaldo Carvalho de Melo 
7a16ac023SAdrian Hunter #include <linux/types.h>
8a16ac023SAdrian Hunter 
945694aa7SArnaldo Carvalho de Melo struct perf_session;
10ee29be62SArnaldo Carvalho de Melo union perf_event;
1163503dbaSJiri Olsa struct evlist;
1232dcd021SJiri Olsa struct evsel;
13ee29be62SArnaldo Carvalho de Melo struct perf_sample;
1445694aa7SArnaldo Carvalho de Melo struct perf_tool;
1545694aa7SArnaldo Carvalho de Melo struct machine;
16d704ebdaSArnaldo Carvalho de Melo struct ordered_events;
1745694aa7SArnaldo Carvalho de Melo 
1845694aa7SArnaldo Carvalho de Melo typedef int (*event_sample)(struct perf_tool *tool, union perf_event *event,
1945694aa7SArnaldo Carvalho de Melo 			    struct perf_sample *sample,
2032dcd021SJiri Olsa 			    struct evsel *evsel, struct machine *machine);
2145694aa7SArnaldo Carvalho de Melo 
2245694aa7SArnaldo Carvalho de Melo typedef int (*event_op)(struct perf_tool *tool, union perf_event *event,
2345694aa7SArnaldo Carvalho de Melo 			struct perf_sample *sample, struct machine *machine);
2445694aa7SArnaldo Carvalho de Melo 
2547c3d109SAdrian Hunter typedef int (*event_attr_op)(struct perf_tool *tool,
2647c3d109SAdrian Hunter 			     union perf_event *event,
2763503dbaSJiri Olsa 			     struct evlist **pevlist);
2845694aa7SArnaldo Carvalho de Melo 
2989f1688aSJiri Olsa typedef int (*event_op2)(struct perf_session *session, union perf_event *event);
307336555aSJiri Olsa typedef s64 (*event_op3)(struct perf_session *session, union perf_event *event);
312292083fSAlexey Bayduraev typedef int (*event_op4)(struct perf_session *session, union perf_event *event, u64 data,
322292083fSAlexey Bayduraev 			 const char *str);
3345694aa7SArnaldo Carvalho de Melo 
34d704ebdaSArnaldo Carvalho de Melo typedef int (*event_oe)(struct perf_tool *tool, union perf_event *event,
35d704ebdaSArnaldo Carvalho de Melo 			struct ordered_events *oe);
36d704ebdaSArnaldo Carvalho de Melo 
37114f709eSDavid Carrillo-Cisneros enum show_feature_header {
38114f709eSDavid Carrillo-Cisneros 	SHOW_FEAT_NO_HEADER = 0,
39114f709eSDavid Carrillo-Cisneros 	SHOW_FEAT_HEADER,
40114f709eSDavid Carrillo-Cisneros 	SHOW_FEAT_HEADER_FULL_INFO,
41114f709eSDavid Carrillo-Cisneros };
42114f709eSDavid Carrillo-Cisneros 
4345694aa7SArnaldo Carvalho de Melo struct perf_tool {
4445694aa7SArnaldo Carvalho de Melo 	event_sample	sample,
4545694aa7SArnaldo Carvalho de Melo 			read;
4645694aa7SArnaldo Carvalho de Melo 	event_op	mmap,
475c5e854bSStephane Eranian 			mmap2,
4845694aa7SArnaldo Carvalho de Melo 			comm,
49f3b3614aSHari Bathini 			namespaces,
50ba78c1c5SNamhyung Kim 			cgroup,
5145694aa7SArnaldo Carvalho de Melo 			fork,
5245694aa7SArnaldo Carvalho de Melo 			exit,
5345694aa7SArnaldo Carvalho de Melo 			lost,
54c4937a91SKan Liang 			lost_samples,
554a96f7a0SAdrian Hunter 			aux,
560ad21f68SAdrian Hunter 			itrace_start,
5761750473SAdrian Hunter 			aux_output_hw_id,
580286039fSAdrian Hunter 			context_switch,
5945694aa7SArnaldo Carvalho de Melo 			throttle,
609aa0bfa3SSong Liu 			unthrottle,
6145178a92SSong Liu 			ksymbol,
62246eba8eSAdrian Hunter 			bpf,
63246eba8eSAdrian Hunter 			text_poke;
649aa0bfa3SSong Liu 
6545694aa7SArnaldo Carvalho de Melo 	event_attr_op	attr;
66ffe77725SJiri Olsa 	event_attr_op	event_update;
6747c3d109SAdrian Hunter 	event_op2	tracing_data;
68d704ebdaSArnaldo Carvalho de Melo 	event_oe	finished_round;
69d704ebdaSArnaldo Carvalho de Melo 	event_op2	build_id,
70a16ac023SAdrian Hunter 			id_index,
71e9bf54d2SAdrian Hunter 			auxtrace_info,
725f3339d2SJiri Olsa 			auxtrace_error,
7346bc29b9SAdrian Hunter 			time_conv,
746640b6c2SJiri Olsa 			thread_map,
75374fb9e3SJiri Olsa 			cpu_map,
76d80518c9SJiri Olsa 			stat_config,
772d8f0f18SJiri Olsa 			stat,
78e9def1b2SDavid Carrillo-Cisneros 			stat_round,
79*3812d298SAdrian Hunter 			feature,
80*3812d298SAdrian Hunter 			finished_init;
8161a7773cSAlexey Budankov 	event_op4	compressed;
82a16ac023SAdrian Hunter 	event_op3	auxtrace;
830a8cb85cSJiri Olsa 	bool		ordered_events;
8445694aa7SArnaldo Carvalho de Melo 	bool		ordering_requires_timestamps;
85f3b3614aSHari Bathini 	bool		namespace_events;
86ab64069fSNamhyung Kim 	bool		cgroup_events;
87075ca1ebSJiri Olsa 	bool		no_warn;
88114f709eSDavid Carrillo-Cisneros 	enum show_feature_header show_feat_hdr;
8945694aa7SArnaldo Carvalho de Melo };
9045694aa7SArnaldo Carvalho de Melo 
9145694aa7SArnaldo Carvalho de Melo #endif /* __PERF_TOOL_H */
92