diff options
author | davidxu <davidxu@FreeBSD.org> | 2008-03-04 04:28:59 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2008-03-04 04:28:59 +0000 |
commit | 8ead1ed2f9013c5815c4c1db7a3cfe8ba641cf58 (patch) | |
tree | 5a3c84004ac145a232bef7db666578efa5dd21e8 /lib/libthr/thread/thr_private.h | |
parent | e0d98325b4da9160dd1e0041c794b99e37ddb7df (diff) | |
download | FreeBSD-src-8ead1ed2f9013c5815c4c1db7a3cfe8ba641cf58.zip FreeBSD-src-8ead1ed2f9013c5815c4c1db7a3cfe8ba641cf58.tar.gz |
If a new thread is created, it inherits current thread's signal masks,
however if current thread is executing cancellation handler, signal
SIGCANCEL may have already been blocked, this is unexpected, unblock the
signal in new thread if this happens.
MFC after: 1 week
Diffstat (limited to 'lib/libthr/thread/thr_private.h')
-rw-r--r-- | lib/libthr/thread/thr_private.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/libthr/thread/thr_private.h b/lib/libthr/thread/thr_private.h index 4db3b7a..ff9f52b 100644 --- a/lib/libthr/thread/thr_private.h +++ b/lib/libthr/thread/thr_private.h @@ -378,6 +378,12 @@ struct pthread { /* Thread temporary signal mask. */ sigset_t sigmask; + /* Thread is in SIGCANCEL handler. */ + int in_sigcancel_handler; + + /* New thread should unblock SIGCANCEL. */ + int unblock_sigcancel; + /* Thread state: */ enum pthread_state state; |