xref: /openbmc/linux/tools/perf/util/tool.h (revision e9bf54d2)
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,
4645694aa7SArnaldo Carvalho de Melo 			throttle,
4745694aa7SArnaldo Carvalho de Melo 			unthrottle;
4845694aa7SArnaldo Carvalho de Melo 	event_attr_op	attr;
4947c3d109SAdrian Hunter 	event_op2	tracing_data;
50d704ebdaSArnaldo Carvalho de Melo 	event_oe	finished_round;
51d704ebdaSArnaldo Carvalho de Melo 	event_op2	build_id,
52a16ac023SAdrian Hunter 			id_index,
53e9bf54d2SAdrian Hunter 			auxtrace_info,
54e9bf54d2SAdrian Hunter 			auxtrace_error;
55a16ac023SAdrian Hunter 	event_op3	auxtrace;
560a8cb85cSJiri Olsa 	bool		ordered_events;
5745694aa7SArnaldo Carvalho de Melo 	bool		ordering_requires_timestamps;
5845694aa7SArnaldo Carvalho de Melo };
5945694aa7SArnaldo Carvalho de Melo 
6045694aa7SArnaldo Carvalho de Melo #endif /* __PERF_TOOL_H */
61