Skip to content

Commit aa91baa

Browse files
captain5050namhyung
authored andcommitted
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 <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Namhyung Kim <[email protected]>
1 parent aaa2357 commit aa91baa

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

tools/perf/bench/synthesize.c

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -114,12 +114,16 @@ static int run_single_threaded(void)
114114
.pid = "self",
115115
};
116116
struct perf_thread_map *threads;
117+
struct perf_env host_env;
117118
int err;
118119

119120
perf_set_singlethreaded();
120-
session = perf_session__new(NULL, NULL);
121+
perf_env__init(&host_env);
122+
session = __perf_session__new(/*data=*/NULL, /*tool=*/NULL,
123+
/*trace_event_repipe=*/false, &host_env);
121124
if (IS_ERR(session)) {
122125
pr_err("Session creation failed.\n");
126+
perf_env__exit(&host_env);
123127
return PTR_ERR(session);
124128
}
125129
threads = thread_map__new_by_pid(getpid());
@@ -144,6 +148,7 @@ static int run_single_threaded(void)
144148
perf_thread_map__put(threads);
145149

146150
perf_session__delete(session);
151+
perf_env__exit(&host_env);
147152
return err;
148153
}
149154

@@ -154,17 +159,21 @@ static int do_run_multi_threaded(struct target *target,
154159
u64 runtime_us;
155160
unsigned int i;
156161
double time_average, time_stddev, event_average, event_stddev;
157-
int err;
162+
int err = 0;
158163
struct stats time_stats, event_stats;
159164
struct perf_session *session;
165+
struct perf_env host_env;
160166

167+
perf_env__init(&host_env);
161168
init_stats(&time_stats);
162169
init_stats(&event_stats);
163170
for (i = 0; i < multi_iterations; i++) {
164-
session = perf_session__new(NULL, NULL);
165-
if (IS_ERR(session))
166-
return PTR_ERR(session);
167-
171+
session = __perf_session__new(/*data=*/NULL, /*tool=*/NULL,
172+
/*trace_event_repipe=*/false, &host_env);
173+
if (IS_ERR(session)) {
174+
err = PTR_ERR(session);
175+
goto err_out;
176+
}
168177
atomic_set(&event_count, 0);
169178
gettimeofday(&start, NULL);
170179
err = __machine__synthesize_threads(&session->machines.host,
@@ -175,7 +184,7 @@ static int do_run_multi_threaded(struct target *target,
175184
nr_threads_synthesize);
176185
if (err) {
177186
perf_session__delete(session);
178-
return err;
187+
goto err_out;
179188
}
180189

181190
gettimeofday(&end, NULL);
@@ -198,7 +207,9 @@ static int do_run_multi_threaded(struct target *target,
198207

199208
printf(" Average time per event %.3f usec\n",
200209
time_average / event_average);
201-
return 0;
210+
err_out:
211+
perf_env__exit(&host_env);
212+
return err;
202213
}
203214

204215
static int run_multi_threaded(void)

0 commit comments

Comments
 (0)