vm_pager.c (4b8365d752ef48c14f0584d21b719bb386a7be82) vm_pager.c (d474440ab33c683b0e3f55e8e854f055615db6ec)
1/*-
2 * SPDX-License-Identifier: (BSD-3-Clause AND MIT-CMU)
3 *
4 * Copyright (c) 1991, 1993
5 * The Regents of the University of California. All rights reserved.
6 *
7 * This code is derived from software contributed to Berkeley by
8 * The Mach Operating System project at Carnegie-Mellon University.

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

149dead_pager_getvp(vm_object_t object, struct vnode **vpp, bool *vp_heldp)
150{
151 /*
152 * For OBJT_DEAD objects, v_writecount was handled in
153 * vnode_pager_dealloc().
154 */
155}
156
1/*-
2 * SPDX-License-Identifier: (BSD-3-Clause AND MIT-CMU)
3 *
4 * Copyright (c) 1991, 1993
5 * The Regents of the University of California. All rights reserved.
6 *
7 * This code is derived from software contributed to Berkeley by
8 * The Mach Operating System project at Carnegie-Mellon University.

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

149dead_pager_getvp(vm_object_t object, struct vnode **vpp, bool *vp_heldp)
150{
151 /*
152 * For OBJT_DEAD objects, v_writecount was handled in
153 * vnode_pager_dealloc().
154 */
155}
156
157static struct pagerops deadpagerops = {
157static const struct pagerops deadpagerops = {
158 .pgo_alloc = dead_pager_alloc,
159 .pgo_dealloc = dead_pager_dealloc,
160 .pgo_getpages = dead_pager_getpages,
161 .pgo_putpages = dead_pager_putpages,
162 .pgo_haspage = dead_pager_haspage,
163 .pgo_getvp = dead_pager_getvp,
164};
165
158 .pgo_alloc = dead_pager_alloc,
159 .pgo_dealloc = dead_pager_dealloc,
160 .pgo_getpages = dead_pager_getpages,
161 .pgo_putpages = dead_pager_putpages,
162 .pgo_haspage = dead_pager_haspage,
163 .pgo_getvp = dead_pager_getvp,
164};
165
166struct pagerops *pagertab[] = {
166const struct pagerops *pagertab[] __read_mostly = {
167 [OBJT_DEFAULT] = &defaultpagerops,
168 [OBJT_SWAP] = &swappagerops,
169 [OBJT_VNODE] = &vnodepagerops,
170 [OBJT_DEVICE] = &devicepagerops,
171 [OBJT_PHYS] = &physpagerops,
172 [OBJT_DEAD] = &deadpagerops,
173 [OBJT_SG] = &sgpagerops,
174 [OBJT_MGTDEVICE] = &mgtdevicepagerops,
175 [OBJT_SWAP_TMPFS] = &swaptmpfspagerops,
176};
177
178void
179vm_pager_init(void)
180{
167 [OBJT_DEFAULT] = &defaultpagerops,
168 [OBJT_SWAP] = &swappagerops,
169 [OBJT_VNODE] = &vnodepagerops,
170 [OBJT_DEVICE] = &devicepagerops,
171 [OBJT_PHYS] = &physpagerops,
172 [OBJT_DEAD] = &deadpagerops,
173 [OBJT_SG] = &sgpagerops,
174 [OBJT_MGTDEVICE] = &mgtdevicepagerops,
175 [OBJT_SWAP_TMPFS] = &swaptmpfspagerops,
176};
177
178void
179vm_pager_init(void)
180{
181 struct pagerops **pgops;
181 const struct pagerops **pgops;
182
183 /*
184 * Initialize known pagers
185 */
186 for (pgops = pagertab; pgops < &pagertab[nitems(pagertab)]; pgops++)
187 if ((*pgops)->pgo_init != NULL)
188 (*(*pgops)->pgo_init)();
189}

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

239 * Size, protection and offset parameters are passed in for pagers that
240 * need to perform page-level validation (e.g. the device pager).
241 */
242vm_object_t
243vm_pager_allocate(objtype_t type, void *handle, vm_ooffset_t size,
244 vm_prot_t prot, vm_ooffset_t off, struct ucred *cred)
245{
246 vm_object_t ret;
182
183 /*
184 * Initialize known pagers
185 */
186 for (pgops = pagertab; pgops < &pagertab[nitems(pagertab)]; pgops++)
187 if ((*pgops)->pgo_init != NULL)
188 (*(*pgops)->pgo_init)();
189}

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

239 * Size, protection and offset parameters are passed in for pagers that
240 * need to perform page-level validation (e.g. the device pager).
241 */
242vm_object_t
243vm_pager_allocate(objtype_t type, void *handle, vm_ooffset_t size,
244 vm_prot_t prot, vm_ooffset_t off, struct ucred *cred)
245{
246 vm_object_t ret;
247 struct pagerops *ops;
247 const struct pagerops *ops;
248
249 ops = pagertab[type];
250 if (ops)
251 ret = (*ops->pgo_alloc)(handle, size, prot, off, cred);
252 else
253 ret = NULL;
254 return (ret);
255}

--- 277 unchanged lines hidden ---
248
249 ops = pagertab[type];
250 if (ops)
251 ret = (*ops->pgo_alloc)(handle, size, prot, off, cred);
252 else
253 ret = NULL;
254 return (ret);
255}

--- 277 unchanged lines hidden ---