* cygerrno.h (set_errno): Set global errno whenever setting thread specific

version.
* debug.cc (__set_errno): Ditto.
* exceptions.cc (handle_sigsuspend): Remove spurious sig_dispatch_pending call.
(set_signal_mask): When there seem to be pending signals to dispatch, tell
signal_dispatch_pending/sig_send not to specifically call any handlers.
* sigproc.h (sig_dispatch_pending): Change declaration to void.
* sigproc.cc (sig_dispatch_pending): Change definition to void.  Take an
argument to determine whether to tell sig_send to wait for handler to be
called.
* sigproc.cc (sig_send): Don't call signal handler when sig == __SIGFLUSHFAST.
(wait_sig): Honor __SIGFLUSHFAST.  Guard against sigpacket::process nuking
si_signo.
* sigproc.h (__SIGFLUSHFAST): Define new special signal.
(sig_dispatch_pending): Change declaration to void.  Take optional boolean
argument.
* fork.cc (vfork): Add debugging output.
This commit is contained in:
Christopher Faylor
2004-02-01 18:29:12 +00:00
parent f6565cd1a6
commit 9e1ad59de6
7 changed files with 54 additions and 22 deletions

View File

@@ -1,6 +1,6 @@
/* sigproc.h
Copyright 1997, 1998, 2000, 2001, 2002, 2003 Red Hat, Inc.
Copyright 1997, 1998, 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
This file is part of Cygwin.
@@ -23,7 +23,8 @@ enum
__SIGSTRACE = -(NSIG + 2),
__SIGCOMMUNE = -(NSIG + 3),
__SIGPENDING = -(NSIG + 4),
__SIGDELETE = -(NSIG + 5)
__SIGDELETE = -(NSIG + 5),
__SIGFLUSHFAST = -(NSIG + 6)
};
#endif
@@ -67,7 +68,7 @@ extern HANDLE signal_arrived;
extern HANDLE sigCONT;
bool __stdcall my_parent_is_alive ();
int __stdcall sig_dispatch_pending ();
void __stdcall sig_dispatch_pending (bool fast = false);
#ifdef _PINFO_H
extern "C" void __stdcall set_signal_mask (sigset_t newmask, sigset_t = myself->getsigmask ());
#endif