* cygheap.cc (init_cygheap::find_tls): Add comment.

* cygtls.cc (well_known_dlls): Rephrase comment.
	(bloda_detect): New function.
	(_cygtls::call2): Call init_thread and bloda_detect for non-pthread
	threads only.
	(_cygtls::remove): Move remove_tls and remove_wq calls up to run first.
	* miscfuncs.cc (struct pthread_wrapper_arg): Rename from struct
	thread_wrapper_arg.
	(pthread_wrapper): Rename from thread_wrapper and drop "static".  Fix
	comment.  Drop call to _cygtls::remove.  Call api_fatal rather than
	ExitThread.  Explain why.
	* miscfuncs.h (pthread_wrapper): Declare pthread_wrapper.
	* thread.cc (pthread::exit): Add a FIXME comment.  Call _cygtls::remove
	before calling ExitThread.
This commit is contained in:
Corinna Vinschen
2014-11-28 12:10:12 +00:00
parent b3281dd194
commit 9d2eff6684
6 changed files with 88 additions and 57 deletions

View File

@@ -543,11 +543,13 @@ pthread::exit (void *value_ptr)
{
if (is_main_tls)
{
/* FIXME: Needs locking. */
_cygtls *dummy = (_cygtls *) malloc (sizeof (_cygtls));
*dummy = *_main_tls;
_main_tls = dummy;
_main_tls->initialized = false;
_main_tls->initialized = 0;
}
cygtls->remove (INFINITE);
ExitThread (0);
}
}