]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - tools/perf/util/evsel.c
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma
[linux.git] / tools / perf / util / evsel.c
index 87b43188667046c8a676b9bcbb3f2c7c315eb9bc..413f74df08de7cae06b1313ef0ed4c1339ee2093 100644 (file)
@@ -273,7 +273,7 @@ struct perf_evsel *perf_evsel__new_cycles(void)
        struct perf_event_attr attr = {
                .type   = PERF_TYPE_HARDWARE,
                .config = PERF_COUNT_HW_CPU_CYCLES,
-               .exclude_kernel = 1,
+               .exclude_kernel = geteuid() != 0,
        };
        struct perf_evsel *evsel;
 
@@ -298,8 +298,10 @@ struct perf_evsel *perf_evsel__new_cycles(void)
                goto out;
 
        /* use asprintf() because free(evsel) assumes name is allocated */
-       if (asprintf(&evsel->name, "cycles%.*s",
-                    attr.precise_ip ? attr.precise_ip + 1 : 0, ":ppp") < 0)
+       if (asprintf(&evsel->name, "cycles%s%s%.*s",
+                    (attr.precise_ip || attr.exclude_kernel) ? ":" : "",
+                    attr.exclude_kernel ? "u" : "",
+                    attr.precise_ip ? attr.precise_ip + 1 : 0, "ppp") < 0)
                goto error_free;
 out:
        return evsel;