RW_WRITE_LOCKED
else if ((wwwh = lock.rw_wwwh) & RW_WRITE_LOCKED)
const char *wl = (w & RW_WRITE_LOCKED) ? " write_locked" : "";
return ((old & RW_LOCKED) && !(old & RW_WRITE_LOCKED));
lock_busy = RW_WRITE_LOCKED;
(old & RW_WRITE_LOCKED) ? 1 : 0,
if (old & RW_WRITE_LOCKED) {
if (!(old & RW_WRITE_LOCKED)) {
if ((old & RW_WRITE_LOCKED) &&
RW_WRITE_CLAIMED : RW_WRITE_LOCKED)) {
return ((old & RW_LOCKED) && !(old & RW_WRITE_LOCKED));
return ((old & RW_WRITE_LOCKED) ? (kthread_t *)(old & RW_OWNER) : NULL);
#define RW_WRITE_LOCK(thread) ((uintptr_t)(thread) | RW_WRITE_LOCKED)
#define RW_WRITE_CLAIMED (RW_WRITE_LOCKED | RW_WRITE_WANTED)
!((tmp) & RW_WRITE_LOCKED))
(RW_OWNER | RW_WRITE_LOCKED)) == RW_WRITE_LOCK(curthread))