git: 55b68c9ac1f7 - stable/13 - Constify vm_pager-related virtual tables.

Konstantin Belousov kib at FreeBSD.org
Sat May 22 09:46:36 UTC 2021


The branch stable/13 has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=55b68c9ac1f70b04665cf29b7db3baf122aadbd2

commit 55b68c9ac1f70b04665cf29b7db3baf122aadbd2
Author:     Konstantin Belousov <kib at FreeBSD.org>
AuthorDate: 2021-05-03 21:58:07 +0000
Commit:     Konstantin Belousov <kib at FreeBSD.org>
CommitDate: 2021-05-22 09:38:29 +0000

    Constify vm_pager-related virtual tables.
    
    (cherry picked from commit d474440ab33c683b0e3f55e8e854f055615db6ec)
---
 sys/kern/uipc_shm.c    |  2 +-
 sys/vm/default_pager.c |  2 +-
 sys/vm/device_pager.c  | 11 ++++++-----
 sys/vm/phys_pager.c    |  6 +++---
 sys/vm/sg_pager.c      |  2 +-
 sys/vm/swap_pager.c    |  4 ++--
 sys/vm/vm_object.h     |  4 ++--
 sys/vm/vm_pager.c      |  8 ++++----
 sys/vm/vm_pager.h      | 24 ++++++++++++------------
 sys/vm/vnode_pager.c   |  2 +-
 10 files changed, 33 insertions(+), 32 deletions(-)

diff --git a/sys/kern/uipc_shm.c b/sys/kern/uipc_shm.c
index 88151f1422f9..58c9f8cec239 100644
--- a/sys/kern/uipc_shm.c
+++ b/sys/kern/uipc_shm.c
@@ -327,7 +327,7 @@ shm_largepage_phys_dtor(vm_object_t object)
 	}
 }
 
