mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-08-09 06:14:34 +02:00
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 <irogers@google.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Albert Ou <aou@eecs.berkeley.edu> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Alexandre Ghiti <alex@ghiti.fr> Cc: Andi Kleen <ak@linux.intel.com> Cc: Andrew Jones <ajones@ventanamicro.com> Cc: Anup Patel <anup@brainfault.org> Cc: Athira Rajeev <atrajeev@linux.ibm.com> Cc: Blake Jones <blakejones@google.com> Cc: Chen Ni <nichen@iscas.ac.cn> Cc: Chun-Tse Shao <ctshao@google.com> Cc: Dapeng Mi <dapeng1.mi@linux.intel.com> Cc: Derek Foreman <derek.foreman@collabora.com> Cc: Dmitriy Vyukov <dvyukov@google.com> Cc: Dr. David Alan Gilbert <linux@treblig.org> Cc: Howard Chu <howardchu95@gmail.com> Cc: Hrishikesh Suresh <hrishikesh123s@gmail.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@linaro.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Krzysztof Łopatowski <krzysztof.m.lopatowski@gmail.com> Cc: Leo Yan <leo.yan@arm.com> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Paul Walmsley <pjw@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Quan Zhou <zhouquan@iscas.ac.cn> Cc: Ravi Bangoria <ravi.bangoria@amd.com> Cc: Swapnil Sapkal <swapnil.sapkal@amd.com> Cc: Thomas Falcon <thomas.falcon@intel.com> Cc: Tianyou Li <tianyou.li@intel.com> Cc: Yujie Liu <yujie.liu@intel.com> Cc: tanze <tanze@kylinos.cn> [ Fixed up conflict with "perf inject: Fix itrace branch stack synthesis" series ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
117 lines
2.7 KiB
C
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 */
|