Back out most of the last commit. It created problems with sigpause.

This commit is contained in:
John Birrell 1998-08-26 20:50:42 +00:00
parent 8c865c932c
commit 353a159590
3 changed files with 3 additions and 78 deletions

View File

@ -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: */

View File

@ -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: */

View File

@ -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: */