summaryrefslogtreecommitdiffstats
path: root/tools/perf/util/probe-file.h
diff options
context:
space:
mode:
authorMasami Hiramatsu <mhiramat@kernel.org>2019-05-15 07:39:05 +0200
committerSteven Rostedt (VMware) <rostedt@goodmis.org>2019-05-26 05:04:42 +0200
commit1e032f7cfa141b4424827b0ecb0ea899f84e182e (patch)
tree929053b3dc3a806529788e54d9700f556b48911b /tools/perf/util/probe-file.h
parentselftests/ftrace: Add user-memory access syntax testcase (diff)
downloadlinux-1e032f7cfa141b4424827b0ecb0ea899f84e182e.tar.xz
linux-1e032f7cfa141b4424827b0ecb0ea899f84e182e.zip
perf-probe: Add user memory access attribute support
Add user memory access attribute for kprobe event arguments. If a given 'local variable' is in user-space, User can specify memory access method by '@user' suffix. This is not only for string but also for data structure. If we access a field of data structure in user memory from kernel on some arch, it will fail. e.g. perf probe -a "sched_setscheduler param->sched_priority" This will fail to access the "param->sched_priority" because the param is __user pointer. Instead, we can now specify @user suffix for such argument. perf probe -a "sched_setscheduler param->sched_priority@user" Note that kernel memory access with "@user" must always fail on any arch. Link: http://lkml.kernel.org/r/155789874562.26965.10836126971405890891.stgit@devnote2 Acked-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Diffstat (limited to 'tools/perf/util/probe-file.h')
-rw-r--r--tools/perf/util/probe-file.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/tools/perf/util/probe-file.h b/tools/perf/util/probe-file.h
index 2a249182f2a6..986c1c94f64f 100644
--- a/tools/perf/util/probe-file.h
+++ b/tools/perf/util/probe-file.h
@@ -70,6 +70,7 @@ int probe_cache__show_all_caches(struct strfilter *filter);
bool probe_type_is_available(enum probe_type type);
bool kretprobe_offset_is_supported(void);
bool uprobe_ref_ctr_is_supported(void);
+bool user_access_is_supported(void);
#else /* ! HAVE_LIBELF_SUPPORT */
static inline struct probe_cache *probe_cache__new(const char *tgt __maybe_unused, struct nsinfo *nsi __maybe_unused)
{