diff options
author | John Birrell <jb@FreeBSD.org> | 1998-08-26 20:50:42 +0000 |
---|---|---|
committer | John Birrell <jb@FreeBSD.org> | 1998-08-26 20:50:42 +0000 |
commit | 353a1595901871d337f0fc645d99a02fe0f99228 (patch) | |
tree | 81697c22c93afcec45e7db03b17e4dd782d18acd /lib/libc_r/uthread/uthread_sig.c | |
parent | 8c865c932cd69f870c1a0ded1a0d0f1a3069f6d7 (diff) | |
download | src-353a1595901871d337f0fc645d99a02fe0f99228.tar.gz src-353a1595901871d337f0fc645d99a02fe0f99228.zip |
Back out most of the last commit. It created problems with sigpause.
Notes
Notes:
svn path=/head/; revision=38563
Diffstat (limited to 'lib/libc_r/uthread/uthread_sig.c')
-rw-r--r-- | lib/libc_r/uthread/uthread_sig.c | 27 |
1 files changed, 1 insertions, 26 deletions
diff --git a/lib/libc_r/uthread/uthread_sig.c b/lib/libc_r/uthread/uthread_sig.c index 073b1ba05784..be3da9a27937 100644 --- a/lib/libc_r/uthread/uthread_sig.c +++ b/lib/libc_r/uthread/uthread_sig.c @@ -212,31 +212,6 @@ _thread_sig_handler(int sig, int code, struct sigcontext * scp) sigdelset(&pthread->sigpend,SIGCONT); } - /* - * Enter a loop to process each thread in the linked - * list that is sigwait-ing on a signal. Since POSIX - * doesn't specify which thread will get the signal - * if there are multiple waiters, we'll give it to the - * first one we find. - */ - for (pthread = _thread_link_list; pthread != NULL; - pthread = pthread->nxt) { - if ((pthread->state == PS_SIGWAIT) && - sigismember(&pthread->sigmask, sig)) { - /* Change the state of the thread to run: */ - PTHREAD_NEW_STATE(pthread,PS_RUNNING); - - /* Return the signal number: */ - pthread->signo = sig; - - /* - * Do not attempt to deliver this signal - * to other threads. - */ - return; - } - } - /* Check if the signal is not being ignored: */ if (_thread_sigact[sig - 1].sa_handler != SIG_IGN) /* @@ -284,7 +259,6 @@ _thread_signal(pthread_t pthread, int sig) case PS_RUNNING: case PS_STATE_MAX: case PS_SIGTHREAD: - case PS_SIGWAIT: case PS_SUSPENDED: /* Nothing to do here. */ break; @@ -317,6 +291,7 @@ _thread_signal(pthread_t pthread, int sig) case PS_FDW_WAIT: case PS_SLEEP_WAIT: case PS_SELECT_WAIT: + case PS_SIGWAIT: if (sig != SIGCHLD || _thread_sigact[sig - 1].sa_handler != SIG_DFL) { /* Flag the operation as interrupted: */ |