]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
perf bench synthesize: Avoid use of global perf_env
authorIan Rogers <irogers@google.com>
Thu, 24 Jul 2025 16:32:55 +0000 (09:32 -0700)
committerNamhyung Kim <namhyung@kernel.org>
Fri, 25 Jul 2025 17:37:57 +0000 (10:37 -0700)
The benchmark doesn't use a data file and so the header perf_env isn't
used. Stack allocate a host perf_env for use to avoid the use of the
global perf_env.

Signed-off-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/r/20250724163302.596743-16-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/bench/synthesize.c

index 9b333276cbdb6fae5d0f910b7f03b12a0f56fe87..b3d493697675cbc19083064e6f6fc0c5f7181d59 100644 (file)
@@ -114,12 +114,16 @@ static int run_single_threaded(void)
                .pid = "self",
        };
        struct perf_thread_map *threads;
+       struct perf_env host_env;
        int err;
 
        perf_set_singlethreaded();
-       session = perf_session__new(NULL, NULL);
+       perf_env__init(&host_env);
+       session = __perf_session__new(/*data=*/NULL, /*tool=*/NULL,
+                                     /*trace_event_repipe=*/false, &host_env);
        if (IS_ERR(session)) {
                pr_err("Session creation failed.\n");
+               perf_env__exit(&host_env);
                return PTR_ERR(session);
        }
        threads = thread_map__new_by_pid(getpid());
@@ -144,6 +148,7 @@ err_out:
                perf_thread_map__put(threads);
 
        perf_session__delete(session);
+       perf_env__exit(&host_env);
        return err;
 }
 
@@ -154,17 +159,21 @@ static int do_run_multi_threaded(struct target *target,
        u64 runtime_us;
        unsigned int i;
        double time_average, time_stddev, event_average, event_stddev;
-       int err;
+       int err = 0;
        struct stats time_stats, event_stats;
        struct perf_session *session;
+       struct perf_env host_env;
 
+       perf_env__init(&host_env);
        init_stats(&time_stats);
        init_stats(&event_stats);
        for (i = 0; i < multi_iterations; i++) {
-               session = perf_session__new(NULL, NULL);
-               if (IS_ERR(session))
-                       return PTR_ERR(session);
-
+               session = __perf_session__new(/*data=*/NULL, /*tool=*/NULL,
+                                             /*trace_event_repipe=*/false, &host_env);
+               if (IS_ERR(session)) {
+                       err = PTR_ERR(session);
+                       goto err_out;
+               }
                atomic_set(&event_count, 0);
                gettimeofday(&start, NULL);
                err = __machine__synthesize_threads(&session->machines.host,
@@ -175,7 +184,7 @@ static int do_run_multi_threaded(struct target *target,
                                                nr_threads_synthesize);
                if (err) {
                        perf_session__delete(session);
-                       return err;
+                       goto err_out;
                }
 
                gettimeofday(&end, NULL);
@@ -198,7 +207,9 @@ static int do_run_multi_threaded(struct target *target,
 
        printf("    Average time per event %.3f usec\n",
                time_average / event_average);
-       return 0;
+err_out:
+       perf_env__exit(&host_env);
+       return err;
 }
 
 static int run_multi_threaded(void)