* 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:
Christopher Faylor
2005-08-25 03:12:48 +00:00
parent 5092e4a714
commit b9ebff640a
3 changed files with 35 additions and 19 deletions

View File

@ -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
{