* thread.cc (pthread::pthread): Drop setting parent_tls. Call
sigprocmask to copy parent thread signal mask into new parent_sigmask member. (pthread::thread_init_wrapper): Copy _my_tls.sigmask from new parent_sigmask member. * thread.h (class pthread): Drop parent_tls. Add parent_sigmask.
This commit is contained in:
		| @@ -1,3 +1,12 @@ | ||||
| 2011-08-24  Corinna Vinschen  <corinna@vinschen.de> | ||||
|  | ||||
| 	* thread.cc (pthread::pthread): Drop setting parent_tls.  Call | ||||
| 	sigprocmask to copy parent thread signal mask into new parent_sigmask | ||||
| 	member. | ||||
| 	(pthread::thread_init_wrapper): Copy _my_tls.sigmask from new | ||||
| 	parent_sigmask member. | ||||
| 	* thread.h (class pthread): Drop parent_tls.  Add parent_sigmask. | ||||
|  | ||||
| 2011-08-24  Christopher Faylor  <me.cygwin2011@cgf.cx> | ||||
|  | ||||
| 	* thread.cc (pthread::exit): Create dummy tls structure to hold | ||||
|   | ||||
| @@ -382,7 +382,7 @@ pthread::pthread ():verifyable_object (PTHREAD_MAGIC), win32_obj_id (0), | ||||
| { | ||||
|   if (this != pthread_null::get_null_pthread ()) | ||||
|     threads.insert (this); | ||||
|   parent_tls = &_my_tls; | ||||
|   sigprocmask (SIG_SETMASK, NULL, &parent_sigmask); | ||||
| } | ||||
|  | ||||
| pthread::~pthread () | ||||
| @@ -1985,7 +1985,7 @@ pthread::thread_init_wrapper (void *arg) | ||||
|   // if thread is detached force cleanup on exit | ||||
|   if (thread->attr.joinable == PTHREAD_CREATE_DETACHED && thread->joiner == NULL) | ||||
|     thread->joiner = thread; | ||||
|   _my_tls.sigmask = thread->parent_tls->sigmask; | ||||
|   _my_tls.sigmask = thread->parent_sigmask; | ||||
|   thread->mutex.unlock (); | ||||
|  | ||||
|   thread_printf ("started thread %p %p %p %p %p %p", arg, &_my_tls.local_clib, | ||||
|   | ||||
| @@ -444,7 +444,7 @@ private: | ||||
|   DWORD thread_id; | ||||
|   __pthread_cleanup_handler *cleanup_stack; | ||||
|   pthread_mutex mutex; | ||||
|   _cygtls *parent_tls; | ||||
|   sigset_t parent_sigmask; | ||||
|  | ||||
|   void suspend_except_self (); | ||||
|   void resume (); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user