mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-21 16:26:12 +08:00
* dcrt0.cc (do_exit): Call DisableThreadLibraryCalls since we don't need to
track thread detaches. * init.cc (dll_entry): Reorganize slightly. Fix api_fatal message.
This commit is contained in:
parent
66451d9590
commit
bc63ea872c
@ -1,3 +1,9 @@
|
|||||||
|
2002-10-07 Christopher Faylor <cgf@redhat.com>
|
||||||
|
|
||||||
|
* dcrt0.cc (do_exit): Call DisableThreadLibraryCalls since we don't
|
||||||
|
need to track thread detaches.
|
||||||
|
* init.cc (dll_entry): Reorganize slightly. Fix api_fatal message.
|
||||||
|
|
||||||
2002-10-05 Christopher Faylor <cgf@redhat.com>
|
2002-10-05 Christopher Faylor <cgf@redhat.com>
|
||||||
|
|
||||||
* cygthread.cc (cygthread::stub): Very minor cleanup.
|
* cygthread.cc (cygthread::stub): Very minor cleanup.
|
||||||
|
@ -958,6 +958,10 @@ do_exit (int status)
|
|||||||
UINT n = (UINT) status;
|
UINT n = (UINT) status;
|
||||||
static int NO_COPY exit_state = 0;
|
static int NO_COPY exit_state = 0;
|
||||||
|
|
||||||
|
if (!DisableThreadLibraryCalls (cygwin_hmodule))
|
||||||
|
system_printf ("DisableThreadLibraryCalls (%p) failed, %E",
|
||||||
|
cygwin_hmodule);
|
||||||
|
|
||||||
syscall_printf ("do_exit (%d)", n);
|
syscall_printf ("do_exit (%d)", n);
|
||||||
|
|
||||||
vfork_save *vf = vfork_storage.val ();
|
vfork_save *vf = vfork_storage.val ();
|
||||||
|
@ -24,26 +24,18 @@ WINAPI dll_entry (HANDLE h, DWORD reason, void *static_load)
|
|||||||
cygwin_hmodule = (HMODULE) h;
|
cygwin_hmodule = (HMODULE) h;
|
||||||
dynamically_loaded = (static_load == NULL);
|
dynamically_loaded = (static_load == NULL);
|
||||||
break;
|
break;
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
break;
|
||||||
case DLL_THREAD_ATTACH:
|
case DLL_THREAD_ATTACH:
|
||||||
if (user_data->threadinterface)
|
if (user_data->threadinterface)
|
||||||
{
|
{
|
||||||
if (!TlsSetValue (user_data->threadinterface->reent_index,
|
if (!TlsSetValue (user_data->threadinterface->reent_index,
|
||||||
&user_data->threadinterface->reents))
|
&user_data->threadinterface->reents))
|
||||||
api_fatal ("Sig proc MT init failed\n");
|
api_fatal ("thread initialization failed");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DLL_PROCESS_DETACH:
|
|
||||||
break;
|
|
||||||
case DLL_THREAD_DETACH:
|
case DLL_THREAD_DETACH:
|
||||||
#if 0
|
/* not invoked */;
|
||||||
pthread *thisthread = (pthread *)
|
|
||||||
TlsGetValue (user_data->threadinterface->thread_self_dwTlsIndex);
|
|
||||||
if (thisthread) {
|
|
||||||
/* Some non-pthread call created this thread,
|
|
||||||
* but we need to clean it up */
|
|
||||||
thisthread->exit (0);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user