Commit a37c0436 authored by Ian Rogers's avatar Ian Rogers Committed by Arnaldo Carvalho de Melo

perf inject: Use perf_tool__init()

Use perf_tool__init() so that more uses of 'struct perf_tool' can be const
and not relying on perf_tool__fill_defaults().
Signed-off-by: default avatarIan Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Cc: Huacai Chen <chenhuacai@kernel.org>
Cc: Ilkka Koskinen <ilkka@os.amperecomputing.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: John Garry <john.g.garry@oracle.com>
Cc: Jonathan Cameron <jonathan.cameron@huawei.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Leo Yan <leo.yan@linux.dev>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mike Leach <mike.leach@linaro.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Nick Terrell <terrelln@fb.com>
Cc: Oliver Upton <oliver.upton@linux.dev>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <song@kernel.org>
Cc: Sun Haiyong <sunhaiyong@loongson.cn>
Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Yanteng Si <siyanteng@loongson.cn>
Cc: Yicong Yang <yangyicong@hisilicon.com>
Cc: linux-arm-kernel@lists.infradead.org
Link: https://lore.kernel.org/r/20240812204720.631678-15-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 2fa28ccb
......@@ -2165,47 +2165,6 @@ static int __cmd_inject(struct perf_inject *inject)
int cmd_inject(int argc, const char **argv)
{
struct perf_inject inject = {
.tool = {
.sample = perf_event__repipe_sample,
.read = perf_event__repipe_sample,
.mmap = perf_event__repipe,
.mmap2 = perf_event__repipe,
.comm = perf_event__repipe,
.namespaces = perf_event__repipe,
.cgroup = perf_event__repipe,
.fork = perf_event__repipe,
.exit = perf_event__repipe,
.lost = perf_event__repipe,
.lost_samples = perf_event__repipe,
.aux = perf_event__repipe,
.itrace_start = perf_event__repipe,
.aux_output_hw_id = perf_event__repipe,
.context_switch = perf_event__repipe,
.throttle = perf_event__repipe,
.unthrottle = perf_event__repipe,
.ksymbol = perf_event__repipe,
.bpf = perf_event__repipe,
.text_poke = perf_event__repipe,
.attr = perf_event__repipe_attr,
.event_update = perf_event__repipe_event_update,
.tracing_data = perf_event__repipe_op2_synth,
.finished_round = perf_event__repipe_oe_synth,
.build_id = perf_event__repipe_op2_synth,
.id_index = perf_event__repipe_op2_synth,
.auxtrace_info = perf_event__repipe_op2_synth,
.auxtrace_error = perf_event__repipe_op2_synth,
.time_conv = perf_event__repipe_op2_synth,
.thread_map = perf_event__repipe_op2_synth,
.cpu_map = perf_event__repipe_op2_synth,
.stat_config = perf_event__repipe_op2_synth,
.stat = perf_event__repipe_op2_synth,
.stat_round = perf_event__repipe_op2_synth,
.feature = perf_event__repipe_op2_synth,
.finished_init = perf_event__repipe_op2_synth,
.compressed = perf_event__repipe_op4_synth,
.auxtrace = perf_event__repipe_auxtrace,
.dont_split_sample_group = true,
},
.input_name = "-",
.samples = LIST_HEAD_INIT(inject.samples),
.output = {
......@@ -2270,6 +2229,7 @@ int cmd_inject(int argc, const char **argv)
"perf inject [<options>]",
NULL
};
bool ordered_events;
if (!inject.itrace_synth_opts.set) {
/* Disable eager loading of kernel symbols that adds overhead to perf inject. */
......@@ -2334,7 +2294,48 @@ int cmd_inject(int argc, const char **argv)
if (strcmp(inject.input_name, "-"))
repipe = false;
}
ordered_events = inject.jit_mode || inject.sched_stat ||
(inject.build_ids && !inject.build_id_all);
perf_tool__init(&inject.tool, ordered_events);
inject.tool.sample = perf_event__repipe_sample;
inject.tool.read = perf_event__repipe_sample;
inject.tool.mmap = perf_event__repipe;
inject.tool.mmap2 = perf_event__repipe;
inject.tool.comm = perf_event__repipe;
inject.tool.namespaces = perf_event__repipe;
inject.tool.cgroup = perf_event__repipe;
inject.tool.fork = perf_event__repipe;
inject.tool.exit = perf_event__repipe;
inject.tool.lost = perf_event__repipe;
inject.tool.lost_samples = perf_event__repipe;
inject.tool.aux = perf_event__repipe;
inject.tool.itrace_start = perf_event__repipe;
inject.tool.aux_output_hw_id = perf_event__repipe;
inject.tool.context_switch = perf_event__repipe;
inject.tool.throttle = perf_event__repipe;
inject.tool.unthrottle = perf_event__repipe;
inject.tool.ksymbol = perf_event__repipe;
inject.tool.bpf = perf_event__repipe;
inject.tool.text_poke = perf_event__repipe;
inject.tool.attr = perf_event__repipe_attr;
inject.tool.event_update = perf_event__repipe_event_update;
inject.tool.tracing_data = perf_event__repipe_op2_synth;
inject.tool.finished_round = perf_event__repipe_oe_synth;
inject.tool.build_id = perf_event__repipe_op2_synth;
inject.tool.id_index = perf_event__repipe_op2_synth;
inject.tool.auxtrace_info = perf_event__repipe_op2_synth;
inject.tool.auxtrace_error = perf_event__repipe_op2_synth;
inject.tool.time_conv = perf_event__repipe_op2_synth;
inject.tool.thread_map = perf_event__repipe_op2_synth;
inject.tool.cpu_map = perf_event__repipe_op2_synth;
inject.tool.stat_config = perf_event__repipe_op2_synth;
inject.tool.stat = perf_event__repipe_op2_synth;
inject.tool.stat_round = perf_event__repipe_op2_synth;
inject.tool.feature = perf_event__repipe_op2_synth;
inject.tool.finished_init = perf_event__repipe_op2_synth;
inject.tool.compressed = perf_event__repipe_op4_synth;
inject.tool.auxtrace = perf_event__repipe_auxtrace;
inject.tool.dont_split_sample_group = true;
inject.session = __perf_session__new(&data, repipe,
output_fd(&inject),
&inject.tool);
......@@ -2373,7 +2374,6 @@ int cmd_inject(int argc, const char **argv)
* mmaps. We cannot generate the buildid hit list and
* inject the jit mmaps at the same time for now.
*/
inject.tool.ordered_events = true;
inject.tool.ordering_requires_timestamps = true;
if (known_build_ids != NULL) {
inject.known_build_ids =
......@@ -2386,15 +2386,10 @@ int cmd_inject(int argc, const char **argv)
}
}
if (inject.sched_stat) {
inject.tool.ordered_events = true;
}
#ifdef HAVE_JITDUMP
if (inject.jit_mode) {
inject.tool.mmap2 = perf_event__jit_repipe_mmap2;
inject.tool.mmap = perf_event__jit_repipe_mmap;
inject.tool.ordered_events = true;
inject.tool.ordering_requires_timestamps = true;
/*
* JIT MMAP injection injects all MMAP events in one go, so it
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment