-void
-vm_object_save_pmap_attributes(vm_object_t object,
- vm_offset_t start, vm_offset_t end) {
-
- vm_page_t p;
-
- if (!object)
- return;
-
- if (object->shadow) {
- vm_object_save_pmap_attributes(object->shadow,
- object->shadow_offset + start,
- object->shadow_offset + end);
- }
-
- p = (vm_page_t) queue_first(&object->memq);
- while (!queue_end(&object->memq, (queue_entry_t) p)) {
- if ((start <= p->offset) && (p->offset < end)) {
- if ((p->flags & PG_CLEAN)
- && pmap_is_modified(VM_PAGE_TO_PHYS(p))) {
- p->flags &= ~PG_CLEAN;
- }
- if ((p->flags & PG_CLEAN) == 0)
- p->flags |= PG_LAUNDRY;
- }
- p = (vm_page_t) queue_next(&p->listq);
- }
-}
-