summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/exceptions.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-08-28 23:26:23 +0000
committerChristopher Faylor <me@cgf.cx>2005-08-28 23:26:23 +0000
commitc461fbf160b97eeb0903c16c5212ac80e4bbeabe (patch)
tree981d61d6a3342f32887c5960051ed28df492e3ba /winsup/cygwin/exceptions.cc
parent2241d3fb53d05760d50bd195b07681756cfbdb25 (diff)
downloadcygnal-c461fbf160b97eeb0903c16c5212ac80e4bbeabe.tar.gz
cygnal-c461fbf160b97eeb0903c16c5212ac80e4bbeabe.tar.bz2
cygnal-c461fbf160b97eeb0903c16c5212ac80e4bbeabe.zip
* 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.
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r--winsup/cygwin/exceptions.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 98539d41d..eaad588bd 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -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;
}