vm_pager.h (4b8365d752ef48c14f0584d21b719bb386a7be82) vm_pager.h (d474440ab33c683b0e3f55e8e854f055615db6ec)
1/*-
2 * SPDX-License-Identifier: BSD-3-Clause
3 *
4 * Copyright (c) 1990 University of Utah.
5 * Copyright (c) 1991, 1993
6 * The Regents of the University of California. All rights reserved.
7 *
8 * This code is derived from software contributed to Berkeley by

--- 74 unchanged lines hidden (view full) ---

83 pgo_writecount_t *pgo_update_writecount;
84 pgo_writecount_t *pgo_release_writecount;
85 pgo_set_writeable_dirty_t *pgo_set_writeable_dirty;
86 pgo_mightbedirty_t *pgo_mightbedirty;
87 pgo_getvp_t *pgo_getvp;
88 pgo_freespace_t *pgo_freespace;
89};
90
1/*-
2 * SPDX-License-Identifier: BSD-3-Clause
3 *
4 * Copyright (c) 1990 University of Utah.
5 * Copyright (c) 1991, 1993
6 * The Regents of the University of California. All rights reserved.
7 *
8 * This code is derived from software contributed to Berkeley by

--- 74 unchanged lines hidden (view full) ---

83 pgo_writecount_t *pgo_update_writecount;
84 pgo_writecount_t *pgo_release_writecount;
85 pgo_set_writeable_dirty_t *pgo_set_writeable_dirty;
86 pgo_mightbedirty_t *pgo_mightbedirty;
87 pgo_getvp_t *pgo_getvp;
88 pgo_freespace_t *pgo_freespace;
89};
90
91extern struct pagerops defaultpagerops;
92extern struct pagerops swappagerops;
93extern struct pagerops vnodepagerops;
94extern struct pagerops devicepagerops;
95extern struct pagerops physpagerops;
96extern struct pagerops sgpagerops;
97extern struct pagerops mgtdevicepagerops;
98extern struct pagerops swaptmpfspagerops;
91extern const struct pagerops defaultpagerops;
92extern const struct pagerops swappagerops;
93extern const struct pagerops vnodepagerops;
94extern const struct pagerops devicepagerops;
95extern const struct pagerops physpagerops;
96extern const struct pagerops sgpagerops;
97extern const struct pagerops mgtdevicepagerops;
98extern const struct pagerops swaptmpfspagerops;
99
100/*
101 * get/put return values
102 * OK operation was successful
103 * BAD specified data was out of the accepted range
104 * FAIL specified data was in range, but doesn't exist
105 * PEND operations was initiated but not completed
106 * ERROR error while accessing data that is in range and exists

--- 8 unchanged lines hidden (view full) ---

115
116#define VM_PAGER_PUT_SYNC 0x0001
117#define VM_PAGER_PUT_INVAL 0x0002
118#define VM_PAGER_PUT_NOREUSE 0x0004
119#define VM_PAGER_CLUSTER_OK 0x0008
120
121#ifdef _KERNEL
122
99
100/*
101 * get/put return values
102 * OK operation was successful
103 * BAD specified data was out of the accepted range
104 * FAIL specified data was in range, but doesn't exist
105 * PEND operations was initiated but not completed
106 * ERROR error while accessing data that is in range and exists

--- 8 unchanged lines hidden (view full) ---

115
116#define VM_PAGER_PUT_SYNC 0x0001
117#define VM_PAGER_PUT_INVAL 0x0002
118#define VM_PAGER_PUT_NOREUSE 0x0004
119#define VM_PAGER_CLUSTER_OK 0x0008
120
121#ifdef _KERNEL
122
123extern struct pagerops *pagertab[];
123extern const struct pagerops *pagertab[] __read_mostly;
124extern struct mtx_padalign pbuf_mtx;
125
126/*
127 * Number of pages that pbuf buffer can store in b_pages.
128 * It is +1 to allow for unaligned data buffer of maxphys size.
129 */
130#define PBUF_PAGES (atop(maxphys) + 1)
131

--- 123 unchanged lines hidden (view full) ---

