34#include <sys/kernel.h>
39#include <sys/rwlock.h>
40#include <sys/sysctl.h>
56 int count,
int *rbehind,
int *rahead);
58 int fault_type,
vm_prot_t max_prot, vm_pindex_t *first, vm_pindex_t *last);
60 vm_pindex_t pindex,
int *before,
int *after);
79 vm_ooffset_t size,
vm_prot_t prot, vm_ooffset_t foff,
struct ucred *cred)
101 if (
object == NULL) {
110 if (
object != NULL) {
115 if (pindex > object->
size)
116 object->size = pindex;
122 object->un_pager.phys.ops = ops;
123 object->un_pager.phys.data_ptr = data;
127 object, pager_object_list);
130 if (pindex > object->
size)
131 object->size = pindex;
137 object->un_pager.phys.ops = ops;
138 object->un_pager.phys.data_ptr = data;
150 vm_ooffset_t foff,
struct ucred *ucred)
153 size, prot, foff, ucred));
160 if (object->
handle != NULL) {
169 object->un_pager.phys.ops->phys_pg_dtor(
object);
170 object->handle = NULL;
178 int *rbehind,
int *rahead)
182 for (i = 0; i < count; i++) {
184 if ((m[i]->flags &
PG_ZERO) == 0)
189 (
"phys_pager_getpages: partially valid page %p", m[i]));
190 KASSERT(m[i]->dirty == 0,
191 (
"phys_pager_getpages: dirty page %p", m[i]));
205 count, rbehind, rahead));
216#define PHYSCLUSTER 1024
221 "prefault window size for phys pager");
233 int fault_type __unused,
vm_prot_t max_prot __unused, vm_pindex_t *first,
237 vm_pindex_t base, end, i;
242 if (end >= object->
size)
243 end =
object->size - 1;
251 for (i = base; i <= end; i++) {
257 KASSERT(m->dirty == 0,
258 (
"phys_pager_populate: dirty page %p", m));
265 vm_prot_t max_prot, vm_pindex_t *first, vm_pindex_t *last)
268 fault_type, max_prot, first, last));
276 panic(
"phys_pager_putpage called");
283 vm_pindex_t base, end;
288 *before = pindex - base;
290 *after = end - pindex;
void pmap_zero_page(vm_page_t)
struct vm_object::@0::@5 phys
const struct cdev_pager_ops * ops
union vm_object::@0 un_pager
vm_object_t vm_object_allocate(objtype_t type, vm_pindex_t size)
void vm_object_deallocate(vm_object_t object)
#define VM_OBJECT_WLOCK(object)
static __inline void vm_object_set_flag(vm_object_t object, u_short bits)
#define VM_OBJECT_WUNLOCK(object)
void vm_page_zero_invalid(vm_page_t m, boolean_t setvalid)
void vm_page_valid(vm_page_t m)
vm_page_t vm_page_grab(vm_object_t object, vm_pindex_t pindex, int allocflags)
static bool vm_page_all_valid(vm_page_t m)
#define VM_ALLOC_COUNT(count)
static bool vm_page_none_valid(vm_page_t m)