* cygheap.h (init_cygheap): Move heap pointers here.
* include/sys/cygwin.h (perprocess): Remove heap pointers. * dcrt0.cc (__cygwin_user_data): Reflect obsolete perprocess stuff. (_dll_crt0): Don't initialize heap pointers. (cygwin_dll_init): Ditto. (release_upto): Use heap pointers from cygheap. * heap.h: Ditto. * fork.cc (fork_parent): Ditto. Don't set heap pointers in ch. (fork_child): Remove obsolete sigproc_fixup_after_fork. * shared.cc (memory_init): Reorganize so that cygheap initialization is called prior to regular heap since regular heap uses cygheap now. * sigproc.cc (proc_subproc): Eliminate zombies allocation. (sigproc_init): Move zombies alloation here. Don't free up array on fork, just reuse it. (sigproc_fixup_after_fork): Eliminate. * sigproc.h: Ditto. * include/cygwin/version.h: Reflect change to perprocess structure.
This commit is contained in:
@@ -303,8 +303,6 @@ proc_subproc (DWORD what, DWORD val)
|
||||
|
||||
int thiszombie;
|
||||
thiszombie = nzombies;
|
||||
if (!zombies)
|
||||
zombies = (pinfo *) malloc (sizeof (pinfo) * ZOMBIEMAX);
|
||||
zombies[nzombies] = pchildren[val]; // Add to zombie array
|
||||
zombies[nzombies++]->process_state = PID_ZOMBIE;// Walking dead
|
||||
|
||||
@@ -545,6 +543,11 @@ sig_dispatch_pending (int justwake)
|
||||
void __stdcall
|
||||
sigproc_init ()
|
||||
{
|
||||
if (!zombies)
|
||||
zombies = (pinfo *) malloc (sizeof (pinfo) * ZOMBIEMAX);
|
||||
else
|
||||
nzombies = 0;
|
||||
|
||||
wait_sig_inited = CreateEvent (&sec_none_nih, TRUE, FALSE, NULL);
|
||||
ProtectHandle (wait_sig_inited);
|
||||
|
||||
@@ -1304,17 +1307,6 @@ wait_subproc (VOID *)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __stdcall
|
||||
sigproc_fixup_after_fork ()
|
||||
{
|
||||
if (zombies)
|
||||
{
|
||||
free (zombies);
|
||||
nzombies = 0;
|
||||
zombies = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
/* Provide a stack frame when calling WaitFor* functions */
|
||||
|
||||
|
Reference in New Issue
Block a user