From: Namhyung Kim Date: Mon, 11 Mar 2013 07:43:16 +0000 (+0900) Subject: perf evlist: Do not pass struct record_opts to perf_evlist__prepare_workload() X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=119fa3c922ff53a334507e198b2e3c66e99f54dc;p=openwrt%2Fstaging%2Fblogic.git perf evlist: Do not pass struct record_opts to perf_evlist__prepare_workload() Since it's only used for checking ->pipe_output, we can pass the result directly. Now the perf_evlist__prepare_workload() don't have a dependency of struct perf_record_opts, it can be called from other places like perf stat. Signed-off-by: Namhyung Kim Cc: David Ahern Cc: Ingo Molnar Cc: Jiri Olsa Cc: Paul Mackerras Cc: Peter Zijlstra Link: http://lkml.kernel.org/r/1362987798-24969-5-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index a80301797e89..2a43c4423f6a 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 1de3971437c9..3d9944c3d851 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 adf6b4a21a60..a1c41b7d3c07 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 291884c804e9..9a337f091b22 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -746,8 +746,7 @@ out_err: 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 e089906cb4de..276a5acc56e6 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,