255 int fault_type, vm_prot_t max_prot, vm_pindex_t *first,
256 vm_pindex_t *last);
257 int (*cdev_pg_ctor)(void *handle, vm_ooffset_t size, vm_prot_t prot,
258 vm_ooffset_t foff, struct ucred *cred, u_short *color);
259 void (*cdev_pg_dtor)(void *handle);
260};
261
262vm_object_t cdev_pager_allocate(void *handle, enum obj_type tp,
124extern struct mtx_padalign pbuf_mtx;
125
126/*
127 * Number of pages that pbuf buffer can store in b_pages.
128 * It is +1 to allow for unaligned data buffer of maxphys size.
129 */
130#define PBUF_PAGES (atop(maxphys) + 1)
131

--- 123 unchanged lines hidden (view full) ---

255 int fault_type, vm_prot_t max_prot, vm_pindex_t *first,
256 vm_pindex_t *last);
257 int (*cdev_pg_ctor)(void *handle, vm_ooffset_t size, vm_prot_t prot,
258 vm_ooffset_t foff, struct ucred *cred, u_short *color);
259 void (*cdev_pg_dtor)(void *handle);
260};
261
262vm_object_t cdev_pager_allocate(void *handle, enum obj_type tp,
263 struct cdev_pager_ops *ops, vm_ooffset_t size, vm_prot_t prot,
263 const struct cdev_pager_ops *ops, vm_ooffset_t size, vm_prot_t prot,
264 vm_ooffset_t foff, struct ucred *cred);
265vm_object_t cdev_pager_lookup(void *handle);
266void cdev_pager_free_page(vm_object_t object, vm_page_t m);
267
268struct phys_pager_ops {
269 int (*phys_pg_getpages)(vm_object_t vm_obj, vm_page_t *m, int count,
270 int *rbehind, int *rahead);
271 int (*phys_pg_populate)(vm_object_t vm_obj, vm_pindex_t pidx,
272 int fault_type, vm_prot_t max_prot, vm_pindex_t *first,
273 vm_pindex_t *last);
274 boolean_t (*phys_pg_haspage)(vm_object_t obj, vm_pindex_t pindex,
275 int *before, int *after);
276 void (*phys_pg_ctor)(vm_object_t vm_obj, vm_prot_t prot,
277 vm_ooffset_t foff, struct ucred *cred);
278 void (*phys_pg_dtor)(vm_object_t vm_obj);
279};
264 vm_ooffset_t foff, struct ucred *cred);
265vm_object_t cdev_pager_lookup(void *handle);
266void cdev_pager_free_page(vm_object_t object, vm_page_t m);
267
268struct phys_pager_ops {
269 int (*phys_pg_getpages)(vm_object_t vm_obj, vm_page_t *m, int count,
270 int *rbehind, int *rahead);
271 int (*phys_pg_populate)(vm_object_t vm_obj, vm_pindex_t pidx,
272 int fault_type, vm_prot_t max_prot, vm_pindex_t *first,
273 vm_pindex_t *last);
274 boolean_t (*phys_pg_haspage)(vm_object_t obj, vm_pindex_t pindex,
275 int *before, int *after);
276 void (*phys_pg_ctor)(vm_object_t vm_obj, vm_prot_t prot,
277 vm_ooffset_t foff, struct ucred *cred);
278 void (*phys_pg_dtor)(vm_object_t vm_obj);
279};
280extern struct phys_pager_ops default_phys_pg_ops;
281vm_object_t phys_pager_allocate(void *handle, struct phys_pager_ops *ops,
280extern const struct phys_pager_ops default_phys_pg_ops;
281vm_object_t phys_pager_allocate(void *handle, const struct phys_pager_ops *ops,
282 void *data, vm_ooffset_t size, vm_prot_t prot, vm_ooffset_t foff,
283 struct ucred *cred);
284
285#endif /* _KERNEL */
286#endif /* _VM_PAGER_ */
282 void *data, vm_ooffset_t size, vm_prot_t prot, vm_ooffset_t foff,
283 struct ucred *cred);
284
285#endif /* _KERNEL */
286#endif /* _VM_PAGER_ */