| /* 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 evsel; |
| 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 evsel *evsel, 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)(struct perf_session *session, union perf_event *event); |
| typedef s64 (*event_op3)(struct perf_session *session, union perf_event *event); |
| typedef int (*event_op4)(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; |
| 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; |
| 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; |
| 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 evsel *evsel, |
| struct machine *machine); |
| |
| #endif /* __PERF_TOOL_H */ |