* exceptions.cc (handle_sigsuspend): Just sleep forever if called from non-main
thread. (sigpacket:process): Simplify logic which determines when and how a signal is masked. Don't trigger sigwait if there is a signal handler. * sigproc.cc (wait_sig): Update comment. Try to process a signal which is in the queue if it isn't queued for the target thread (this is still not right).
This commit is contained in:
@ -1097,9 +1097,10 @@ wait_sig (VOID *self)
|
||||
else
|
||||
{
|
||||
int sig = pack.si.si_signo;
|
||||
// FIXME: Not quite right when taking threads into consideration.
|
||||
// Do we need a per-thread queue?
|
||||
if (sigq.sigs[sig].si.si_signo)
|
||||
// FIXME: REALLY not right when taking threads into consideration.
|
||||
// We need a per-thread queue since each thread can have its own
|
||||
// list of blocked signals. CGF 2005-08-24
|
||||
if (sigq.sigs[sig].si.si_signo && sigq.sigs[sig].tls == pack.tls)
|
||||
sigproc_printf ("sig %d already queued", pack.si.si_signo);
|
||||
else
|
||||
{
|
||||
|
Reference in New Issue
Block a user