* exceptions.cc (sigsave): Copy on fork so that we can restore correct behavior

in forked process.
(interruptible): Flag as interruptible when running in main process module.
(interrupt_setup): Save return address and address of return address.
(signal_fixup_after_fork): New function.  Uses above two values to restore
proper behavior to forked process.
(interrupt_on_return): Pass return address address to interupt_setup.
(interrupt_now): Pass NULL for return address address to interrupt_setup.
* fork.cc (fork): Call signal_fixup_after_fork.
* shared.h: Lint cleanups.
* winsup.h: Ditto.
This commit is contained in:
Christopher Faylor
2000-04-08 04:13:12 +00:00
parent 65c0e6e68c
commit 0cda2f4609
6 changed files with 64 additions and 38 deletions

View File

@@ -17,7 +17,7 @@ details. */
#include "winsup.h"
#include "dll_init.h"
DWORD chunksize = 0;
DWORD NO_COPY chunksize = 0;
/* Timeout to wait for child to start, parent to init child, etc. */
/* FIXME: Once things stabilize, bump up to a few minutes. */
#define FORK_WAIT_TIMEOUT (300 * 1000) /* 300 seconds */
@@ -516,6 +516,7 @@ fork ()
MALLOC_CHECK;
dtable.fixup_after_fork (hParent);
signal_fixup_after_fork ();
ForceCloseHandle (hParent);
MALLOC_CHECK;