xref: /openbmc/linux/tools/perf/util/tool.h (revision b2441318)
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;
11ee29be62SArnaldo Carvalho de Melo struct perf_evlist;
1245694aa7SArnaldo Carvalho de Melo struct perf_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,
2045694aa7SArnaldo Carvalho de Melo 			    struct perf_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,
2745694aa7SArnaldo Carvalho de Melo 			     struct perf_evlist **pevlist);
2845694aa7SArnaldo Carvalho de Melo 
2945694aa7SArnaldo Carvalho de Melo typedef int (*event_op2)(struct perf_tool *tool, union perf_event *event,
3045694aa7SArnaldo Carvalho de Melo 			 struct perf_session *session);
3145694aa7SArnaldo Carvalho de Melo 
32d704ebdaSArnaldo Carvalho de Melo typedef int (*event_oe)(struct perf_tool *tool, union perf_event *event,
33d704ebdaSArnaldo Carvalho de Melo 			struct ordered_events *oe);
34d704ebdaSArnaldo Carvalho de Melo 
35a16ac023SAdrian Hunter typedef s64 (*event_op3)(struct perf_tool *tool, union perf_event *event,
36a16ac023SAdrian Hunter 			 struct perf_session *session);
37a16ac023SAdrian Hunter 
38114f709eSDavid Carrillo-Cisneros enum show_feature_header {
39114f709eSDavid Carrillo-Cisneros 	SHOW_FEAT_NO_HEADER = 0,
40114f709eSDavid Carrillo-Cisneros 	SHOW_FEAT_HEADER,
41114f709eSDavid Carrillo-Cisneros 	SHOW_FEAT_HEADER_FULL_INFO,
42114f709eSDavid Carrillo-Cisneros };
43114f709eSDavid Carrillo-Cisneros 
4445694aa7SArnaldo Carvalho de Melo struct perf_tool {
4545694aa7SArnaldo Carvalho de Melo 	event_sample	sample,
4645694aa7SArnaldo Carvalho de Melo 			read;
4745694aa7SArnaldo Carvalho de Melo 	event_op	mmap,
485c5e854bSStephane Eranian 			mmap2,
4945694aa7SArnaldo Carvalho de Melo 			comm,
50f3b3614aSHari Bathini 			namespaces,
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,
570286039fSAdrian Hunter 			context_switch,
5845694aa7SArnaldo Carvalho de Melo 			throttle,
5945694aa7SArnaldo Carvalho de Melo 			unthrottle;
6045694aa7SArnaldo Carvalho de Melo 	event_attr_op	attr;
61ffe77725SJiri Olsa 	event_attr_op	event_update;
6247c3d109SAdrian Hunter 	event_op2	tracing_data;
63d704ebdaSArnaldo Carvalho de Melo 	event_oe	finished_round;
64d704ebdaSArnaldo Carvalho de Melo 	event_op2	build_id,
65a16ac023SAdrian Hunter 			id_index,
66e9bf54d2SAdrian Hunter 			auxtrace_info,
675f3339d2SJiri Olsa 			auxtrace_error,
6846bc29b9SAdrian Hunter 			time_conv,
696640b6c2SJiri Olsa 			thread_map,
70374fb9e3SJiri Olsa 			cpu_map,
71d80518c9SJiri Olsa 			stat_config,
722d8f0f18SJiri Olsa 			stat,
73e9def1b2SDavid Carrillo-Cisneros 			stat_round,
74e9def1b2SDavid Carrillo-Cisneros 			feature;
75a16ac023SAdrian Hunter 	event_op3	auxtrace;
760a8cb85cSJiri Olsa 	bool		ordered_events;
7745694aa7SArnaldo Carvalho de Melo 	bool		ordering_requires_timestamps;
78f3b3614aSHari Bathini 	bool		namespace_events;
79114f709eSDavid Carrillo-Cisneros 	enum show_feature_header show_feat_hdr;
8045694aa7SArnaldo Carvalho de Melo };
8145694aa7SArnaldo Carvalho de Melo 
8245694aa7SArnaldo Carvalho de Melo #endif /* __PERF_TOOL_H */
83