diff options
author | Ingo Molnar <mingo@elte.hu> | 2011-03-30 09:08:20 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-03-30 09:08:39 +0200 |
commit | 652d78fd7a9ebd881290d6bbbc85925c06b907b4 (patch) | |
tree | 5ddef0bcae62e7b95fb8702e4e946d4b5d4e9dc6 /tools/perf/builtin-record.c | |
parent | 9f644c4ba86b76159d36747fda7da496f72a1872 (diff) | |
parent | ca6a42586fae639ff9e5285d9bdc550fcb1b8d41 (diff) |
Merge commits 'ca6a42586fae' and 'c286c419c784' into perf/urgent
Pick up these two commits from Arnaldo's perf/core tree:
ca6a42586fae: perf tools: Emit clearer message for sys_perf_event_open ENOENT return
c286c419c784: perf tools: Fixup exit path when not able to open events
As they are really fixes we want to have sooner than laer.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/builtin-record.c')
-rw-r--r-- | tools/perf/builtin-record.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 6febcc168a8..db6adecf46f 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -275,11 +275,10 @@ try_again: !no_inherit) < 0) { int err = errno; - if (err == EPERM || err == EACCES) - die("Permission error - are you root?\n" - "\t Consider tweaking" - " /proc/sys/kernel/perf_event_paranoid.\n"); - else if (err == ENODEV && cpu_list) { + if (err == EPERM || err == EACCES) { + ui__warning_paranoid(); + exit(EXIT_FAILURE); + } else if (err == ENODEV && cpu_list) { die("No such device - did you specify" " an out-of-range profile CPU?\n"); } else if (err == EINVAL && sample_id_all_avail) { @@ -302,11 +301,19 @@ try_again: && attr->config == PERF_COUNT_HW_CPU_CYCLES) { if (verbose) - warning(" ... trying to fall back to cpu-clock-ticks\n"); + ui__warning("The cycles event is not supported, " + "trying to fall back to cpu-clock-ticks\n"); attr->type = PERF_TYPE_SOFTWARE; attr->config = PERF_COUNT_SW_CPU_CLOCK; goto try_again; } + + if (err == ENOENT) { + ui__warning("The %s event is not supported.\n", + event_name(pos)); + exit(EXIT_FAILURE); + } + printf("\n"); error("sys_perf_event_open() syscall returned with %d (%s). /bin/dmesg may provide additional information.\n", err, strerror(err)); |