* cygtls.h (__ljfault): Declare.

(_cygtls::return_from_fault): Use __ljfault.
* exceptions.cc (set_signal_mask): Revert previous checkin.
* gendef (__sjfault): Split out into a separate function which doesn't bother
with any special signal locking.  routines.
(_ljfault): Return from a __sjfault without bothering with signals.
This commit is contained in:
Christopher Faylor
2005-08-28 23:26:23 +00:00
parent 2241d3fb53
commit c461fbf160
4 changed files with 82 additions and 4 deletions

View File

@ -978,17 +978,19 @@ set_process_mask_delta ()
extern "C" void __stdcall
set_signal_mask (sigset_t newmask, sigset_t& oldmask)
{
if (GetCurrentThreadId () == sigtid)
small_printf ("********* waiting in signal thread\n");
mask_sync.acquire (INFINITE);
newmask &= ~SIG_NONMASKABLE;
sigset_t mask_bits = oldmask & ~newmask;
sigproc_printf ("oldmask %p, newmask %p, mask_bits %p", oldmask, newmask,
mask_bits);
oldmask = newmask;
mask_sync.release ();
if (mask_bits)
sig_dispatch_pending (true);
else
sigproc_printf ("not calling sig_dispatch_pending");
mask_sync.release ();
return;
}