1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __PERF_TOOL_H 3 #define __PERF_TOOL_H 4 5 #include <stdbool.h> 6 7 #include <linux/types.h> 8 9 struct perf_session; 10 union perf_event; 11 struct perf_evlist; 12 struct perf_evsel; 13 struct perf_sample; 14 struct perf_tool; 15 struct machine; 16 struct ordered_events; 17 18 typedef int (*event_sample)(struct perf_tool *tool, union perf_event *event, 19 struct perf_sample *sample, 20 struct perf_evsel *evsel, struct machine *machine); 21 22 typedef int (*event_op)(struct perf_tool *tool, union perf_event *event, 23 struct perf_sample *sample, struct machine *machine); 24 25 typedef int (*event_attr_op)(struct perf_tool *tool, 26 union perf_event *event, 27 struct perf_evlist **pevlist); 28 29 typedef int (*event_op2)(struct perf_tool *tool, union perf_event *event, 30 struct perf_session *session); 31 32 typedef int (*event_oe)(struct perf_tool *tool, union perf_event *event, 33 struct ordered_events *oe); 34 35 typedef s64 (*event_op3)(struct perf_tool *tool, union perf_event *event, 36 struct perf_session *session); 37 38 enum show_feature_header { 39 SHOW_FEAT_NO_HEADER = 0, 40 SHOW_FEAT_HEADER, 41 SHOW_FEAT_HEADER_FULL_INFO, 42 }; 43 44 struct perf_tool { 45 event_sample sample, 46 read; 47 event_op mmap, 48 mmap2, 49 comm, 50 namespaces, 51 fork, 52 exit, 53 lost, 54 lost_samples, 55 aux, 56 itrace_start, 57 context_switch, 58 throttle, 59 unthrottle; 60 event_attr_op attr; 61 event_attr_op event_update; 62 event_op2 tracing_data; 63 event_oe finished_round; 64 event_op2 build_id, 65 id_index, 66 auxtrace_info, 67 auxtrace_error, 68 time_conv, 69 thread_map, 70 cpu_map, 71 stat_config, 72 stat, 73 stat_round, 74 feature; 75 event_op3 auxtrace; 76 bool ordered_events; 77 bool ordering_requires_timestamps; 78 bool namespace_events; 79 enum show_feature_header show_feat_hdr; 80 }; 81 82 #endif /* __PERF_TOOL_H */ 83