diff options
author | Christopher Faylor <me@cgf.cx> | 2002-10-19 00:57:06 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-10-19 00:57:06 +0000 |
commit | a85860b5c868d7c3865e5d912916e51a55014ac7 (patch) | |
tree | a7f99789423abe1e850561f21ac783290c9d0195 /winsup/cygwin/fork.cc | |
parent | 824166e620dcffbd338795d6944281bc022e9ecf (diff) | |
download | newlib-a85860b5c868d7c3865e5d912916e51a55014ac7.zip newlib-a85860b5c868d7c3865e5d912916e51a55014ac7.tar.gz newlib-a85860b5c868d7c3865e5d912916e51a55014ac7.tar.bz2 |
* dcrt0.cc (dll_crt0_1): Initialize cygwin threads here only when not forking.
* fork.cc (fork_child): Initialize cygwin thread later in process to avoid
allocating memory for thread stacks.
* shared.cc (open_shared): Issue warning if NT and shared segment is relocated.
Diffstat (limited to 'winsup/cygwin/fork.cc')
-rw-r--r-- | winsup/cygwin/fork.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc index 0d57bc4..729de1d 100644 --- a/winsup/cygwin/fork.cc +++ b/winsup/cygwin/fork.cc @@ -30,6 +30,7 @@ details. */ #include "sync.h" #include "shared_info.h" #include "cygmalloc.h" +#include "cygthread.h" #ifdef DEBUGGING static int npid; @@ -284,7 +285,6 @@ fork_child (HANDLE& hParent, dll *&first_dll, bool& load_dlls) api_fatal ("recreate_mmaps_after_fork_failed"); pinfo_fixup_after_fork (); - signal_fixup_after_fork (); MALLOC_CHECK; @@ -307,6 +307,9 @@ fork_child (HANDLE& hParent, dll *&first_dll, bool& load_dlls) if (fixup_shms_after_fork ()) api_fatal ("recreate_shm areas after fork failed"); + cygthread::init (); + signal_fixup_after_fork (); + /* Set thread local stuff to zero. Under Windows 95/98 this is sometimes non-zero, for some reason. FIXME: There is a memory leak here after a fork. */ |