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 evlist;
12  struct 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 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 evlist **pevlist);
28  
29  typedef int (*event_op2)(struct perf_session *session, union perf_event *event);
30  typedef s64 (*event_op3)(struct perf_session *session, union perf_event *event);
31  typedef int (*event_op4)(struct perf_session *session, union perf_event *event, u64 data,
32  			 const char *str);
33  
34  typedef int (*event_oe)(struct perf_tool *tool, union perf_event *event,
35  			struct ordered_events *oe);
36  
37  enum show_feature_header {
38  	SHOW_FEAT_NO_HEADER = 0,
39  	SHOW_FEAT_HEADER,
40  	SHOW_FEAT_HEADER_FULL_INFO,
41  };
42  
43  struct perf_tool {
44  	event_sample	sample,
45  			read;
46  	event_op	mmap,
47  			mmap2,
48  			comm,
49  			namespaces,
50  			cgroup,
51  			fork,
52  			exit,
53  			lost,
54  			lost_samples,
55  			aux,
56  			itrace_start,
57  			aux_output_hw_id,
58  			context_switch,
59  			throttle,
60  			unthrottle,
61  			ksymbol,
62  			bpf,
63  			text_poke;
64  
65  	event_attr_op	attr;
66  	event_attr_op	event_update;
67  	event_op2	tracing_data;
68  	event_oe	finished_round;
69  	event_op2	build_id,
70  			id_index,
71  			auxtrace_info,
72  			auxtrace_error,
73  			time_conv,
74  			thread_map,
75  			cpu_map,
76  			stat_config,
77  			stat,
78  			stat_round,
79  			feature,
80  			finished_init;
81  	event_op4	compressed;
82  	event_op3	auxtrace;
83  	bool		ordered_events;
84  	bool		ordering_requires_timestamps;
85  	bool		namespace_events;
86  	bool		cgroup_events;
87  	bool		no_warn;
88  	enum show_feature_header show_feat_hdr;
89  };
90  
91  #endif /* __PERF_TOOL_H */
92