* cygheap.h (init_cygheap): New struct holding values that live in the Cygwin

heap.
* child_info.h (child_info): Change pointer type of cygheap to init_cygheap.
* cygheap.cc (init_cheap): Point cygheap_max after contents of cygheap.  Move
some stuff into cygheap.h.
* dir.cc (opendir): Change to use root and rootlen in cygheap rather than in
myself.
(mkdir): Change to use umask in cygheap rather than in myself.
* path.cc: Ditto, throughout.
* syscalls.cc (_open): Ditto.  Change to use umask in cygheap rather than in
myself.
(chroot): Change to allocate root dir on the cygwin heap.
(umask): Change to use umask in cygheap rather than in myself.
(cygwin_bind): Ditto.
* sigproc.cc (proc_subproc): Don't copy umask or root stuff as this happens
automatically now.
* pinfo.h (_pinfo): Migrate stuff out of here and into init_cheap.
* dcrt0.cc (dll_crt0_1): Call cygheap_init later in startup for first cygwin
process.
This commit is contained in:
Christopher Faylor
2000-11-14 05:53:32 +00:00
parent 70a11195b9
commit a4785603b8
12 changed files with 122 additions and 87 deletions

View File

@@ -654,7 +654,6 @@ dll_crt0_1 ()
threadname_init ();
debug_init ();
cygheap_init (); /* Initialize cygheap muto */
regthread ("main", GetCurrentThreadId ());
mainthread.init ("mainthread"); // For use in determining if signals
@@ -734,6 +733,9 @@ dll_crt0_1 ()
/* Initialize events. */
events_init ();
if (!child_proc_info)
cygheap_init ();
cygcwd.init ();
cygbench ("pre-forkee");
@@ -861,14 +863,6 @@ dll_crt0_1 ()
extern "C" void __stdcall
_dll_crt0 ()
{
char zeros[sizeof (fork_info->zero)] = {0};
#ifdef DEBUGGING
strace.microseconds ();
#endif
/* Set the os_being_run global. */
set_os_type ();
#ifdef DEBUGGING
char buf[80];
if (GetEnvironmentVariable ("CYGWIN_SLEEP", buf, sizeof (buf)))
@@ -878,7 +872,16 @@ _dll_crt0 ()
}
#endif
char zeros[sizeof (fork_info->zero)] = {0};
#ifdef DEBUGGING
strace.microseconds ();
#endif
/* Set the os_being_run global. */
set_os_type ();
main_environ = user_data->envptr;
*main_environ = NULL;
user_data->heapbase = user_data->heapptr = user_data->heaptop = NULL;
set_console_handler ();