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