diff options
author | jeff <jeff@FreeBSD.org> | 2003-04-01 22:41:41 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2003-04-01 22:41:41 +0000 |
commit | 4b5aacdfc871360134c035a6c5e6010072f105a6 (patch) | |
tree | 57e53bd64ff482e07d9e7557a1aa98cbe03389c6 /lib/libthr/thread/thr_join.c | |
parent | 886873a91d65f6b2ba6dd2c7bea20bf42088c8f5 (diff) | |
download | FreeBSD-src-4b5aacdfc871360134c035a6c5e6010072f105a6.zip FreeBSD-src-4b5aacdfc871360134c035a6c5e6010072f105a6.tar.gz |
- Don't drop and reacquire giant in thread_suspend(). Change callers to do
this manually. This will facilitate the unrolling of giant.
- Don't allow giant to recurse anymore. This should never happen.
Diffstat (limited to 'lib/libthr/thread/thr_join.c')
-rw-r--r-- | lib/libthr/thread/thr_join.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/libthr/thread/thr_join.c b/lib/libthr/thread/thr_join.c index e22408c..ab46f0a 100644 --- a/lib/libthr/thread/thr_join.c +++ b/lib/libthr/thread/thr_join.c @@ -124,7 +124,9 @@ _pthread_join(pthread_t pthread, void **thread_return) while (curthread->join_status.thread == pthread) { PTHREAD_SET_STATE(curthread, PS_JOIN); /* Wait for our signal to wake up. */ + GIANT_UNLOCK(curthread); _thread_suspend(curthread, NULL); + GIANT_LOCK(curthread); } /* |