phys_pager.c (a720b31c2a11d36cca4a67cdf89916eee145f3fd) phys_pager.c (d474440ab33c683b0e3f55e8e854f055615db6ec)
1/*-
2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3 *
4 * Copyright (c) 2000 Peter Wemm
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

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

52static struct mtx phys_pager_mtx;
53
54static int default_phys_pager_getpages(vm_object_t object, vm_page_t *m,
55 int count, int *rbehind, int *rahead);
56static int default_phys_pager_populate(vm_object_t object, vm_pindex_t pidx,
57 int fault_type, vm_prot_t max_prot, vm_pindex_t *first, vm_pindex_t *last);
58static boolean_t default_phys_pager_haspage(vm_object_t object,
59 vm_pindex_t pindex, int *before, int *after);
1/*-
2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3 *
4 * Copyright (c) 2000 Peter Wemm
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

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

52static struct mtx phys_pager_mtx;
53
54static int default_phys_pager_getpages(vm_object_t object, vm_page_t *m,
55 int count, int *rbehind, int *rahead);
56static int default_phys_pager_populate(vm_object_t object, vm_pindex_t pidx,
57 int fault_type, vm_prot_t max_prot, vm_pindex_t *first, vm_pindex_t *last);
58static boolean_t default_phys_pager_haspage(vm_object_t object,
59 vm_pindex_t pindex, int *before, int *after);
60struct phys_pager_ops default_phys_pg_ops = {
60const struct phys_pager_ops default_phys_pg_ops = {
61 .phys_pg_getpages = default_phys_pager_getpages,
62 .phys_pg_populate = default_phys_pager_populate,
63 .phys_pg_haspage = default_phys_pager_haspage,
64 .phys_pg_ctor = NULL,
65 .phys_pg_dtor = NULL,
66};
67
68static void
69phys_pager_init(void)
70{
71
72 TAILQ_INIT(&phys_pager_object_list);
73 mtx_init(&phys_pager_mtx, "phys_pager list", NULL, MTX_DEF);
74}
75
76vm_object_t
61 .phys_pg_getpages = default_phys_pager_getpages,
62 .phys_pg_populate = default_phys_pager_populate,
63 .phys_pg_haspage = default_phys_pager_haspage,
64 .phys_pg_ctor = NULL,
65 .phys_pg_dtor = NULL,
66};
67
68static void
69phys_pager_init(void)
70{
71
72 TAILQ_INIT(&phys_pager_object_list);
73 mtx_init(&phys_pager_mtx, "phys_pager list", NULL, MTX_DEF);
74}
75
76vm_object_t
77phys_pager_allocate(void *handle, struct phys_pager_ops *ops, void *data,
77phys_pager_allocate(void *handle, const struct phys_pager_ops *ops, void *data,
78 vm_ooffset_t size, vm_prot_t prot, vm_ooffset_t foff, struct ucred *cred)
79{
80 vm_object_t object, object1;
81 vm_pindex_t pindex;
82 bool init;
83
84 /*
85 * Offset should be page aligned.

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

293static boolean_t
294phys_pager_haspage(vm_object_t object, vm_pindex_t pindex, int *before,
295 int *after)
296{
297 return (object->un_pager.phys.ops->phys_pg_haspage(object, pindex,
298 before, after));
299}
300
78 vm_ooffset_t size, vm_prot_t prot, vm_ooffset_t foff, struct ucred *cred)
79{
80 vm_object_t object, object1;
81 vm_pindex_t pindex;
82 bool init;
83
84 /*
85 * Offset should be page aligned.

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

293static boolean_t
294phys_pager_haspage(vm_object_t object, vm_pindex_t pindex, int *before,
295 int *after)
296{
297 return (object->un_pager.phys.ops->phys_pg_haspage(object, pindex,
298 before, after));
299}
300
301struct pagerops physpagerops = {
301const struct pagerops physpagerops = {
302 .pgo_init = phys_pager_init,
303 .pgo_alloc = phys_pager_alloc,
304 .pgo_dealloc = phys_pager_dealloc,
305 .pgo_getpages = phys_pager_getpages,
306 .pgo_putpages = phys_pager_putpages,
307 .pgo_haspage = phys_pager_haspage,
308 .pgo_populate = phys_pager_populate,
309};
302 .pgo_init = phys_pager_init,
303 .pgo_alloc = phys_pager_alloc,
304 .pgo_dealloc = phys_pager_dealloc,
305 .pgo_getpages = phys_pager_getpages,
306 .pgo_putpages = phys_pager_putpages,
307 .pgo_haspage = phys_pager_haspage,
308 .pgo_populate = phys_pager_populate,
309};