m_owner
ASSERT(mp->m_owner == _curthread());
mp->m_owner = _KTHREAD_INVALID;
mp->m_owner = _curthread();
ASSERT(mp->m_owner == _curthread());
mp->m_owner = _KTHREAD_INVALID;
mp->m_owner = _curthread();
mp->m_owner = _KTHREAD_INVALID;
mp->m_owner = _KTHREAD_INVALID;
VERIFY(mp->m_owner != t);
mp->m_owner = t;
mp->m_owner = _curthread();
ASSERT(mp->m_owner == _curthread());
mp->m_owner = _KTHREAD_INVALID;
return (mp->m_owner);
return (t == mp->m_owner);
void *m_owner;
if (lp->m_owner == 0 && !MUTEX_HAS_WAITERS(lp)) {
(lp)->m_owner = ((uintptr_t)curthread | MUTEX_DEAD)
#define MUTEX_OWNER(lp) ((kthread_id_t)((lp)->m_owner & MUTEX_THREAD))
while ((old = (lp)->m_owner) != 0 && \
casip(&(lp)->m_owner, old, old | MUTEX_WAITERS) != old) \
#define MUTEX_HAS_WAITERS(lp) ((lp)->m_owner & MUTEX_WAITERS)
#define MUTEX_CLEAR_LOCK_AND_WAITERS(lp) (lp)->m_owner = 0
#define MUTEX_TYPE_ADAPTIVE(lp) (((lp)->m_owner & MUTEX_DEAD) == 0)
#define MUTEX_OWNER(lp) ((kthread_id_t)((lp)->m_owner << PTR24_LSB))
(lp)->m_waiters = 0, (lp)->m_owner = 0
#define MUTEX_OWNER(lp) ((kthread_id_t)((lp)->m_owner & MUTEX_THREAD))
while ((old = (lp)->m_owner) != 0 && \
casip(&(lp)->m_owner, old, old | MUTEX_WAITERS) != old) \
#define MUTEX_HAS_WAITERS(lp) ((lp)->m_owner & MUTEX_WAITERS)
#define MUTEX_CLEAR_LOCK_AND_WAITERS(lp) (lp)->m_owner = 0
#define MUTEX_TYPE_ADAPTIVE(lp) (((lp)->m_owner & MUTEX_DEAD) == 0)
(lp)->m_owner = ((uintptr_t)curthread | MUTEX_DEAD)