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