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_ */ |