perf evlist: Introduce strerror_mmap method
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 956fa57106d1ad3ffbe73f4534b9f3b3bc92dd6c Gitweb: http://git.kernel.org/tip/956fa57106d1ad3ffbe73f4534b9f3b3bc92dd6c Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Thu, 11 Dec 2014 18:03:01 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Thu, 11 Dec 2014 18:03:01 -0300
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 <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc David Ahern <[email protected]>
Cc Don Zickus <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Mike Galbraith <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/util/evlist.c | 23 +++++++++++++++++++++++ tools/perf/util/evlist.h | 1 + 2 files changed, 24 insertions(+)
tools/perf/util/evlist.c +23 -0
@@ -8,6 +8,7 @@*/ #include "util.h" #include <api/fs/debugfs.h> +#include <api/fs/fs.h> #include <poll.h> #include "cpumap.h" #include "thread_map.h"
@@ -1483,6 +1484,28 @@ int perf_evlist__strerror_open(struct perf_evlist *evlist __maybe_unused,return 0 ; } +int perf_evlist__strerror_mmap (struct perf_evlist *evlist,int err,char *buf,size_t size) +{ +char sbuf[STRERR_BUFSIZE ], *emsg =strerror_r (err, sbuf,sizeof (sbuf)); +int value; + +switch (err) { +case EPERM : +sysctl__read_int ("kernel/perf_event_mlock_kb" , &value); +scnprintf (buf, size,"Error:\t%s.\n" +"Hint:\tCheck /proc/sys/kernel/perf_event_mlock_kb (%d kB) setting.\n" +"Hint:\tTried using %zd kB.\n" +"Hint:\tTry using a bigger -m/--mmap-pages value." , + emsg, value, evlist->mmap_len /1024 ); +break ; +default : +scnprintf (buf, size,"%s" , emsg); +break ; + } + +return 0 ; +} +void perf_evlist__to_front (struct perf_evlist *evlist,struct perf_evsel *move_evsel) {
tools/perf/util/evlist.h +1 -0
@@ -185,6 +185,7 @@ size_t perf_evlist__fprintf(struct perf_evlist *evlist, FILE *fp);int perf_evlist__strerror_tp (struct perf_evlist *evlist,int err,char *buf,size_t size);int perf_evlist__strerror_open (struct perf_evlist *evlist,int err,char *buf,size_t size); +int perf_evlist__strerror_mmap (struct perf_evlist *evlist,int err,char *buf,size_t size);static inline unsigned int perf_mmap__read_head (struct perf_mmap *mm) {