path: root/sys/sys
diff options
authorJohn Baldwin <jhb@FreeBSD.org>2019-07-15 21:48:02 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2019-07-15 21:48:02 +0000
commit32451fb9fc71518dd5cf58a06d217eaa777e0206 (patch)
treea0db97356f121a565695a1690ee9c34645004bbb /sys/sys
parent0cc1098a1a6b8353da73ee579091d399652aa57c (diff)
Add ptrace op PT_GET_SC_RET.
This ptrace operation returns a structure containing the error and return values from the current system call. It is only valid when a thread is stopped during a system call exit (PL_FLAG_SCX is set). The sr_error member holds the error value from the system call. Note that this error value is the native FreeBSD error value that has _not_ been translated to an ABI-specific error value similar to the values logged to ktrace. If sr_error is zero, then the return values of the system call will be set in sr_retval[0] and sr_retval[1]. Reviewed by: kib MFC after: 1 month Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D20901
Notes: svn path=/head/; revision=350017
Diffstat (limited to 'sys/sys')
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/sys/ptrace.h b/sys/sys/ptrace.h
index e41f7a3ef024..1ee42318e57e 100644
--- a/sys/sys/ptrace.h
+++ b/sys/sys/ptrace.h
@@ -72,6 +72,7 @@
#define PT_SET_EVENT_MASK 26 /* set mask of optional events */
#define PT_GET_SC_ARGS 27 /* fetch syscall args */
+#define PT_GET_SC_RET 28 /* fetch syscall results */
#define PT_GETREGS 33 /* get general-purpose registers */
#define PT_SETREGS 34 /* set general-purpose registers */
@@ -155,6 +156,12 @@ struct ptrace_lwpinfo32 {
+/* Argument structure for PT_GET_SC_RET. */
+struct ptrace_sc_ret {
+ register_t sr_retval[2]; /* Only valid if sr_error == 0. */
+ int sr_error;
/* Argument structure for PT_VM_ENTRY. */
struct ptrace_vm_entry {
int pve_entry; /* Entry number used for iteration. */