aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrian Hunter <adrian.hunter@intel.com>2013-12-11 07:36:23 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-12-13 08:30:20 -0500
commit1a47245d2f3bf6276c95cd37901b562962d6ae47 (patch)
tree0df8a19d1170beaea788b629c7cff52201a80cae
parentc506c96b61fa96c9a52ad4d25e895e45c1692650 (diff)
perf tools: Add perf_event_paranoid()
Add a function to return the value of /proc/sys/kernel/perf_event_paranoid. This will be used to determine default values for mmap size because perf is not subject to mmap limits when perf_event_paranoid is less than zero. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Namhyung Kim <namhyung@gmail.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1386765443-26966-12-git-send-email-alexander.shishkin@linux.intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/perf/util/evlist.c3
-rw-r--r--tools/perf/util/util.c19
-rw-r--r--tools/perf/util/util.h1
3 files changed, 21 insertions, 2 deletions
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index af250556b33f..2eb7378e4c40 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -1191,8 +1191,7 @@ int perf_evlist__strerror_open(struct perf_evlist *evlist __maybe_unused,
1191 "Error:\t%s.\n" 1191 "Error:\t%s.\n"
1192 "Hint:\tCheck /proc/sys/kernel/perf_event_paranoid setting.", emsg); 1192 "Hint:\tCheck /proc/sys/kernel/perf_event_paranoid setting.", emsg);
1193 1193
1194 if (filename__read_int("/proc/sys/kernel/perf_event_paranoid", &value)) 1194 value = perf_event_paranoid();
1195 break;
1196 1195
1197 printed += scnprintf(buf + printed, size - printed, "\nHint:\t"); 1196 printed += scnprintf(buf + printed, size - printed, "\nHint:\t");
1198 1197
diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c
index 4a57609c0b43..8f63dba212d7 100644
--- a/tools/perf/util/util.c
+++ b/tools/perf/util/util.c
@@ -1,5 +1,6 @@
1#include "../perf.h" 1#include "../perf.h"
2#include "util.h" 2#include "util.h"
3#include "fs.h"
3#include <sys/mman.h> 4#include <sys/mman.h>
4#ifdef HAVE_BACKTRACE_SUPPORT 5#ifdef HAVE_BACKTRACE_SUPPORT
5#include <execinfo.h> 6#include <execinfo.h>
@@ -8,6 +9,7 @@
8#include <stdlib.h> 9#include <stdlib.h>
9#include <string.h> 10#include <string.h>
10#include <errno.h> 11#include <errno.h>
12#include <limits.h>
11#include <linux/kernel.h> 13#include <linux/kernel.h>
12 14
13/* 15/*
@@ -496,3 +498,20 @@ const char *get_filename_for_perf_kvm(void)
496 498
497 return filename; 499 return filename;
498} 500}
501
502int perf_event_paranoid(void)
503{
504 char path[PATH_MAX];
505 const char *procfs = procfs__mountpoint();
506 int value;
507
508 if (!procfs)
509 return INT_MAX;
510
511 scnprintf(path, PATH_MAX, "%s/sys/kernel/perf_event_paranoid", procfs);
512
513 if (filename__read_int(path, &value))
514 return INT_MAX;
515
516 return value;
517}
diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h
index 0171213d1d4d..1e7d4136cc82 100644
--- a/tools/perf/util/util.h
+++ b/tools/perf/util/util.h
@@ -321,6 +321,7 @@ void free_srcline(char *srcline);
321 321
322int filename__read_int(const char *filename, int *value); 322int filename__read_int(const char *filename, int *value);
323int filename__read_str(const char *filename, char **buf, size_t *sizep); 323int filename__read_str(const char *filename, char **buf, size_t *sizep);
324int perf_event_paranoid(void);
324 325
325const char *get_filename_for_perf_kvm(void); 326const char *get_filename_for_perf_kvm(void);
326#endif /* GIT_COMPAT_UTIL_H */ 327#endif /* GIT_COMPAT_UTIL_H */