| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #ifndef __PERF_TOOL_H | |
| #define __PERF_TOOL_H | |
| #include <stdbool.h> | |
| #include <linux/types.h> | |
| struct perf_session; | |
| union perf_event; | |
| struct evlist; | |
| struct perf_sample; | |
| struct perf_tool; | |
| struct machine; | |
| struct ordered_events; | |
| typedef int (*event_sample)(const struct perf_tool *tool, union perf_event *event, | |
| struct perf_sample *sample, | |
| struct machine *machine); | |
| typedef int (*event_op)(const struct perf_tool *tool, union perf_event *event, | |
| struct perf_sample *sample, struct machine *machine); | |
| typedef int (*event_attr_op)(const struct perf_tool *tool, | |
| union perf_event *event, | |
| struct evlist **pevlist); | |
| typedef int (*event_op2)(const struct perf_tool *tool, struct perf_session *session, | |
| union perf_event *event); | |
| typedef s64 (*event_op3)(const struct perf_tool *tool, struct perf_session *session, | |
| union perf_event *event); | |
| typedef int (*event_op4)(const struct perf_tool *tool, struct perf_session *session, | |
| union perf_event *event, u64 data, const char *str); | |
| typedef int (*event_oe)(const struct perf_tool *tool, union perf_event *event, | |
| struct ordered_events *oe); | |
| enum show_feature_header { | |
| SHOW_FEAT_NO_HEADER = 0, | |
| SHOW_FEAT_HEADER, | |
| SHOW_FEAT_HEADER_FULL_INFO, | |
| }; | |
| struct perf_tool { | |
| event_sample sample, | |
| read, | |
| callchain_deferred; | |
| event_op mmap, | |
| mmap2, | |
| comm, | |
| namespaces, | |
| cgroup, | |
| fork, | |
| exit, | |
| lost, | |
| lost_samples, | |
| aux, | |
| itrace_start, | |
| aux_output_hw_id, | |
| context_switch, | |
| throttle, | |
| unthrottle, | |
| ksymbol, | |
| bpf, | |
| text_poke; | |
| event_attr_op attr; | |
| event_attr_op event_update; | |
| event_op2 tracing_data; | |
| event_oe finished_round; | |
| event_op2 build_id, | |
| id_index, | |
| auxtrace_info, | |
| auxtrace_error, | |
| time_conv, | |
| thread_map, | |
| cpu_map, | |
| stat_config, | |
| stat, | |
| stat_round, | |
| feature, | |
| finished_init, | |
| bpf_metadata, | |
| schedstat_cpu, | |
| schedstat_domain; | |
| event_op4 compressed; | |
| event_op3 auxtrace; | |
| bool ordered_events; | |
| bool ordering_requires_timestamps; | |
| bool namespace_events; | |
| bool cgroup_events; | |
| bool no_warn; | |
| bool dont_split_sample_group; | |
| bool merge_deferred_callchains; | |
| enum show_feature_header show_feat_hdr; | |
| }; | |
| void perf_tool__init(struct perf_tool *tool, bool ordered_events); | |
| bool perf_tool__compressed_is_stub(const struct perf_tool *tool); | |
| int process_event_sample_stub(const struct perf_tool *tool, | |
| union perf_event *event, | |
| struct perf_sample *sample, | |
| struct machine *machine); | |
| struct delegate_tool { | |
| /** @tool: The actual tool that calls the delegate. */ | |
| struct perf_tool tool; | |
| /** @delegate: The tool that is delegated to. */ | |
| struct perf_tool *delegate; | |
| }; | |
| void delegate_tool__init(struct delegate_tool *tool, struct perf_tool *delegate); | |
| #endif /* __PERF_TOOL_H */ |