mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 12:03:54 +02:00
perf bench synthesize: Avoid use of global perf_env
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>
This commit is contained in:
parent
aaa23571fe
commit
aa91baa09b
|
|
@ -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 @@ static int run_single_threaded(void)
|
|||
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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user