SE_EWANTED
#define PAGE_LOCKED(pp) (((pp)->p_selock & ~SE_EWANTED) != 0)
#define PAGE_SHARED(pp) (((pp)->p_selock & ~SE_EWANTED) > 0)
#define SE_WRITER (((selock_t)(ulong_t)curthread | INT_MIN) & ~SE_EWANTED)
if (!(es & SE_EXCL_WANTED) && (pp->p_selock & SE_EWANTED)) {
} else if ((pp->p_selock & ~SE_EWANTED) == 0) {
pp->p_selock |= SE_EWANTED;
if ((pp->p_selock & SE_EWANTED) == 0) {
if ((pp->p_selock & ~SE_EWANTED) == SE_DELETED) {
pp->p_selock &= ~SE_EWANTED;
if ((old & SE_EWANTED) == 0) {
if (!(old & SE_EWANTED) || (es & SE_EXCL_WANTED)) {
if ((old & ~SE_EWANTED) == 0) {
pp->p_selock |= SE_EWANTED;
if (pp->p_selock & SE_EWANTED || PP_RETIRED(pp) ||
if ((old & ~SE_EWANTED) == SE_READER) {
} else if ((old & ~SE_EWANTED) == SE_DELETED) {
pp->p_selock &= SE_EWANTED;
} else if ((old & ~SE_EWANTED) > SE_READER) {
if ((old & ~SE_EWANTED) == SE_READER) {
} else if ((old & ~SE_EWANTED) == SE_DELETED) {
pp->p_selock &= SE_EWANTED;
} else if ((old & ~SE_EWANTED) > SE_READER) {
if (!(pp->p_selock & SE_EWANTED)) {
ASSERT((pp->p_selock & ~SE_EWANTED) != SE_DELETED);
excl_waiting = pp->p_selock & SE_EWANTED;
pp->p_selock &= ~SE_EWANTED;
old->p_selock &= ~SE_EWANTED;