From 9e28da41657f105a43a75c7998365810d23dabdc Mon Sep 17 00:00:00 2001 From: Mark Johannes Date: Thu, 13 Jun 1996 22:16:47 +0000 Subject: sigtimedwait passes initial test cases of timeout and simple satisfaction. --- c/src/exec/posix/src/psignal.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'c/src/exec/posix/src/psignal.c') diff --git a/c/src/exec/posix/src/psignal.c b/c/src/exec/posix/src/psignal.c index 7fd1901f40..99708cf51e 100644 --- a/c/src/exec/posix/src/psignal.c +++ b/c/src/exec/posix/src/psignal.c @@ -140,7 +140,7 @@ boolean _POSIX_signals_Unblock_thread( if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) { the_thread->Wait.return_code = EINTR; - the_info = (siginfo_t *) _Thread_Executing->Wait.return_argument; + the_info = (siginfo_t *) the_thread->Wait.return_argument; if ( !info ) { the_info->si_signo = signo; @@ -343,6 +343,7 @@ restart: _ISR_Enable( level ); return; } + _ISR_Enable( level ); for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) { @@ -801,7 +802,10 @@ int sigtimedwait( the_info->si_value.sival_int = 0; } + the_info->si_signo = -1; + _Thread_Disable_dispatch(); + the_thread->Wait.queue = &_POSIX_signals_Wait_queue; the_thread->Wait.return_code = EINTR; the_thread->Wait.option = *set; the_thread->Wait.return_argument = (void *) the_info; -- cgit v1.2.3