From d29c09ca2ff68f60ba6b611c8db67b50f7654f94 Mon Sep 17 00:00:00 2001 From: Namhyung Kim Date: Fri, 16 Mar 2012 17:42:20 +0900 Subject: [PATCH] --- yaml --- r: 298319 b: refs/heads/master c: 5090c6aea84dcc474d0aabf9f66f1eab68a143eb h: refs/heads/master i: 298317: 8a9fd019ab6013d3e313a6c2498c38a0709091a9 298315: 819d8e09f9b25cdea6a16fd4f43cc5e10bebb3c3 298311: cd44ba1638ee71d35e54de12053fee3ed298dddc 298303: 14f53e50c7432b09dab8dd54e94e3934f3a17743 v: v3 --- [refs] | 2 +- trunk/tools/perf/util/evlist.c | 6 ++++-- trunk/tools/perf/util/evsel.c | 6 ++++-- trunk/tools/perf/util/evsel.h | 3 ++- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 813104ffe930..a94b59c380d0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4c19ea453d81cf8bd9bd446e6b129998f79997e7 +refs/heads/master: 5090c6aea84dcc474d0aabf9f66f1eab68a143eb diff --git a/trunk/tools/perf/util/evlist.c b/trunk/tools/perf/util/evlist.c index 159263d17c2d..1986d8051bd1 100644 --- a/trunk/tools/perf/util/evlist.c +++ b/trunk/tools/perf/util/evlist.c @@ -51,13 +51,15 @@ struct perf_evlist *perf_evlist__new(struct cpu_map *cpus, void perf_evlist__config_attrs(struct perf_evlist *evlist, struct perf_record_opts *opts) { - struct perf_evsel *evsel; + struct perf_evsel *evsel, *first; if (evlist->cpus->map[0] < 0) opts->no_inherit = true; + first = list_entry(evlist->entries.next, struct perf_evsel, node); + list_for_each_entry(evsel, &evlist->entries, node) { - perf_evsel__config(evsel, opts); + perf_evsel__config(evsel, opts, first); if (evlist->nr_entries > 1) evsel->attr.sample_type |= PERF_SAMPLE_ID; diff --git a/trunk/tools/perf/util/evsel.c b/trunk/tools/perf/util/evsel.c index f421f7cbc0d3..0221700075c5 100644 --- a/trunk/tools/perf/util/evsel.c +++ b/trunk/tools/perf/util/evsel.c @@ -63,7 +63,8 @@ struct perf_evsel *perf_evsel__new(struct perf_event_attr *attr, int idx) return evsel; } -void perf_evsel__config(struct perf_evsel *evsel, struct perf_record_opts *opts) +void perf_evsel__config(struct perf_evsel *evsel, struct perf_record_opts *opts, + struct perf_evsel *first) { struct perf_event_attr *attr = &evsel->attr; int track = !evsel->idx; /* only the first counter needs these */ @@ -134,7 +135,8 @@ void perf_evsel__config(struct perf_evsel *evsel, struct perf_record_opts *opts) attr->mmap = track; attr->comm = track; - if (!opts->target_pid && !opts->target_tid && !opts->system_wide) { + if (!opts->target_pid && !opts->target_tid && !opts->system_wide && + (!opts->group || evsel == first)) { attr->disabled = 1; attr->enable_on_exec = 1; } diff --git a/trunk/tools/perf/util/evsel.h b/trunk/tools/perf/util/evsel.h index 326b8e4d5035..3158ca3d69a1 100644 --- a/trunk/tools/perf/util/evsel.h +++ b/trunk/tools/perf/util/evsel.h @@ -80,7 +80,8 @@ void perf_evsel__exit(struct perf_evsel *evsel); void perf_evsel__delete(struct perf_evsel *evsel); void perf_evsel__config(struct perf_evsel *evsel, - struct perf_record_opts *opts); + struct perf_record_opts *opts, + struct perf_evsel *first); int perf_evsel__alloc_fd(struct perf_evsel *evsel, int ncpus, int nthreads); int perf_evsel__alloc_id(struct perf_evsel *evsel, int ncpus, int nthreads);