]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
perf session: Add host_env argument to perf_session__new
authorIan Rogers <irogers@google.com>
Thu, 24 Jul 2025 16:32:53 +0000 (09:32 -0700)
committerNamhyung Kim <namhyung@kernel.org>
Fri, 25 Jul 2025 17:37:57 +0000 (10:37 -0700)
When creating a perf_session the host perf_env may or may not want to
be used. For example, `perf top` uses a host perf_env while `perf
inject` does not. Add a host_env argument to perf_session__new so that
sessions requiring a host perf_env can pass it in. Currently if none
is specified the global perf_env variable is used, but this will
change in later patches.

Signed-off-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/r/20250724163302.596743-14-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/builtin-inject.c
tools/perf/util/session.c
tools/perf/util/session.h

index f73350a3417ab1d885d54e3280db66249a0ce1eb..40ba6a94f7196f9c8a56f1a4f738eeb7985b06f1 100644 (file)
@@ -2539,7 +2539,8 @@ int cmd_inject(int argc, const char **argv)
        inject.tool.bpf_metadata        = perf_event__repipe_op2_synth;
        inject.tool.dont_split_sample_group = true;
        inject.session = __perf_session__new(&data, &inject.tool,
-                                            /*trace_event_repipe=*/inject.output.is_pipe);
+                                            /*trace_event_repipe=*/inject.output.is_pipe,
+                                            /*host_env=*/NULL);
 
        if (IS_ERR(inject.session)) {
                ret = PTR_ERR(inject.session);
index a851d9130abd607e2963524b114f212faf233020..36532329a633e0ed63b20273e0cb8bc98ffdc841 100644 (file)
@@ -138,7 +138,8 @@ static int ordered_events__deliver_event(struct ordered_events *oe,
 
 struct perf_session *__perf_session__new(struct perf_data *data,
                                         struct perf_tool *tool,
-                                        bool trace_event_repipe)
+                                        bool trace_event_repipe,
+                                        struct perf_env *host_env)
 {
        int ret = -ENOMEM;
        struct perf_session *session = zalloc(sizeof(*session));
@@ -191,7 +192,7 @@ struct perf_session *__perf_session__new(struct perf_data *data,
                                symbol_conf.kallsyms_name = perf_data__kallsyms_name(data);
                }
        } else  {
-               session->machines.host.env = &perf_env;
+               session->machines.host.env = host_env ?: &perf_env;
        }
        if (session->evlist)
                session->evlist->session = session;
index e7f7464b838f5810ea52e59c2d539bb2cb7563e7..cf88d65a25cb6313ef7a65e4b1a7ce775f52cc8e 100644 (file)
@@ -107,12 +107,13 @@ struct perf_tool;
 
 struct perf_session *__perf_session__new(struct perf_data *data,
                                         struct perf_tool *tool,
-                                        bool trace_event_repipe);
+                                        bool trace_event_repipe,
+                                        struct perf_env *host_env);
 
 static inline struct perf_session *perf_session__new(struct perf_data *data,
                                                     struct perf_tool *tool)
 {
-       return __perf_session__new(data, tool, /*trace_event_repipe=*/false);
+       return __perf_session__new(data, tool, /*trace_event_repipe=*/false, /*host_env=*/NULL);
 }
 
 void perf_session__delete(struct perf_session *session);