diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index a80301797e8935479a13bba69dcda5c085285eb4..2a43c4423f6ae8034e40dbb835f4cbf78def5440 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -475,7 +475,7 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv) if (forks) { err = perf_evlist__prepare_workload(evsel_list, &opts->target, - opts, argv); + argv, opts->pipe_output); if (err < 0) { pr_err("Couldn't run the workload!\n"); goto out_delete_session; diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 1de3971437c90e7c0531f73ee6b3e7fe42950e44..3d9944c3d85178fd2405fd2fdc4cf268ba1cb06b 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -462,7 +462,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv) if (forks) { err = perf_evlist__prepare_workload(evlist, &trace->opts.target, - &trace->opts, argv); + argv, false); if (err < 0) { printf("Couldn't run the workload!\n"); goto out_delete_evlist; diff --git a/tools/perf/tests/perf-record.c b/tools/perf/tests/perf-record.c index adf6b4a21a60ff5a5a1eabc9fa522172f4b67340..a1c41b7d3c071117aeb57eaea6e63bbfd658d247 100644 --- a/tools/perf/tests/perf-record.c +++ b/tools/perf/tests/perf-record.c @@ -93,7 +93,7 @@ int test__PERF_RECORD(void) * so that we have time to open the evlist (calling sys_perf_event_open * on all the fds) and then mmap them. */ - err = perf_evlist__prepare_workload(evlist, &opts.target, &opts, argv); + err = perf_evlist__prepare_workload(evlist, &opts.target, argv, false); if (err < 0) { pr_debug("Couldn't run the workload!\n"); goto out_delete_maps; diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 291884c804e9dd2e1925bd6eb158502e1e94f302..9a337f091b228122e322fd6681834c9f4a3179f6 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -746,8 +746,7 @@ int perf_evlist__open(struct perf_evlist *evlist) int perf_evlist__prepare_workload(struct perf_evlist *evlist, struct perf_target *target, - struct perf_record_opts *opts, - const char *argv[]) + const char *argv[], bool pipe_output) { int child_ready_pipe[2], go_pipe[2]; char bf; @@ -769,7 +768,7 @@ int perf_evlist__prepare_workload(struct perf_evlist *evlist, } if (!evlist->workload.pid) { - if (opts->pipe_output) + if (pipe_output) dup2(2, 1); close(child_ready_pipe[0]); diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h index e089906cb4deadefd402d7674835cc1b7f19bf4c..276a5acc56e631c0c43ce445b4b65c53577aea84 100644 --- a/tools/perf/util/evlist.h +++ b/tools/perf/util/evlist.h @@ -87,8 +87,7 @@ void perf_evlist__config(struct perf_evlist *evlist, int perf_evlist__prepare_workload(struct perf_evlist *evlist, struct perf_target *target, - struct perf_record_opts *opts, - const char *argv[]); + const char *argv[], bool pipe_output); int perf_evlist__start_workload(struct perf_evlist *evlist); int perf_evlist__mmap(struct perf_evlist *evlist, unsigned int pages,