xref: /openbmc/linux/tools/perf/util/tool.h (revision 374fb9e3)
145694aa7SArnaldo Carvalho de Melo #ifndef __PERF_TOOL_H
245694aa7SArnaldo Carvalho de Melo #define __PERF_TOOL_H
345694aa7SArnaldo Carvalho de Melo 
4ee29be62SArnaldo Carvalho de Melo #include <stdbool.h>
5ee29be62SArnaldo Carvalho de Melo 
6a16ac023SAdrian Hunter #include <linux/types.h>
7a16ac023SAdrian Hunter 
845694aa7SArnaldo Carvalho de Melo struct perf_session;
9ee29be62SArnaldo Carvalho de Melo union perf_event;
10ee29be62SArnaldo Carvalho de Melo struct perf_evlist;
1145694aa7SArnaldo Carvalho de Melo struct perf_evsel;
12ee29be62SArnaldo Carvalho de Melo struct perf_sample;
1345694aa7SArnaldo Carvalho de Melo struct perf_tool;
1445694aa7SArnaldo Carvalho de Melo struct machine;
15d704ebdaSArnaldo Carvalho de Melo struct ordered_events;
1645694aa7SArnaldo Carvalho de Melo 
1745694aa7SArnaldo Carvalho de Melo typedef int (*event_sample)(struct perf_tool *tool, union perf_event *event,
1845694aa7SArnaldo Carvalho de Melo 			    struct perf_sample *sample,
1945694aa7SArnaldo Carvalho de Melo 			    struct perf_evsel *evsel, struct machine *machine);
2045694aa7SArnaldo Carvalho de Melo 
2145694aa7SArnaldo Carvalho de Melo typedef int (*event_op)(struct perf_tool *tool, union perf_event *event,
2245694aa7SArnaldo Carvalho de Melo 			struct perf_sample *sample, struct machine *machine);
2345694aa7SArnaldo Carvalho de Melo 
2447c3d109SAdrian Hunter typedef int (*event_attr_op)(struct perf_tool *tool,
2547c3d109SAdrian Hunter 			     union perf_event *event,
2645694aa7SArnaldo Carvalho de Melo 			     struct perf_evlist **pevlist);
2745694aa7SArnaldo Carvalho de Melo 
2845694aa7SArnaldo Carvalho de Melo typedef int (*event_op2)(struct perf_tool *tool, union perf_event *event,
2945694aa7SArnaldo Carvalho de Melo 			 struct perf_session *session);
3045694aa7SArnaldo Carvalho de Melo 
31d704ebdaSArnaldo Carvalho de Melo typedef int (*event_oe)(struct perf_tool *tool, union perf_event *event,
32d704ebdaSArnaldo Carvalho de Melo 			struct ordered_events *oe);
33d704ebdaSArnaldo Carvalho de Melo 
34a16ac023SAdrian Hunter typedef s64 (*event_op3)(struct perf_tool *tool, union perf_event *event,
35a16ac023SAdrian Hunter 			 struct perf_session *session);
36a16ac023SAdrian Hunter 
3745694aa7SArnaldo Carvalho de Melo struct perf_tool {
3845694aa7SArnaldo Carvalho de Melo 	event_sample	sample,
3945694aa7SArnaldo Carvalho de Melo 			read;
4045694aa7SArnaldo Carvalho de Melo 	event_op	mmap,
415c5e854bSStephane Eranian 			mmap2,
4245694aa7SArnaldo Carvalho de Melo 			comm,
4345694aa7SArnaldo Carvalho de Melo 			fork,
4445694aa7SArnaldo Carvalho de Melo 			exit,
4545694aa7SArnaldo Carvalho de Melo 			lost,
46c4937a91SKan Liang 			lost_samples,
474a96f7a0SAdrian Hunter 			aux,
480ad21f68SAdrian Hunter 			itrace_start,
490286039fSAdrian Hunter 			context_switch,
5045694aa7SArnaldo Carvalho de Melo 			throttle,
5145694aa7SArnaldo Carvalho de Melo 			unthrottle;
5245694aa7SArnaldo Carvalho de Melo 	event_attr_op	attr;
5347c3d109SAdrian Hunter 	event_op2	tracing_data;
54d704ebdaSArnaldo Carvalho de Melo 	event_oe	finished_round;
55d704ebdaSArnaldo Carvalho de Melo 	event_op2	build_id,
56a16ac023SAdrian Hunter 			id_index,
57e9bf54d2SAdrian Hunter 			auxtrace_info,
585f3339d2SJiri Olsa 			auxtrace_error,
596640b6c2SJiri Olsa 			thread_map,
60374fb9e3SJiri Olsa 			cpu_map,
61374fb9e3SJiri Olsa 			stat_config;
62a16ac023SAdrian Hunter 	event_op3	auxtrace;
630a8cb85cSJiri Olsa 	bool		ordered_events;
6445694aa7SArnaldo Carvalho de Melo 	bool		ordering_requires_timestamps;
6545694aa7SArnaldo Carvalho de Melo };
6645694aa7SArnaldo Carvalho de Melo 
6745694aa7SArnaldo Carvalho de Melo #endif /* __PERF_TOOL_H */
68