PG_CLEAN
#define vm_page_dirty(page) (page->flags &= ~PG_CLEAN)
KASSERT(pg->flags != (PG_CLEAN|PG_FAKE)); /* Freeing invalid page */
KASSERTMSG(pg->flags == (PG_CLEAN | PG_FAKE),
pg->flags = PG_CLEAN|PG_BUSY|PG_FAKE;
pg->flags = PG_BUSY | PG_CLEAN | PG_FAKE;
KASSERT(pg->flags == (PG_BUSY|PG_CLEAN|PG_FAKE));
if (((oldpg->flags ^ newpg->flags) & PG_CLEAN) != 0) {
if ((newpg->flags & PG_CLEAN) != 0) {
const unsigned int status = pg->flags & (PG_CLEAN | PG_DIRTY);
if ((pg->flags & PG_CLEAN) == 0) {
KASSERT(((pg->flags & PG_CLEAN) == 0) ==
const unsigned int status = pg->flags & (PG_CLEAN | PG_DIRTY);
pg->flags &= ~(PG_CLEAN|PG_DIRTY);
KASSERT(uobj == NULL || ((pg->flags & PG_CLEAN) == 0) ==
__CTASSERT(UVM_PAGE_STATUS_CLEAN == PG_CLEAN);
KASSERT((~pg->flags & (PG_CLEAN|PG_DIRTY)) != 0);
KASSERT(uobj == NULL || ((pg->flags & PG_CLEAN) == 0) ==
return pg->flags & (PG_CLEAN|PG_DIRTY);
KASSERT((~newstatus & (PG_CLEAN|PG_DIRTY)) != 0);
KASSERT((newstatus & ~(PG_CLEAN|PG_DIRTY)) == 0);
KASSERT(uobj == NULL || ((pg->flags & PG_CLEAN) == 0) ==
pg->flags = PG_BUSY | PG_CLEAN | PG_FAKE;
pg->flags = PG_CLEAN;