Files
erofs-linux/tools/perf/util/tool.h
T
Ian Rogers fc444d05b4 perf tool: Remove evsel from tool APIs that pass the sample
As struct perf_sample now directly contains its own resolved evsel pointer,
passing the evsel separately is redundant and clutters the interface.

Remove the redundant evsel parameter from tool-specific handlers and
structures, ensuring the tool always directly accesses the evsel bound to the
sample. This simplifies the API signatures and eliminates the risk of passing
an inconsistent evsel.

Signed-off-by: Ian Rogers <[email protected]>
Acked-by: Namhyung Kim <[email protected]>
Cc: Adrian Hunter <[email protected]>
Cc: Albert Ou <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: Alexandre Ghiti <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Andrew Jones <[email protected]>
Cc: Anup Patel <[email protected]>
Cc: Athira Rajeev <[email protected]>
Cc: Blake Jones <[email protected]>
Cc: Chen Ni <[email protected]>
Cc: Chun-Tse Shao <[email protected]>
Cc: Dapeng Mi <[email protected]>
Cc: Derek Foreman <[email protected]>
Cc: Dmitriy Vyukov <[email protected]>
Cc: Dr. David Alan Gilbert <[email protected]>
Cc: Howard Chu <[email protected]>
Cc: Hrishikesh Suresh <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: James Clark <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Krzysztof Łopatowski <[email protected]>
Cc: Leo Yan <[email protected]>
Cc: Palmer Dabbelt <[email protected]>
Cc: Paul Walmsley <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Quan Zhou <[email protected]>
Cc: Ravi Bangoria <[email protected]>
Cc: Swapnil Sapkal <[email protected]>
Cc: Thomas Falcon <[email protected]>
Cc: Tianyou Li <[email protected]>
Cc: Yujie Liu <[email protected]>
Cc: tanze <[email protected]>
[ Fixed up conflict with "perf inject: Fix itrace branch stack synthesis" series ]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
2026-05-20 16:34:23 -03:00

117 lines
2.7 KiB
C

/* 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 */