Changeset View
Changeset View
Standalone View
Standalone View
sys/vm/vm_page.c
| Show First 20 Lines • Show All 63 Lines • ▼ Show 20 Lines | |||||
| /* | /* | ||||
| * Resident memory management module. | * Resident memory management module. | ||||
| */ | */ | ||||
| #include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||
| __FBSDID("$FreeBSD$"); | __FBSDID("$FreeBSD$"); | ||||
| #include "opt_bhyve_snapshot.h" | |||||
| #include "opt_vm.h" | #include "opt_vm.h" | ||||
| #include <sys/param.h> | #include <sys/param.h> | ||||
| #include <sys/systm.h> | #include <sys/systm.h> | ||||
| #include <sys/counter.h> | #include <sys/counter.h> | ||||
| #include <sys/domainset.h> | #include <sys/domainset.h> | ||||
| #include <sys/kernel.h> | #include <sys/kernel.h> | ||||
| #include <sys/limits.h> | #include <sys/limits.h> | ||||
| ▲ Show 20 Lines • Show All 1,331 Lines • ▼ Show 20 Lines | |||||
| */ | */ | ||||
| void | void | ||||
| vm_page_dirty_KBI(vm_page_t m) | vm_page_dirty_KBI(vm_page_t m) | ||||
| { | { | ||||
| /* Refer to this operation by its public name. */ | /* Refer to this operation by its public name. */ | ||||
| KASSERT(vm_page_all_valid(m), ("vm_page_dirty: page is invalid!")); | KASSERT(vm_page_all_valid(m), ("vm_page_dirty: page is invalid!")); | ||||
| m->dirty = VM_PAGE_BITS_ALL; | m->dirty = VM_PAGE_BITS_ALL; | ||||
| #ifdef BHYVE_SNAPSHOT | |||||
| m->oflags |= VPO_VMM_DIRTY; | |||||
| #endif | |||||
| } | } | ||||
| #ifdef BHYVE_SNAPSHOT | |||||
| bool | |||||
| vm_page_test_vmm_dirty(vm_page_t m) | |||||
| { | |||||
| uint64_t value; | |||||
| VM_OBJECT_ASSERT_WLOCKED(m->object); | |||||
| vm_page_assert_busied(m); | |||||
| vm_page_test_dirty(m); | |||||
| value = m->oflags & VPO_VMM_DIRTY; | |||||
| if (value == 0 && pmap_is_modified(m)) | |||||
| value = 1; | |||||
| m->oflags &= ~VPO_VMM_DIRTY; | |||||
| pmap_clear_modify(m); | |||||
| return (value != 0); | |||||
| } | |||||
| #endif | |||||
| /* | /* | ||||
| * vm_page_insert: [ internal use only ] | * vm_page_insert: [ internal use only ] | ||||
| * | * | ||||
| * Inserts the given mem entry into the object and object list. | * Inserts the given mem entry into the object and object list. | ||||
| * | * | ||||
| * The object must be locked. | * The object must be locked. | ||||
| */ | */ | ||||
| ▲ Show 20 Lines • Show All 4,234 Lines • Show Last 20 Lines | |||||