diff options
author | Christopher Faylor <me@cgf.cx> | 2000-02-24 02:49:44 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2000-02-24 02:49:44 +0000 |
commit | f02f1f144422e878a30befcdda6f10df4b065663 (patch) | |
tree | 805a745abe4fdbf1228cd38578e8109c1242bd83 /winsup/cygwin/init.cc | |
parent | 58dabf5040b1253b837ec0e563904d7d5254a29f (diff) | |
download | newlib-f02f1f144422e878a30befcdda6f10df4b065663.zip newlib-f02f1f144422e878a30befcdda6f10df4b065663.tar.gz newlib-f02f1f144422e878a30befcdda6f10df4b065663.tar.bz2 |
* exceptions.cc (interruptible): Change method for determining if something is
interruptible.
(call_handler): Avoid suspending a thread if it owns a mutex. Only set
signal_arrived if the thread was actually interrupted.
(events_init): Initialize module information needed by interruptible().
(sigdelayed): Don't call sig_dispatch_pending since it could screw up
* init.cc (dll_entry): Record module handle of main for use by interruptible().
(proc_subproc): Reorganize handling of terminated child so that the bulk of the
processing comes from the signal thread.
(wait_sig): Force processing of waiting threads if SIGCHLD is not processed.
* sync.cc (muto::release): Set tid == 0 after lock is released or signal
processor will be confused.
Diffstat (limited to 'winsup/cygwin/init.cc')
-rw-r--r-- | winsup/cygwin/init.cc | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/winsup/cygwin/init.cc b/winsup/cygwin/init.cc index 3a33bd1..2df5067 100644 --- a/winsup/cygwin/init.cc +++ b/winsup/cygwin/init.cc @@ -1,6 +1,6 @@ /* init.cc for WIN32. - Copyright 1996, 1997, 1998, 1999 Cygnus Solutions. + Copyright 1996, 1997, 1998, 1999, 2000 Cygnus Solutions. This file is part of Cygwin. @@ -12,26 +12,17 @@ details. */ #include <ctype.h> #include "winsup.h" -extern "C" -{ - int WINAPI dll_entry (HANDLE h, DWORD reason, void *ptr); -}; - -extern "C" void *export_malloc (unsigned int); -extern "C" void *export_realloc (void *,unsigned int); -extern "C" void *export_calloc (unsigned int,unsigned int); -extern "C" void export_free (void *); - -extern void do_global_ctors (void (**in_pfunc)(), int force); +extern HMODULE cygwin_hmodule; int NO_COPY dynamically_loaded; -int -WINAPI dll_entry (HANDLE, DWORD reason, void *static_load) +extern "C" int +WINAPI dll_entry (HANDLE h, DWORD reason, void *static_load) { switch (reason) { case DLL_PROCESS_ATTACH: + cygwin_hmodule = (HMODULE) h; dynamically_loaded = (static_load == NULL); break; case DLL_THREAD_ATTACH: |