diff options
Diffstat (limited to 'lib/libthr/thread/thr_mutex.c')
-rw-r--r-- | lib/libthr/thread/thr_mutex.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/libthr/thread/thr_mutex.c b/lib/libthr/thread/thr_mutex.c index 067f0f0..7d7c455 100644 --- a/lib/libthr/thread/thr_mutex.c +++ b/lib/libthr/thread/thr_mutex.c @@ -1396,6 +1396,8 @@ get_muncontested(pthread_mutex_t mutexp, int nonblock) static void get_mcontested(pthread_mutex_t mutexp) { + int error; + _thread_critical_enter(curthread); /* @@ -1410,7 +1412,9 @@ get_mcontested(pthread_mutex_t mutexp) curthread->data.mutex = mutexp; _thread_critical_exit(curthread); _SPINUNLOCK(&mutexp->lock); - _thread_suspend(curthread, NULL); + error = _thread_suspend(curthread, NULL); + if (error != 0 && error != EAGAIN && error != EINTR) + PANIC("Cannot suspend on mutex."); _SPINLOCK(&mutexp->lock); _thread_critical_enter(curthread); |