From 319ab382ef5fd326d3fab25c60ffe55702438a37 Mon Sep 17 00:00:00 2001 From: kib Date: Thu, 12 Apr 2012 10:48:43 +0000 Subject: Add thread-private flag to indicate that error value is already placed in td_errno. Flag is supposed to be used by syscalls returning EJUSTRETURN because errno was already placed into the usermode frame by a call to set_syscall_retval(9). Both ktrace and dtrace get errno value from td_errno if the flag is set. Use the flag to fix sigsuspend(2) error return ktrace records. Requested by: bde MFC after: 1 week --- sys/kern/kern_sig.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'sys/kern/kern_sig.c') diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 5460ffd..52a0c40 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -1465,6 +1465,8 @@ kern_sigsuspend(struct thread *td, sigset_t mask) mtx_unlock(&p->p_sigacts->ps_mtx); } PROC_UNLOCK(p); + td->td_errno = EINTR; + td->td_pflags |= TDP_NERRNO; return (EJUSTRETURN); } -- cgit v1.1