summaryrefslogtreecommitdiffstats
path: root/lib/libthr/thread/thr_sig.c
diff options
context:
space:
mode:
authormtm <mtm@FreeBSD.org>2004-02-19 13:51:52 +0000
committermtm <mtm@FreeBSD.org>2004-02-19 13:51:52 +0000
commit92fa0888006446f19ecb94917fc328f73a181ca5 (patch)
treecad0329c8633c156cb26fae5e88c67ab7c100c11 /lib/libthr/thread/thr_sig.c
parent88ba2a7fa4a4e9ece2211b64fa3b51b55672dc6d (diff)
downloadFreeBSD-src-92fa0888006446f19ecb94917fc328f73a181ca5.zip
FreeBSD-src-92fa0888006446f19ecb94917fc328f73a181ca5.tar.gz
Implement PThreads barriers and barrier attributes.
Diffstat (limited to 'lib/libthr/thread/thr_sig.c')
-rw-r--r--lib/libthr/thread/thr_sig.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/libthr/thread/thr_sig.c b/lib/libthr/thread/thr_sig.c
index 0b8ba2b..771afbc 100644
--- a/lib/libthr/thread/thr_sig.c
+++ b/lib/libthr/thread/thr_sig.c
@@ -130,6 +130,13 @@ _thread_sig_wrapper(int sig, siginfo_t *info, void *context)
* after cleanup handling.
*/
switch (curthread->state) {
+ case PS_BARRIER_WAIT:
+ /*
+ * XXX - The thread has reached the barrier. We can't
+ * "back it away" from the barrier.
+ */
+ _thread_critical_enter(curthread);
+ break;
case PS_COND_WAIT:
/*
* Cache the address, since it will not be available
OpenPOWER on IntegriCloud