diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-01-11 21:08:18 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-01-22 16:56:29 -0500 |
commit | 9d04f1781772e11bd58806391555fc23ebb54377 (patch) | |
tree | 9b91c767bed360fcfd2ab6b90794cca784db279f /tools/perf/util/evsel.c | |
parent | f08199d314458610d4ca52f8e86e0a4ec7a7bc54 (diff) |
perf evsel: Allow specifying if the inherit bit should be set
As this is a per-cpu attribute, we can't set it up in advance and use it
for all the calls.
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/evsel.c')
-rw-r--r-- | tools/perf/util/evsel.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index da473ec93c75..82a00536892a 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c | |||
@@ -128,7 +128,7 @@ int __perf_evsel__read(struct perf_evsel *evsel, | |||
128 | } | 128 | } |
129 | 129 | ||
130 | static int __perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus, | 130 | static int __perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus, |
131 | struct thread_map *threads, bool group) | 131 | struct thread_map *threads, bool group, bool inherit) |
132 | { | 132 | { |
133 | int cpu, thread; | 133 | int cpu, thread; |
134 | 134 | ||
@@ -139,6 +139,8 @@ static int __perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus, | |||
139 | for (cpu = 0; cpu < cpus->nr; cpu++) { | 139 | for (cpu = 0; cpu < cpus->nr; cpu++) { |
140 | int group_fd = -1; | 140 | int group_fd = -1; |
141 | 141 | ||
142 | evsel->attr.inherit = (cpus->map[cpu] < 0) && inherit; | ||
143 | |||
142 | for (thread = 0; thread < threads->nr; thread++) { | 144 | for (thread = 0; thread < threads->nr; thread++) { |
143 | FD(evsel, cpu, thread) = sys_perf_event_open(&evsel->attr, | 145 | FD(evsel, cpu, thread) = sys_perf_event_open(&evsel->attr, |
144 | threads->map[thread], | 146 | threads->map[thread], |
@@ -182,7 +184,7 @@ static struct { | |||
182 | }; | 184 | }; |
183 | 185 | ||
184 | int perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus, | 186 | int perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus, |
185 | struct thread_map *threads, bool group) | 187 | struct thread_map *threads, bool group, bool inherit) |
186 | { | 188 | { |
187 | if (cpus == NULL) { | 189 | if (cpus == NULL) { |
188 | /* Work around old compiler warnings about strict aliasing */ | 190 | /* Work around old compiler warnings about strict aliasing */ |
@@ -192,17 +194,17 @@ int perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus, | |||
192 | if (threads == NULL) | 194 | if (threads == NULL) |
193 | threads = &empty_thread_map.map; | 195 | threads = &empty_thread_map.map; |
194 | 196 | ||
195 | return __perf_evsel__open(evsel, cpus, threads, group); | 197 | return __perf_evsel__open(evsel, cpus, threads, group, inherit); |
196 | } | 198 | } |
197 | 199 | ||
198 | int perf_evsel__open_per_cpu(struct perf_evsel *evsel, | 200 | int perf_evsel__open_per_cpu(struct perf_evsel *evsel, |
199 | struct cpu_map *cpus, bool group) | 201 | struct cpu_map *cpus, bool group, bool inherit) |
200 | { | 202 | { |
201 | return __perf_evsel__open(evsel, cpus, &empty_thread_map.map, group); | 203 | return __perf_evsel__open(evsel, cpus, &empty_thread_map.map, group, inherit); |
202 | } | 204 | } |
203 | 205 | ||
204 | int perf_evsel__open_per_thread(struct perf_evsel *evsel, | 206 | int perf_evsel__open_per_thread(struct perf_evsel *evsel, |
205 | struct thread_map *threads, bool group) | 207 | struct thread_map *threads, bool group, bool inherit) |
206 | { | 208 | { |
207 | return __perf_evsel__open(evsel, &empty_cpu_map.map, threads, group); | 209 | return __perf_evsel__open(evsel, &empty_cpu_map.map, threads, group, inherit); |
208 | } | 210 | } |