Changeset View
Changeset View
Standalone View
Standalone View
sys/vm/vm_pager.c
Show First 20 Lines • Show All 73 Lines • ▼ Show 20 Lines | |||||
#include <sys/systm.h> | #include <sys/systm.h> | ||||
#include <sys/kernel.h> | #include <sys/kernel.h> | ||||
#include <sys/vnode.h> | #include <sys/vnode.h> | ||||
#include <sys/bio.h> | #include <sys/bio.h> | ||||
#include <sys/buf.h> | #include <sys/buf.h> | ||||
#include <sys/ucred.h> | #include <sys/ucred.h> | ||||
#include <sys/malloc.h> | #include <sys/malloc.h> | ||||
#include <sys/rwlock.h> | #include <sys/rwlock.h> | ||||
#include <sys/user.h> | |||||
#include <vm/vm.h> | #include <vm/vm.h> | ||||
#include <vm/vm_param.h> | #include <vm/vm_param.h> | ||||
#include <vm/vm_kern.h> | #include <vm/vm_kern.h> | ||||
#include <vm/vm_object.h> | #include <vm/vm_object.h> | ||||
#include <vm/vm_page.h> | #include <vm/vm_page.h> | ||||
#include <vm/vm_pager.h> | #include <vm/vm_pager.h> | ||||
#include <vm/vm_extern.h> | #include <vm/vm_extern.h> | ||||
▲ Show 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | |||||
{ | { | ||||
/* | /* | ||||
* For OBJT_DEAD objects, v_writecount was handled in | * For OBJT_DEAD objects, v_writecount was handled in | ||||
* vnode_pager_dealloc(). | * vnode_pager_dealloc(). | ||||
*/ | */ | ||||
} | } | ||||
static const struct pagerops deadpagerops = { | static const struct pagerops deadpagerops = { | ||||
.pgo_kvme_type = KVME_TYPE_DEAD, | |||||
.pgo_alloc = dead_pager_alloc, | .pgo_alloc = dead_pager_alloc, | ||||
.pgo_dealloc = dead_pager_dealloc, | .pgo_dealloc = dead_pager_dealloc, | ||||
.pgo_getpages = dead_pager_getpages, | .pgo_getpages = dead_pager_getpages, | ||||
.pgo_putpages = dead_pager_putpages, | .pgo_putpages = dead_pager_putpages, | ||||
.pgo_haspage = dead_pager_haspage, | .pgo_haspage = dead_pager_haspage, | ||||
.pgo_getvp = dead_pager_getvp, | .pgo_getvp = dead_pager_getvp, | ||||
}; | }; | ||||
▲ Show 20 Lines • Show All 358 Lines • ▼ Show 20 Lines | |||||
vm_object_mightbedirty(vm_object_t object) | vm_object_mightbedirty(vm_object_t object) | ||||
{ | { | ||||
pgo_mightbedirty_t *method; | pgo_mightbedirty_t *method; | ||||
method = pagertab[object->type]->pgo_mightbedirty; | method = pagertab[object->type]->pgo_mightbedirty; | ||||
if (method == NULL) | if (method == NULL) | ||||
return (false); | return (false); | ||||
return (method(object)); | return (method(object)); | ||||
} | |||||
/* | |||||
* Return the kvme type of the given object. | |||||
* If vpp is not NULL, set it to the object's vm_object_vnode() or NULL. | |||||
*/ | |||||
int | |||||
vm_object_kvme_type(vm_object_t object, struct vnode **vpp) | |||||
{ | |||||
VM_OBJECT_ASSERT_LOCKED(object); | |||||
if (vpp != NULL) | |||||
*vpp = vm_object_vnode(object); | |||||
return (pagertab[object->type]->pgo_kvme_type); | |||||
} | } |