Deleted Added
full compact
33c33
< * $FreeBSD: head/lib/libthr/thread/thr_mutex.c 179970 2008-06-24 07:32:12Z davidxu $
---
> * $FreeBSD: head/lib/libthr/thread/thr_mutex.c 212077 2010-09-01 03:11:21Z davidxu $
226a227
> int ret;
228c229,232
< return mutex_init(mutex, (pthread_mutexattr_t *)&pattr, calloc_cb);
---
> ret = mutex_init(mutex, (pthread_mutexattr_t *)&pattr, calloc_cb);
> if (ret == 0)
> (*mutex)->m_private = 1;
> return (ret);
321a326,327
> if (m->m_private)
> THR_CRITICAL_ENTER(curthread);
328c334,335
<
---
> if (ret && m->m_private)
> THR_CRITICAL_LEAVE(curthread);
419a427
> int ret;
420a429,430
> if (m->m_private)
> THR_CRITICAL_ENTER(curthread);
423c433,435
< return (0);
---
> ret = 0;
> } else {
> ret = mutex_lock_sleep(curthread, m, abstime);
425,426c437,439
<
< return (mutex_lock_sleep(curthread, m, abstime));
---
> if (ret && m->m_private)
> THR_CRITICAL_LEAVE(curthread);
> return (ret);
627a641,642
> if (m->m_private)
> THR_CRITICAL_LEAVE(curthread);
662a678,680
>
> if (m->m_private)
> THR_CRITICAL_LEAVE(curthread);