diff options
author | John Baldwin <jhb@FreeBSD.org> | 2019-07-15 21:48:02 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2019-07-15 21:48:02 +0000 |
commit | 32451fb9fc71518dd5cf58a06d217eaa777e0206 (patch) | |
tree | a0db97356f121a565695a1690ee9c34645004bbb /sys/sys | |
parent | 0cc1098a1a6b8353da73ee579091d399652aa57c (diff) | |
download | src-32451fb9fc71518dd5cf58a06d217eaa777e0206.tar.gz src-32451fb9fc71518dd5cf58a06d217eaa777e0206.zip |
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
Notes:
svn path=/head/; revision=350017
Diffstat (limited to 'sys/sys')
-rw-r--r-- | sys/sys/ptrace.h | 7 |
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 { }; #endif +/* 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. */ |