UMUTEX_CONTESTED
if ((mp->m_lock.m_owner & UMUTEX_CONTESTED) == 0)
pmutex->m_lock.m_owner = UMUTEX_CONTESTED;
&curthread->mq[TMQ_NORM_PP_PRIV], UMUTEX_CONTESTED);
&curthread->mq[TMQ_ROBUST_PP_PRIV], UMUTEX_CONTESTED);
if ((owner & ~UMUTEX_CONTESTED) == 0) {
if ((owner & ~UMUTEX_CONTESTED) == 0) {
#define PMUTEX_OWNER_ID(m) ((m)->m_lock.m_owner & ~UMUTEX_CONTESTED)
if ((owner & ~UMUTEX_CONTESTED) == 0 &&
id | UMUTEX_CONTESTED))
if ((owner & ~UMUTEX_CONTESTED) == 0 &&
id | UMUTEX_CONTESTED))
if ((owner & ~UMUTEX_CONTESTED) == 0 &&
id | UMUTEX_CONTESTED))
if ((uint32_t)mtx->m_owner == UMUTEX_CONTESTED &&
atomic_cmpset_acq_32(&mtx->m_owner, UMUTEX_CONTESTED,
id | UMUTEX_CONTESTED))
id | UMUTEX_CONTESTED))
if (__predict_false((owner & ~UMUTEX_CONTESTED) != id))
if ((owner & UMUTEX_CONTESTED) != 0) {
id | UMUTEX_CONTESTED))
if (owner == UMUTEX_CONTESTED) {
UMUTEX_CONTESTED, id | UMUTEX_CONTESTED);
if (owner == UMUTEX_CONTESTED)
old = casuword32(m, owner, owner | UMUTEX_CONTESTED);
if ((owner & ~UMUTEX_CONTESTED) != id)
if ((owner & UMUTEX_CONTESTED) == 0) {
count <= 1 ? UMUTEX_UNOWNED : UMUTEX_CONTESTED);
owner == UMUTEX_CONTESTED ||
id | UMUTEX_CONTESTED);
if (owner == UMUTEX_CONTESTED) {
UMUTEX_CONTESTED, &owner,
id | UMUTEX_CONTESTED);
MPASS(owner == UMUTEX_CONTESTED);
owner | UMUTEX_CONTESTED);
if ((owner & ~UMUTEX_CONTESTED) != id)
if ((owner & UMUTEX_CONTESTED) == 0) {
newlock |= UMUTEX_CONTESTED;
if ((owner & ~UMUTEX_CONTESTED) != 0 && owner != UMUTEX_RB_OWNERDEAD &&
error = casueword32(&m->m_owner, UMUTEX_CONTESTED, &owner,
MPASS((owner & ~UMUTEX_CONTESTED) == 0 ||
while (error == 0 && (owner & UMUTEX_CONTESTED) == 0 &&
(count > 1 || (count == 1 && (owner & ~UMUTEX_CONTESTED) != 0))) {
owner | UMUTEX_CONTESTED);
} else if (count != 0 && ((owner & ~UMUTEX_CONTESTED) == 0 ||
if (owner == UMUTEX_CONTESTED || owner == UMUTEX_RB_OWNERDEAD) {
id | UMUTEX_CONTESTED);
id | UMUTEX_CONTESTED, old_owner);
if ((owner & ~UMUTEX_CONTESTED) == id) {
UMUTEX_CONTESTED);
error = umtxq_sleep_pi(uq, pi, owner & ~UMUTEX_CONTESTED,
if ((owner & ~UMUTEX_CONTESTED) != id)
if ((owner & UMUTEX_CONTESTED) == 0) {
new_owner |= UMUTEX_CONTESTED;
rv = casueword32(&m->m_owner, UMUTEX_CONTESTED, &owner,
id | UMUTEX_CONTESTED);
MPASS(owner == UMUTEX_CONTESTED);
&owner, id | UMUTEX_CONTESTED);
} else if (owner == UMUTEX_CONTESTED) {
if ((owner & ~UMUTEX_CONTESTED) != id)
UMUTEX_CONTESTED);
rv = casueword32(&m->m_owner, UMUTEX_CONTESTED, &owner,
id | UMUTEX_CONTESTED);
MPASS(owner == UMUTEX_CONTESTED);
rv1 = suword32(&m->m_owner, UMUTEX_CONTESTED);
if ((owner & ~UMUTEX_CONTESTED) == id) {
} else if (owner == UMUTEX_CONTESTED) {
if ((m.m_owner & ~UMUTEX_CONTESTED) != td->td_tid)
#define UMUTEX_RB_OWNERDEAD (UMUTEX_CONTESTED | 0x10)
#define UMUTEX_RB_NOTRECOV (UMUTEX_CONTESTED | 0x11)