MTX_LOCKED
if ((v & MTX_LOCKED) == 0) {
if (cmp_and_exg(&mtx->lock, v, v | MTX_LOCKED) == 0) {
assert(v & ~MTX_LOCKED); /* our contesting count still there */
if ((v & MTX_LOCKED) == 0) {
if (cmp_and_exg(&mtx->lock, v, (v - 1) | MTX_LOCKED) == 0) {
assert(v & MTX_LOCKED); /* we still have it locked */
if (v == MTX_LOCKED) {
if (cmp_and_exg(&mtx->lock, MTX_LOCKED, 0) == 0) {
if (cmp_and_exg(&mtx->lock, v, v & ~MTX_LOCKED) == 0) {
assert(v & ~MTX_LOCKED);