* sigproc.cc (sigalloc): Don't set SA_RESTART here.

* signal.cc (_SA_NORESTART): New flag.
(sigaction_worker): New function, derived from sigaction.  Don't set internal
flags unless called internally.
(sigaction): Use sigaction_worker.
(signal): Honor new _SA_NORESTART flag.
(siginterrupt): Set _SA_NORESTART flag appropriately.  Use sigaction_worker to
set flags.
* include/cygwin/signal.h: Define _SA_INTERNAL_MASK here.
This commit is contained in:
Christopher Faylor
2006-03-23 15:55:59 +00:00
parent 5b2daa7c97
commit dccd2abec6
4 changed files with 63 additions and 21 deletions

View File

@ -115,10 +115,6 @@ sigalloc ()
cygheap->sigs = global_sigs =
(struct sigaction *) ccalloc (HEAP_SIGS, NSIG, sizeof (struct sigaction));
global_sigs[SIGSTOP].sa_flags = SA_RESTART | SA_NODEFER;
for (int i = 0; i < NSIG; i++)
/* SA_RESTART is set to maintain BSD compatible signal behaviour by default.
This is also compatible with the behaviour of signal(2) in Linux. */
global_sigs[i].sa_flags = SA_RESTART;
}
void __stdcall