* child_info.h: Bump magic number.

(class child_info): Add an element.
* cygheap.cc (init_cheap): Allocate cygwin heap in shared memory area.
(cygheap_fixup_in_child): Map cygwin heap, passed from parent via shared memory
into correct address.
(cygheap_setup_for_child): New function.
* cygheap.h: Declare new functions.
* dcrt0.cc (dll_crt0_1): Accomodate new cygheap_fixup_in_child arguments.
Avoid protecting subproc_ready unless it is spawn/nowait.
* fork.cc (fork_parent): Use new cygheap_setup_for_child function to setup
cygwin heap info.  Close passed cygheap shared memory handle.
* spawn.cc (spawn_guts): Ditto.  Also, reorganize to avoid synchronization
between parent and child in non-P_OVERLAY case.
* sigproc.cc (wait_sig): Only signal subproc_ready when execing.
This commit is contained in:
Christopher Faylor
2001-07-17 03:41:52 +00:00
parent 30640285c3
commit 5457dfcb81
9 changed files with 180 additions and 132 deletions

View File

@ -442,8 +442,7 @@ fork_parent (HANDLE& hParent, dll *&first_dll,
RevertToSelf ();
ch.parent = hParent;
ch.cygheap = cygheap;
ch.cygheap_max = cygheap_max;
cygheap_setup_for_child (&ch);
#ifdef DEBUGGING
if (npid_max)
{
@ -477,6 +476,7 @@ out:
&pi);
CloseHandle (hParent);
ForceCloseHandle1 (ch.cygheap_h, passed_cygheap_h);
if (!rc)
{