diff options
author | Roger A. Faulkner <Roger.Faulkner@Sun.COM> | 2009-09-24 05:17:17 -0700 |
---|---|---|
committer | Roger A. Faulkner <Roger.Faulkner@Sun.COM> | 2009-09-24 05:17:17 -0700 |
commit | e54ab87fbe2dfd9466e91d29075aa6d56c36f6ff (patch) | |
tree | ddab61e0784052a502d0c17efff5612d70a1a86a /usr/src/lib/libc/port/threads/synch.c | |
parent | 2cd7c447890e4fe78b7beb498903440e9122ee80 (diff) | |
download | illumos-joyent-e54ab87fbe2dfd9466e91d29075aa6d56c36f6ff.tar.gz |
6881066 sporadic hang of thr_suspend
Diffstat (limited to 'usr/src/lib/libc/port/threads/synch.c')
-rw-r--r-- | usr/src/lib/libc/port/threads/synch.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/usr/src/lib/libc/port/threads/synch.c b/usr/src/lib/libc/port/threads/synch.c index 91b4e960f8..9fac80b0f8 100644 --- a/usr/src/lib/libc/port/threads/synch.c +++ b/usr/src/lib/libc/port/threads/synch.c @@ -2670,25 +2670,30 @@ lmutex_unlock(mutex_t *mp) void sig_mutex_lock(mutex_t *mp) { - sigoff(curthread); + ulwp_t *self = curthread; + + sigoff(self); (void) mutex_lock(mp); } void sig_mutex_unlock(mutex_t *mp) { + ulwp_t *self = curthread; + (void) mutex_unlock(mp); - sigon(curthread); + sigon(self); } int sig_mutex_trylock(mutex_t *mp) { + ulwp_t *self = curthread; int error; - sigoff(curthread); + sigoff(self); if ((error = mutex_trylock(mp)) != 0) - sigon(curthread); + sigon(self); return (error); } |