diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2014-12-11 16:03:01 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2014-12-11 16:03:01 -0500 |
commit | 956fa57106d1ad3ffbe73f4534b9f3b3bc92dd6c (patch) | |
tree | 2a6ebee982995435ca424fba2cac90669fe610b1 /tools/perf/util/evlist.c | |
parent | ce27309f67c347e6e49ebd45042f5362b0ccbdcc (diff) |
perf evlist: Introduce strerror_mmap method
To pretty print hints about perf_evlist__mmap errors. Will be used in
'trace' in the next patch.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-2g3gczfwyz0xt3we0s15mqqt@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/evlist.c')
-rw-r--r-- | tools/perf/util/evlist.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index cfbe2b99b9aa..bb5dfc5d1e75 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c | |||
@@ -8,6 +8,7 @@ | |||
8 | */ | 8 | */ |
9 | #include "util.h" | 9 | #include "util.h" |
10 | #include <api/fs/debugfs.h> | 10 | #include <api/fs/debugfs.h> |
11 | #include <api/fs/fs.h> | ||
11 | #include <poll.h> | 12 | #include <poll.h> |
12 | #include "cpumap.h" | 13 | #include "cpumap.h" |
13 | #include "thread_map.h" | 14 | #include "thread_map.h" |
@@ -1483,6 +1484,28 @@ int perf_evlist__strerror_open(struct perf_evlist *evlist __maybe_unused, | |||
1483 | return 0; | 1484 | return 0; |
1484 | } | 1485 | } |
1485 | 1486 | ||
1487 | int perf_evlist__strerror_mmap(struct perf_evlist *evlist, int err, char *buf, size_t size) | ||
1488 | { | ||
1489 | char sbuf[STRERR_BUFSIZE], *emsg = strerror_r(err, sbuf, sizeof(sbuf)); | ||
1490 | int value; | ||
1491 | |||
1492 | switch (err) { | ||
1493 | case EPERM: | ||
1494 | sysctl__read_int("kernel/perf_event_mlock_kb", &value); | ||
1495 | scnprintf(buf, size, "Error:\t%s.\n" | ||
1496 | "Hint:\tCheck /proc/sys/kernel/perf_event_mlock_kb (%d kB) setting.\n" | ||
1497 | "Hint:\tTried using %zd kB.\n" | ||
1498 | "Hint:\tTry using a bigger -m/--mmap-pages value.", | ||
1499 | emsg, value, evlist->mmap_len / 1024); | ||
1500 | break; | ||
1501 | default: | ||
1502 | scnprintf(buf, size, "%s", emsg); | ||
1503 | break; | ||
1504 | } | ||
1505 | |||
1506 | return 0; | ||
1507 | } | ||
1508 | |||
1486 | void perf_evlist__to_front(struct perf_evlist *evlist, | 1509 | void perf_evlist__to_front(struct perf_evlist *evlist, |
1487 | struct perf_evsel *move_evsel) | 1510 | struct perf_evsel *move_evsel) |
1488 | { | 1511 | { |