summaryrefslogtreecommitdiffstats
path: root/tools/perf/arch/common.c
diff options
context:
space:
mode:
authorAdrian Hunter <adrian.hunter@intel.com>2018-11-06 22:07:10 +0100
committerArnaldo Carvalho de Melo <acme@redhat.com>2018-12-17 18:54:07 +0100
commitec1891afae740be581ecf5abc8bda74c4549203f (patch)
treec149a4b9797127900933cab6b20b09841660e510 /tools/perf/arch/common.c
parentperf env: Also consider env->arch == NULL as local operation (diff)
downloadlinux-ec1891afae740be581ecf5abc8bda74c4549203f.tar.xz
linux-ec1891afae740be581ecf5abc8bda74c4549203f.zip
perf machine: Record if a arch has a single user/kernel address space
Some architectures have a single address space for kernel and user addresses, which makes it possible to determine if an address is in kernel space or user space. Some don't, e.g.: sparc. Cache that info in perf_env so that, for instance, code needing to fallback failed symbol lookups at the kernel space in single address space arches can lookup at userspace. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: David S. Miller <davem@davemloft.net> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Leo Yan <leo.yan@linaro.org> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: stable@vger.kernel.org # 4.19 Link: http://lkml.kernel.org/r/20181106210712.12098-2-adrian.hunter@intel.com [ split from a larger patch ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/arch/common.c')
-rw-r--r--tools/perf/arch/common.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/tools/perf/arch/common.c b/tools/perf/arch/common.c
index 82657c01a3b8..5f69fd0b745a 100644
--- a/tools/perf/arch/common.c
+++ b/tools/perf/arch/common.c
@@ -200,3 +200,13 @@ int perf_env__lookup_objdump(struct perf_env *env, const char **path)
return perf_env__lookup_binutils_path(env, "objdump", path);
}
+
+/*
+ * Some architectures have a single address space for kernel and user addresses,
+ * which makes it possible to determine if an address is in kernel space or user
+ * space.
+ */
+bool perf_env__single_address_space(struct perf_env *env)
+{
+ return strcmp(perf_env__arch(env), "sparc");
+}