summaryrefslogtreecommitdiff
path: root/usr/src/lib/libc/port/threads/synch.c
diff options
context:
space:
mode:
authorRoger A. Faulkner <Roger.Faulkner@Sun.COM>2009-09-24 05:17:17 -0700
committerRoger A. Faulkner <Roger.Faulkner@Sun.COM>2009-09-24 05:17:17 -0700
commite54ab87fbe2dfd9466e91d29075aa6d56c36f6ff (patch)
treeddab61e0784052a502d0c17efff5612d70a1a86a /usr/src/lib/libc/port/threads/synch.c
parent2cd7c447890e4fe78b7beb498903440e9122ee80 (diff)
downloadillumos-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.c13
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);
}