* exceptions.cc (set_process_mask): Set pending signals only when signals

become unmasked.
* sigproc.cc (pending_signals): Flip back to a global.
(wait_sig): Don't set pending signals when there is an armed semaphore or
signal is blocked.
* shared.cc (shared_info::initialize): Add a username parameter for user-mode
mounts.  Reorganize to try to avoid startup race.
(memory_init): Move some stuff into shared_info::initialize.
* shared_info.h (shared_info::initialize): Change declaration.
(CURR_SHARED_MAGIC): Update.
This commit is contained in:
Christopher Faylor
2003-09-03 14:15:55 +00:00
parent 73b2114815
commit 75119e9980
5 changed files with 64 additions and 38 deletions

View File

@ -963,11 +963,15 @@ set_process_mask (sigset_t newmask)
sigproc_printf ("old mask = %x, new mask = %x", myself->getsigmask (), newmask);
myself->setsigmask (newmask); // Set a new mask
mask_sync->release ();
if (oldmask != newmask)
sig_dispatch_pending ();
else
if (!(oldmask & ~newmask))
sigproc_printf ("not calling sig_dispatch_pending. sigtid %p current %p",
sigtid, GetCurrentThreadId ());
else
{
extern bool pending_signals;
pending_signals = true;
sig_dispatch_pending ();
}
return;
}