diff options
author | davidxu <davidxu@FreeBSD.org> | 2003-07-04 08:51:37 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2003-07-04 08:51:37 +0000 |
commit | edda82731592c62ca2ff35f6f3318e8af60cbbac (patch) | |
tree | a3e2deda3762e08a3ff491a551c5dc0e70d9fbac /lib | |
parent | 5a2adbe7093f3725f2d3c64092af848fb3880f9e (diff) | |
download | FreeBSD-src-edda82731592c62ca2ff35f6f3318e8af60cbbac.zip FreeBSD-src-edda82731592c62ca2ff35f6f3318e8af60cbbac.tar.gz |
Correctly lock/unlock signal lock. I must be in bad state, need to sleep.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libkse/thread/thr_sigwait.c | 3 | ||||
-rw-r--r-- | lib/libpthread/thread/thr_sigwait.c | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/libkse/thread/thr_sigwait.c b/lib/libkse/thread/thr_sigwait.c index a2411310..ac44972 100644 --- a/lib/libkse/thread/thr_sigwait.c +++ b/lib/libkse/thread/thr_sigwait.c @@ -116,7 +116,8 @@ lib_sigtimedwait(const sigset_t *set, siginfo_t *info, siginfo = curthread->siginfo[i - 1]; KSE_SCHED_UNLOCK(curthread->kse, curthread->kseg); - _kse_critical_leave(crit); + KSE_LOCK_ACQUIRE(curthread->kse, + &_thread_signal_lock); ret = i; goto OUT; } diff --git a/lib/libpthread/thread/thr_sigwait.c b/lib/libpthread/thread/thr_sigwait.c index a2411310..ac44972 100644 --- a/lib/libpthread/thread/thr_sigwait.c +++ b/lib/libpthread/thread/thr_sigwait.c @@ -116,7 +116,8 @@ lib_sigtimedwait(const sigset_t *set, siginfo_t *info, siginfo = curthread->siginfo[i - 1]; KSE_SCHED_UNLOCK(curthread->kse, curthread->kseg); - _kse_critical_leave(crit); + KSE_LOCK_ACQUIRE(curthread->kse, + &_thread_signal_lock); ret = i; goto OUT; } |