aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/perf_regs.h
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@redhat.com>2012-08-07 09:20:37 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2012-08-10 10:31:26 -0400
commit4018994f3d8785275ef0e7391b75c3462c029e56 (patch)
tree661b5c488977c5150eb9d1ac4cec944309c83a16 /include/linux/perf_regs.h
parentc5e63197db519bae1c33e41ea0342a50f39e7a93 (diff)
perf: Add ability to attach user level registers dump to sample
Introducing PERF_SAMPLE_REGS_USER sample type bit to trigger the dump of user level registers on sample. Registers we want to dump are specified by sample_regs_user bitmask. Only user level registers are dumped at the moment. Meaning the register values of the user space context as it was before the user entered the kernel for whatever reason (syscall, irq, exception, or a PMI happening in userspace). The layout of the sample_regs_user bitmap is described in asm/perf_regs.h for archs that support register dump. This is going to be useful to bring Dwarf CFI based stack unwinding on top of samples. Original-patch-by: Frederic Weisbecker <fweisbec@gmail.com> [ Dump registers ABI specification. ] Signed-off-by: Jiri Olsa <jolsa@redhat.com> Suggested-by: Stephane Eranian <eranian@google.com> Cc: "Frank Ch. Eigler" <fche@redhat.com> Cc: Arun Sharma <asharma@fb.com> Cc: Benjamin Redelings <benjamin.redelings@nescent.org> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: Cyrill Gorcunov <gorcunov@openvz.org> Cc: Frank Ch. Eigler <fche@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Robert Richter <robert.richter@amd.com> Cc: Stephane Eranian <eranian@google.com> Cc: Tom Zanussi <tzanussi@gmail.com> Cc: Ulrich Drepper <drepper@gmail.com> Link: http://lkml.kernel.org/r/1344345647-11536-3-git-send-email-jolsa@redhat.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'include/linux/perf_regs.h')
-rw-r--r--include/linux/perf_regs.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/perf_regs.h b/include/linux/perf_regs.h
index a2f1a98f7839..3c73d5fe18be 100644
--- a/include/linux/perf_regs.h
+++ b/include/linux/perf_regs.h
@@ -5,6 +5,7 @@
5#include <asm/perf_regs.h> 5#include <asm/perf_regs.h>
6u64 perf_reg_value(struct pt_regs *regs, int idx); 6u64 perf_reg_value(struct pt_regs *regs, int idx);
7int perf_reg_validate(u64 mask); 7int perf_reg_validate(u64 mask);
8u64 perf_reg_abi(struct task_struct *task);
8#else 9#else
9static inline u64 perf_reg_value(struct pt_regs *regs, int idx) 10static inline u64 perf_reg_value(struct pt_regs *regs, int idx)
10{ 11{
@@ -15,5 +16,10 @@ static inline int perf_reg_validate(u64 mask)
15{ 16{
16 return mask ? -ENOSYS : 0; 17 return mask ? -ENOSYS : 0;
17} 18}
19
20static inline u64 perf_reg_abi(struct task_struct *task)
21{
22 return PERF_SAMPLE_REGS_ABI_NONE;
23}
18#endif /* CONFIG_HAVE_PERF_REGS */ 24#endif /* CONFIG_HAVE_PERF_REGS */
19#endif /* _LINUX_PERF_REGS_H */ 25#endif /* _LINUX_PERF_REGS_H */