diff options
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 @@   */  #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)  {  |