1e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#ifndef __PERF_TOOL_H
2e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#define __PERF_TOOL_H
3e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
4e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include <stdbool.h>
5e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
6e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct perf_session;
7e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengunion perf_event;
8e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct perf_evlist;
9e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct perf_evsel;
10e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct perf_sample;
11e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct perf_tool;
12e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct machine;
13e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
14e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengtypedef int (*event_sample)(struct perf_tool *tool, union perf_event *event,
15e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			    struct perf_sample *sample,
16e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			    struct perf_evsel *evsel, struct machine *machine);
17e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
18e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengtypedef int (*event_op)(struct perf_tool *tool, union perf_event *event,
19e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			struct perf_sample *sample, struct machine *machine);
20e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
21e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengtypedef int (*event_attr_op)(struct perf_tool *tool,
22e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			     union perf_event *event,
23e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			     struct perf_evlist **pevlist);
24e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
25e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengtypedef int (*event_op2)(struct perf_tool *tool, union perf_event *event,
26e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			 struct perf_session *session);
27e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
28e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstruct perf_tool {
29e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	event_sample	sample,
30e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			read;
31e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	event_op	mmap,
32e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			mmap2,
33e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			comm,
34e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			fork,
35e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			exit,
36e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			lost,
37e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			throttle,
38e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			unthrottle;
39e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	event_attr_op	attr;
40e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	event_op2	tracing_data;
41e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	event_op2	finished_round,
42e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			build_id;
43e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	bool		ordered_samples;
44e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	bool		ordering_requires_timestamps;
45e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng};
46e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
47e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#endif /* __PERF_TOOL_H */
48