diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2012-12-10 14:41:31 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2012-12-11 15:19:01 -0500 |
commit | f77a951826b44b763e4d9fbd2479b6132d2bd7fc (patch) | |
tree | 13d02b7130d1d6ce0fe7ef787c1ed56258f4868c | |
parent | 62b807f64948f55776b1cc57298966d915b1a402 (diff) |
perf evlist: Set the leader in the perf_evlist__config method
Since we need to ensure the leader is set before configuring the
evsel perf_event_attrs.
Reducing the boilerplate needed by tools, helping, for instance,
'perf trace', that wasn't setting the leader.
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-22shm0ptkch2kgl7rtqlligx@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/perf/builtin-record.c | 9 | ||||
-rw-r--r-- | tools/perf/builtin-trace.c | 2 | ||||
-rw-r--r-- | tools/perf/tests/perf-record.c | 2 | ||||
-rw-r--r-- | tools/perf/util/evlist.c | 10 | ||||
-rw-r--r-- | tools/perf/util/evlist.h | 4 |
5 files changed, 13 insertions, 14 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 0be6605db9ea..fc4f08044632 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c | |||
@@ -230,14 +230,7 @@ static int perf_record__open(struct perf_record *rec) | |||
230 | struct perf_record_opts *opts = &rec->opts; | 230 | struct perf_record_opts *opts = &rec->opts; |
231 | int rc = 0; | 231 | int rc = 0; |
232 | 232 | ||
233 | /* | 233 | perf_evlist__config(evlist, opts); |
234 | * Set the evsel leader links before we configure attributes, | ||
235 | * since some might depend on this info. | ||
236 | */ | ||
237 | if (opts->group) | ||
238 | perf_evlist__set_leader(evlist); | ||
239 | |||
240 | perf_evlist__config_attrs(evlist, opts); | ||
241 | 234 | ||
242 | list_for_each_entry(pos, &evlist->entries, node) { | 235 | list_for_each_entry(pos, &evlist->entries, node) { |
243 | struct perf_event_attr *attr = &pos->attr; | 236 | struct perf_event_attr *attr = &pos->attr; |
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 7932ffa29889..d222d7fc7e96 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c | |||
@@ -455,7 +455,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv) | |||
455 | goto out_delete_evlist; | 455 | goto out_delete_evlist; |
456 | } | 456 | } |
457 | 457 | ||
458 | perf_evlist__config_attrs(evlist, &trace->opts); | 458 | perf_evlist__config(evlist, &trace->opts); |
459 | 459 | ||
460 | signal(SIGCHLD, sig_handler); | 460 | signal(SIGCHLD, sig_handler); |
461 | signal(SIGINT, sig_handler); | 461 | signal(SIGINT, sig_handler); |
diff --git a/tools/perf/tests/perf-record.c b/tools/perf/tests/perf-record.c index 5902772492b6..6ea66cf6791b 100644 --- a/tools/perf/tests/perf-record.c +++ b/tools/perf/tests/perf-record.c | |||
@@ -106,7 +106,7 @@ int test__PERF_RECORD(void) | |||
106 | perf_evsel__set_sample_bit(evsel, CPU); | 106 | perf_evsel__set_sample_bit(evsel, CPU); |
107 | perf_evsel__set_sample_bit(evsel, TID); | 107 | perf_evsel__set_sample_bit(evsel, TID); |
108 | perf_evsel__set_sample_bit(evsel, TIME); | 108 | perf_evsel__set_sample_bit(evsel, TIME); |
109 | perf_evlist__config_attrs(evlist, &opts); | 109 | perf_evlist__config(evlist, &opts); |
110 | 110 | ||
111 | err = sched__get_first_possible_cpu(evlist->workload.pid, &cpu_mask); | 111 | err = sched__get_first_possible_cpu(evlist->workload.pid, &cpu_mask); |
112 | if (err < 0) { | 112 | if (err < 0) { |
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 5a0878d3a038..dc8aee97a488 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c | |||
@@ -49,10 +49,16 @@ struct perf_evlist *perf_evlist__new(struct cpu_map *cpus, | |||
49 | return evlist; | 49 | return evlist; |
50 | } | 50 | } |
51 | 51 | ||
52 | void perf_evlist__config_attrs(struct perf_evlist *evlist, | 52 | void perf_evlist__config(struct perf_evlist *evlist, |
53 | struct perf_record_opts *opts) | 53 | struct perf_record_opts *opts) |
54 | { | 54 | { |
55 | struct perf_evsel *evsel; | 55 | struct perf_evsel *evsel; |
56 | /* | ||
57 | * Set the evsel leader links before we configure attributes, | ||
58 | * since some might depend on this info. | ||
59 | */ | ||
60 | if (opts->group) | ||
61 | perf_evlist__set_leader(evlist); | ||
56 | 62 | ||
57 | if (evlist->cpus->map[0] < 0) | 63 | if (evlist->cpus->map[0] < 0) |
58 | opts->no_inherit = true; | 64 | opts->no_inherit = true; |
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h index 56003f779e60..457e2350d21d 100644 --- a/tools/perf/util/evlist.h +++ b/tools/perf/util/evlist.h | |||
@@ -76,8 +76,8 @@ union perf_event *perf_evlist__mmap_read(struct perf_evlist *self, int idx); | |||
76 | 76 | ||
77 | int perf_evlist__open(struct perf_evlist *evlist); | 77 | int perf_evlist__open(struct perf_evlist *evlist); |
78 | 78 | ||
79 | void perf_evlist__config_attrs(struct perf_evlist *evlist, | 79 | void perf_evlist__config(struct perf_evlist *evlist, |
80 | struct perf_record_opts *opts); | 80 | struct perf_record_opts *opts); |
81 | 81 | ||
82 | int perf_evlist__prepare_workload(struct perf_evlist *evlist, | 82 | int perf_evlist__prepare_workload(struct perf_evlist *evlist, |
83 | struct perf_record_opts *opts, | 83 | struct perf_record_opts *opts, |