-static struct phys_pager_ops shm_largepage_phys_ops = {
+static const struct phys_pager_ops shm_largepage_phys_ops = {
 	.phys_pg_populate =	shm_largepage_phys_populate,
 	.phys_pg_haspage =	shm_largepage_phys_haspage,
 	.phys_pg_ctor =		shm_largepage_phys_ctor,
diff --git a/sys/vm/default_pager.c b/sys/vm/default_pager.c
index 057dbe895050..758012692a48 100644
--- a/sys/vm/default_pager.c
+++ b/sys/vm/default_pager.c
@@ -70,7 +70,7 @@ static boolean_t	default_pager_haspage(vm_object_t, vm_pindex_t, int *,
  * On the first request to page out a page from a default object, the
  * object is converted to swap pager type.
  */
-struct pagerops defaultpagerops = {
+const struct pagerops defaultpagerops = {
 	.pgo_alloc =	default_pager_alloc,
 	.pgo_dealloc =	default_pager_dealloc,
 	.pgo_getpages =	default_pager_getpages,
diff --git a/sys/vm/device_pager.c b/sys/vm/device_pager.c
index 40b32e9bad74..25affb114a47 100644
--- a/sys/vm/device_pager.c
+++ b/sys/vm/device_pager.c
@@ -74,7 +74,7 @@ static struct pagerlst dev_pager_object_list;
 /* protect list manipulation */
 static struct mtx dev_pager_mtx;
 
-struct pagerops devicepagerops = {
+const struct pagerops devicepagerops = {
 	.pgo_init =	dev_pager_init,
 	.pgo_alloc =	dev_pager_alloc,
 	.pgo_dealloc =	dev_pager_dealloc,
@@ -83,7 +83,7 @@ struct pagerops devicepagerops = {
 	.pgo_haspage =	dev_pager_haspage,
 };
 
-struct pagerops mgtdevicepagerops = {
+const struct pagerops mgtdevicepagerops = {
 	.pgo_alloc =	dev_pager_alloc,
 	.pgo_dealloc =	dev_pager_dealloc,
 	.pgo_getpages =	dev_pager_getpages,
@@ -98,7 +98,7 @@ static void old_dev_pager_dtor(void *handle);
 static int old_dev_pager_fault(vm_object_t object, vm_ooffset_t offset,
     int prot, vm_page_t *mres);
 
-static struct cdev_pager_ops old_dev_pager_ops = {
+static const struct cdev_pager_ops old_dev_pager_ops = {
 	.cdev_pg_ctor =	old_dev_pager_ctor,
 	.cdev_pg_dtor =	old_dev_pager_dtor,
 	.cdev_pg_fault = old_dev_pager_fault
@@ -124,8 +124,9 @@ cdev_pager_lookup(void *handle)
 }
 
 vm_object_t
-cdev_pager_allocate(void *handle, enum obj_type tp, struct cdev_pager_ops *ops,
-    vm_ooffset_t size, vm_prot_t prot, vm_ooffset_t foff, struct ucred *cred)
+cdev_pager_allocate(void *handle, enum obj_type tp,
+    const struct cdev_pager_ops *ops, vm_ooffset_t size, vm_prot_t prot,
+    vm_ooffset_t foff, struct ucred *cred)
 {
 	vm_object_t object, object1;
 	vm_pindex_t pindex;
diff --git a/sys/vm/phys_pager.c b/sys/vm/phys_pager.c
index 19a8b97a3d56..af7b10701b16 100644
--- a/sys/vm/phys_pager.c
+++ b/sys/vm/phys_pager.c
@@ -57,7 +57,7 @@ static int default_phys_pager_populate(vm_object_t object, vm_pindex_t pidx,
     int fault_type, vm_prot_t max_prot, vm_pindex_t *first, vm_pindex_t *last);
 static boolean_t default_phys_pager_haspage(vm_object_t object,
     vm_pindex_t pindex, int *before, int *after);
-struct phys_pager_ops default_phys_pg_ops = {
+const struct phys_pager_ops default_phys_pg_ops = {
 	.phys_pg_getpages = default_phys_pager_getpages,
 	.phys_pg_populate = default_phys_pager_populate,
 	.phys_pg_haspage = default_phys_pager_haspage,
@@ -74,7 +74,7 @@ phys_pager_init(void)
 }
 
 vm_object_t
-phys_pager_allocate(void *handle, struct phys_pager_ops *ops, void *data,
+phys_pager_allocate(void *handle, const struct phys_pager_ops *ops, void *data,
     vm_ooffset_t size, vm_prot_t prot, vm_ooffset_t foff, struct ucred *cred)
 {
 	vm_object_t object, object1;
@@ -298,7 +298,7 @@ phys_pager_haspage(vm_object_t object, vm_pindex_t pindex, int *before,
 	    before, after));
 }
 
-struct pagerops physpagerops = {
+const struct pagerops physpagerops = {
 	.pgo_init =	phys_pager_init,
 	.pgo_alloc =	phys_pager_alloc,
 	.pgo_dealloc = 	phys_pager_dealloc,
diff --git a/sys/vm/sg_pager.c b/sys/vm/sg_pager.c
index 2145f487ec34..9b3e60bc170a 100644
--- a/sys/vm/sg_pager.c
+++ b/sys/vm/sg_pager.c
@@ -59,7 +59,7 @@ static void sg_pager_putpages(vm_object_t, vm_page_t *, int,
 static boolean_t sg_pager_haspage(vm_object_t, vm_pindex_t, int *,
 		int *);
 
-struct pagerops sgpagerops = {
+const struct pagerops sgpagerops = {
 	.pgo_alloc =	sg_pager_alloc,
 	.pgo_dealloc =	sg_pager_dealloc,
 	.pgo_getpages =	sg_pager_getpages,
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
index 2eaf1f746b58..57c953542a88 100644
--- a/sys/vm/swap_pager.c
+++ b/sys/vm/swap_pager.c
@@ -441,7 +441,7 @@ static void	swap_tmpfs_pager_getvp(vm_object_t object, struct vnode **vpp,
 static void	swap_pager_freespace(vm_object_t object, vm_pindex_t start,
     vm_size_t size);
 
-struct pagerops swappagerops = {
+const struct pagerops swappagerops = {
 	.pgo_init =	swap_pager_init,	/* early system initialization of pager	*/
 	.pgo_alloc =	swap_pager_alloc,	/* allocate an OBJT_SWAP object */
 	.pgo_dealloc =	swap_pager_dealloc,	/* deallocate an OBJT_SWAP object */
@@ -455,7 +455,7 @@ struct pagerops swappagerops = {
 	.pgo_freespace = swap_pager_freespace,
 };
 
-struct pagerops swaptmpfspagerops = {
+const struct pagerops swaptmpfspagerops = {
 	.pgo_alloc =	swap_tmpfs_pager_alloc,
 	.pgo_dealloc =	swap_pager_dealloc,
 	.pgo_getpages =	swap_pager_getpages,
diff --git a/sys/vm/vm_object.h b/sys/vm/vm_object.h
index 749f33ee16c0..0e1ed321255f 100644
--- a/sys/vm/vm_object.h
+++ b/sys/vm/vm_object.h
@@ -140,7 +140,7 @@ struct vm_object {
 		 */
 		struct {
 			TAILQ_HEAD(, vm_page) devp_pglist;
-			struct cdev_pager_ops *ops;
+			const struct cdev_pager_ops *ops;
 			struct cdev *dev;
 		} devp;
 
@@ -178,7 +178,7 @@ struct vm_object {
 		 * Phys pager
 		 */
 		struct {
-			struct phys_pager_ops *ops;
+			const struct phys_pager_ops *ops;
 			union {
 				void *data_ptr;
 				uintptr_t data_val;
diff --git a/sys/vm/vm_pager.c b/sys/vm/vm_pager.c
index 30e84fa00a3e..240847903f62 100644
--- a/sys/vm/vm_pager.c
+++ b/sys/vm/vm_pager.c
@@ -154,7 +154,7 @@ dead_pager_getvp(vm_object_t object, struct vnode **vpp, bool *vp_heldp)
 	 */
 }
 
-static struct pagerops deadpagerops = {
+static const struct pagerops deadpagerops = {
 	.pgo_alloc = 	dead_pager_alloc,
 	.pgo_dealloc =	dead_pager_dealloc,
 	.pgo_getpages =	dead_pager_getpages,
@@ -163,7 +163,7 @@ static struct pagerops deadpagerops = {
 	.pgo_getvp =	dead_pager_getvp,
 };
 
-struct pagerops *pagertab[] = {
+const struct pagerops *pagertab[] __read_mostly = {
 	[OBJT_DEFAULT] =	&defaultpagerops,
 	[OBJT_SWAP] =		&swappagerops,
 	[OBJT_VNODE] =		&vnodepagerops,
@@ -178,7 +178,7 @@ struct pagerops *pagertab[] = {
 void
 vm_pager_init(void)
 {
-	struct pagerops **pgops;
+	const struct pagerops **pgops;
 
 	/*
 	 * Initialize known pagers
@@ -244,7 +244,7 @@ vm_pager_allocate(objtype_t type, void *handle, vm_ooffset_t size,
     vm_prot_t prot, vm_ooffset_t off, struct ucred *cred)
 {
 	vm_object_t ret;
-	struct pagerops *ops;
+	const struct pagerops *ops;
 
 	ops = pagertab[type];
 	if (ops)
diff --git a/sys/vm/vm_pager.h b/sys/vm/vm_pager.h
index 55d231a73f39..68c5fe42351e 100644
--- a/sys/vm/vm_pager.h
+++ b/sys/vm/vm_pager.h
@@ -88,14 +88,14 @@ struct pagerops {
 	pgo_freespace_t		*pgo_freespace;
 };
 
-extern struct pagerops defaultpagerops;
-extern struct pagerops swappagerops;
-extern struct pagerops vnodepagerops;
-extern struct pagerops devicepagerops;
-extern struct pagerops physpagerops;
-extern struct pagerops sgpagerops;
-extern struct pagerops mgtdevicepagerops;
-extern struct pagerops swaptmpfspagerops;
+extern const struct pagerops defaultpagerops;
+extern const struct pagerops swappagerops;
+extern const struct pagerops vnodepagerops;
+extern const struct pagerops devicepagerops;
+extern const struct pagerops physpagerops;
+extern const struct pagerops sgpagerops;
+extern const struct pagerops mgtdevicepagerops;
+extern const struct pagerops swaptmpfspagerops;
 
 /*
  * get/put return values
@@ -120,7 +120,7 @@ extern struct pagerops swaptmpfspagerops;
 
 #ifdef _KERNEL
 
-extern struct pagerops *pagertab[];
+extern const struct pagerops *pagertab[] __read_mostly;
 extern struct mtx_padalign pbuf_mtx;
 
 /*
@@ -260,7 +260,7 @@ struct cdev_pager_ops {
 };
 
 vm_object_t cdev_pager_allocate(void *handle, enum obj_type tp,
-    struct cdev_pager_ops *ops, vm_ooffset_t size, vm_prot_t prot,
+    const struct cdev_pager_ops *ops, vm_ooffset_t size, vm_prot_t prot,
     vm_ooffset_t foff, struct ucred *cred);
 vm_object_t cdev_pager_lookup(void *handle);
 void cdev_pager_free_page(vm_object_t object, vm_page_t m);
@@ -277,8 +277,8 @@ struct phys_pager_ops {
 	    vm_ooffset_t foff, struct ucred *cred);
 	void (*phys_pg_dtor)(vm_object_t vm_obj);
 };
-extern struct phys_pager_ops default_phys_pg_ops;
-vm_object_t phys_pager_allocate(void *handle, struct phys_pager_ops *ops,
+extern const struct phys_pager_ops default_phys_pg_ops;
+vm_object_t phys_pager_allocate(void *handle, const struct phys_pager_ops *ops,
     void *data, vm_ooffset_t size, vm_prot_t prot, vm_ooffset_t foff,
     struct ucred *cred);
 
diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c
index eeced1b981d1..c264fc992b26 100644
--- a/sys/vm/vnode_pager.c
+++ b/sys/vm/vnode_pager.c
@@ -107,7 +107,7 @@ static void vnode_pager_release_writecount(vm_object_t, vm_offset_t,
     vm_offset_t);
 static void vnode_pager_getvp(vm_object_t, struct vnode **, bool *);
 
-struct pagerops vnodepagerops = {
+const struct pagerops vnodepagerops = {
 	.pgo_alloc =	vnode_pager_alloc,
 	.pgo_dealloc =	vnode_pager_dealloc,
 	.pgo_getpages =	vnode_pager_getpages,


More information about the dev-commits-src-all mailing list