Changeset View
Changeset View
Standalone View
Standalone View
sys/vm/vm_page.c
Show First 20 Lines • Show All 3,983 Lines • ▼ Show 20 Lines | do { | ||||
} else if (old == VPRC_OBJREF + 1) { | } else if (old == VPRC_OBJREF + 1) { | ||||
/* | /* | ||||
* This is the last wiring. Clear PGA_DEQUEUE and | * This is the last wiring. Clear PGA_DEQUEUE and | ||||
* update the page's queue state to reflect the | * update the page's queue state to reflect the | ||||
* reference. If the page does not belong to an object | * reference. If the page does not belong to an object | ||||
* (i.e., the VPRC_OBJREF bit is clear), we only need to | * (i.e., the VPRC_OBJREF bit is clear), we only need to | ||||
* clear leftover queue state. | * clear leftover queue state. | ||||
*/ | */ | ||||
vm_page_release_toq(m, nqueue, false); | vm_page_release_toq(m, nqueue, noreuse); | ||||
} else if (old == 1) { | } else if (old == 1) { | ||||
vm_page_aflag_clear(m, PGA_DEQUEUE); | vm_page_aflag_clear(m, PGA_DEQUEUE); | ||||
} | } | ||||
} while (!atomic_fcmpset_rel_int(&m->ref_count, &old, old - 1)); | } while (!atomic_fcmpset_rel_int(&m->ref_count, &old, old - 1)); | ||||
if (VPRC_WIRE_COUNT(old) == 1) { | if (VPRC_WIRE_COUNT(old) == 1) { | ||||
vm_wire_sub(1); | vm_wire_sub(1); | ||||
if (old == 1) | if (old == 1) | ||||
▲ Show 20 Lines • Show All 1,531 Lines • Show Last 20 Lines |