* 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:
parent
8323a37d5d
commit
929a140824
@ -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>
|
2011-08-24 Christopher Faylor <me.cygwin2011@cgf.cx>
|
||||||
|
|
||||||
* thread.cc (pthread::exit): Create dummy tls structure to hold
|
* 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 ())
|
if (this != pthread_null::get_null_pthread ())
|
||||||
threads.insert (this);
|
threads.insert (this);
|
||||||
parent_tls = &_my_tls;
|
sigprocmask (SIG_SETMASK, NULL, &parent_sigmask);
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread::~pthread ()
|
pthread::~pthread ()
|
||||||
@ -1985,7 +1985,7 @@ pthread::thread_init_wrapper (void *arg)
|
|||||||
// if thread is detached force cleanup on exit
|
// if thread is detached force cleanup on exit
|
||||||
if (thread->attr.joinable == PTHREAD_CREATE_DETACHED && thread->joiner == NULL)
|
if (thread->attr.joinable == PTHREAD_CREATE_DETACHED && thread->joiner == NULL)
|
||||||
thread->joiner = thread;
|
thread->joiner = thread;
|
||||||
_my_tls.sigmask = thread->parent_tls->sigmask;
|
_my_tls.sigmask = thread->parent_sigmask;
|
||||||
thread->mutex.unlock ();
|
thread->mutex.unlock ();
|
||||||
|
|
||||||
thread_printf ("started thread %p %p %p %p %p %p", arg, &_my_tls.local_clib,
|
thread_printf ("started thread %p %p %p %p %p %p", arg, &_my_tls.local_clib,
|
||||||
|
@ -444,7 +444,7 @@ private:
|
|||||||
DWORD thread_id;
|
DWORD thread_id;
|
||||||
__pthread_cleanup_handler *cleanup_stack;
|
__pthread_cleanup_handler *cleanup_stack;
|
||||||
pthread_mutex mutex;
|
pthread_mutex mutex;
|
||||||
_cygtls *parent_tls;
|
sigset_t parent_sigmask;
|
||||||
|
|
||||||
void suspend_except_self ();
|
void suspend_except_self ();
|
||||||
void resume ();
|
void resume ();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user