diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-09-30 13:12:36 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-09-30 13:36:39 -0400 |
commit | a3460a59747cfddfa7be4758e5ef08bf5d751d59 (patch) | |
tree | 73395c8755c27c82b867a210bacba7e585c0839c | |
parent | 2aa3a7f8660355c3dddead17e224545c1a3d5a5f (diff) |
new helper: current_pt_regs()
Normally (and that's the default) it's just task_pt_regs(current).
However, if an architecture can optimize that, it can do so by
making a macro of its own available from asm/ptrace.h. More
importantly, some architectures have task_pt_regs() working only
for traced tasks blocked on signal delivery. current_pt_regs()
needs to work for *all* processes, so before those architectures
start using stuff relying on current_pt_regs() they'll need a
properly working variant.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | include/linux/ptrace.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h index 597e4fdb97fe..07fd922d6928 100644 --- a/include/linux/ptrace.h +++ b/include/linux/ptrace.h | |||
@@ -403,6 +403,10 @@ static inline void user_single_step_siginfo(struct task_struct *tsk, | |||
403 | #define arch_ptrace_stop(code, info) do { } while (0) | 403 | #define arch_ptrace_stop(code, info) do { } while (0) |
404 | #endif | 404 | #endif |
405 | 405 | ||
406 | #ifndef current_pt_regs | ||
407 | #define current_pt_regs() task_pt_regs(current) | ||
408 | #endif | ||
409 | |||
406 | extern int task_current_syscall(struct task_struct *target, long *callno, | 410 | extern int task_current_syscall(struct task_struct *target, long *callno, |
407 | unsigned long args[6], unsigned int maxargs, | 411 | unsigned long args[6], unsigned int maxargs, |
408 | unsigned long *sp, unsigned long *pc); | 412 | unsigned long *sp, unsigned long *pc); |