git: 24e1c6ae7d3f - main - domains: init with standard SYSINIT(9) or VNET_SYSINIT()

From: Gleb Smirnoff <glebius_at_FreeBSD.org>
Date: Mon, 03 Jan 2022 18:22:56 UTC
The branch main has been updated by glebius:

URL: https://cgit.FreeBSD.org/src/commit/?id=24e1c6ae7d3f7731a0884a62e9d5273e5ca1335a

commit 24e1c6ae7d3f7731a0884a62e9d5273e5ca1335a
Author:     Gleb Smirnoff <glebius@FreeBSD.org>
AuthorDate: 2022-01-03 18:15:22 +0000
Commit:     Gleb Smirnoff <glebius@FreeBSD.org>
CommitDate: 2022-01-03 18:15:22 +0000

    domains: init with standard SYSINIT(9) or VNET_SYSINIT()
    
    There left only three modules that used dom_init().  And netipsec
    was the last one to use dom_destroy().
    
    Differential revision:  https://reviews.freebsd.org/D33540
---
 share/man/man9/domain.9                        |  2 --
 sys/kern/uipc_debug.c                          |  1 -
 sys/kern/uipc_domain.c                         |  4 ----
 sys/kern/uipc_usrreq.c                         | 10 ++--------
 sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c |  4 ++--
 sys/sys/domain.h                               |  4 ----
 6 files changed, 4 insertions(+), 21 deletions(-)

diff --git a/share/man/man9/domain.9 b/share/man/man9/domain.9
index 867cfa104718..2fc0fd328392 100644
--- a/share/man/man9/domain.9
+++ b/share/man/man9/domain.9
@@ -69,8 +69,6 @@ struct domain {
 	int	dom_family;		/* AF_xxx */
 	char	*dom_name;
 	int	dom_flags;
-	void	(*dom_init)		/* initialize domain data structures */
-		(void);
 	int	(*dom_probe)(void);	/* check for support (optional) */
 	void	(*dom_destroy)		/* cleanup structures / state */
 		(void);
diff --git a/sys/kern/uipc_debug.c b/sys/kern/uipc_debug.c
index 86c3199a3c26..2f60bb64ed3b 100644
--- a/sys/kern/uipc_debug.c
+++ b/sys/kern/uipc_debug.c
@@ -251,7 +251,6 @@ db_print_domain(struct domain *d, const char *domain_name, int indent)
 	db_printf("dom_name: %s\n", d->dom_name);
 
 	db_print_indent(indent);
-	db_printf("dom_init: %p   ", d->dom_init);
 	db_printf("dom_externalize: %p   ", d->dom_externalize);
 	db_printf("dom_dispose: %p\n", d->dom_dispose);
 
diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c
index da21ed29a716..832db9f6e667 100644
--- a/sys/kern/uipc_domain.c
+++ b/sys/kern/uipc_domain.c
@@ -188,8 +188,6 @@ domain_init(void *arg)
 		return;
 	KASSERT((flags & DOMF_INITED) == 0 || !IS_DEFAULT_VNET(curvnet),
 	    ("Premature initialization of domain in non-default vnet"));
-	if (dp->dom_init)
-		(*dp->dom_init)();
 	for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++) {
 		/*
 		 * Note that with VIMAGE enabled, domain_init() will be
@@ -237,8 +235,6 @@ vnet_domain_uninit(void *arg)
 
 	if ((atomic_load_acq_int(&dp->dom_flags) & DOMF_SUPPORTED) == 0)
 		return;
-	if (dp->dom_destroy)
-		(*dp->dom_destroy)();
 }
 #endif
 
diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c
index ceeb4741e3f4..89d4198652c3 100644
--- a/sys/kern/uipc_usrreq.c
+++ b/sys/kern/uipc_usrreq.c
@@ -303,7 +303,6 @@ static void	unp_gc(__unused void *, int);
 static void	unp_scan(struct mbuf *, void (*)(struct filedescent **, int));
 static void	unp_discard(struct file *);
 static void	unp_freerights(struct filedescent **, int);
-static void	unp_init(void);
 static int	unp_internalize(struct mbuf **, struct thread *);
 static void	unp_internalize_fp(struct file *);
 static int	unp_externalize(struct mbuf *, struct mbuf **, int);
@@ -459,7 +458,6 @@ static struct protosw localsw[] = {
 static struct domain localdomain = {
 	.dom_family =		AF_LOCAL,
 	.dom_name =		"local",
-	.dom_init =		unp_init,
 	.dom_externalize =	unp_externalize,
 	.dom_dispose =		unp_dispose,
 	.dom_protosw =		localsw,
@@ -2148,15 +2146,10 @@ unp_zdtor(void *mem, int size __unused, void *arg __unused)
 #endif
 
 static void
-unp_init(void)
+unp_init(void *arg __unused)
 {
 	uma_dtor dtor;
 
-#ifdef VIMAGE
-	if (!IS_DEFAULT_VNET(curvnet))
-		return;
-#endif
-
 #ifdef INVARIANTS
 	dtor = unp_zdtor;
 #else
@@ -2177,6 +2170,7 @@ unp_init(void)
 	UNP_LINK_LOCK_INIT();
 	UNP_DEFERRED_LOCK_INIT();
 }
+SYSINIT(unp_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_SECOND, unp_init, NULL);
 
 static void
 unp_internalize_cleanup_rights(struct mbuf *control)
diff --git a/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c b/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c
index 973372b21761..c822276185cb 100644
--- a/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c
+++ b/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c
@@ -1907,7 +1907,7 @@ sdp_zone_change(void *tag)
 }
 
 static void
-sdp_init(void)
+sdp_init(void *arg __unused)
 {
 
 	LIST_INIT(&sdp_list);
@@ -1919,6 +1919,7 @@ sdp_init(void)
 	rx_comp_wq = create_singlethread_workqueue("rx_comp_wq");
 	ib_register_client(&sdp_client);
 }
+SYSINIT(sdp_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_SECOND, sdp_init, NULL);
 
 extern struct domain sdpdomain;
 
@@ -1966,7 +1967,6 @@ struct protosw sdpsw[] = {
 struct domain sdpdomain = {
 	.dom_family =		AF_INET_SDP,
 	.dom_name =		"SDP",
-	.dom_init =		sdp_init,
 	.dom_protosw =		sdpsw,
 	.dom_protoswNPROTOSW =	&sdpsw[sizeof(sdpsw)/sizeof(sdpsw[0])],
 };
diff --git a/sys/sys/domain.h b/sys/sys/domain.h
index dc09c9786443..c9defe8e4341 100644
--- a/sys/sys/domain.h
+++ b/sys/sys/domain.h
@@ -51,11 +51,7 @@ struct domain {
 	int	dom_family;		/* AF_xxx */
 	char	*dom_name;
 	int	dom_flags;
-	void	(*dom_init)		/* initialize domain data structures */
-		(void);
 	int	(*dom_probe)(void);	/* check for support (optional) */
-	void	(*dom_destroy)		/* cleanup structures / state */
-		(void);
 	int	(*dom_externalize)	/* externalize access rights */
 		(struct mbuf *, struct mbuf **, int);
 	void	(*dom_dispose)		/* dispose of internalized rights */