]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
perf inject: Use perf_tool__init()
authorIan Rogers <irogers@google.com>
Mon, 12 Aug 2024 20:47:06 +0000 (13:47 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 12 Aug 2024 21:10:10 +0000 (18:10 -0300)
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: Ian 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.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-inject.c

index 283429ccd0341efe02e498ffe50c7a7dd91baca4..ef9cba173dd2da0e7824d9f09932bb828f1b1b6e 100644 (file)
@@ -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