diff options
| -rw-r--r-- | tools/perf/util/evsel.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 4bb89373eb52..0dccdb89572c 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c | |||
| @@ -271,12 +271,17 @@ struct perf_evsel *perf_evsel__new_idx(struct perf_event_attr *attr, int idx) | |||
| 271 | return evsel; | 271 | return evsel; |
| 272 | } | 272 | } |
| 273 | 273 | ||
| 274 | static bool perf_event_can_profile_kernel(void) | ||
| 275 | { | ||
| 276 | return geteuid() == 0 || perf_event_paranoid() == -1; | ||
| 277 | } | ||
| 278 | |||
| 274 | struct perf_evsel *perf_evsel__new_cycles(bool precise) | 279 | struct perf_evsel *perf_evsel__new_cycles(bool precise) |
| 275 | { | 280 | { |
| 276 | struct perf_event_attr attr = { | 281 | struct perf_event_attr attr = { |
| 277 | .type = PERF_TYPE_HARDWARE, | 282 | .type = PERF_TYPE_HARDWARE, |
| 278 | .config = PERF_COUNT_HW_CPU_CYCLES, | 283 | .config = PERF_COUNT_HW_CPU_CYCLES, |
| 279 | .exclude_kernel = geteuid() != 0, | 284 | .exclude_kernel = !perf_event_can_profile_kernel(), |
| 280 | }; | 285 | }; |
| 281 | struct perf_evsel *evsel; | 286 | struct perf_evsel *evsel; |
| 282 | 287 | ||
