summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_domain.c
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2004-03-29 17:00:05 +0000
committerrwatson <rwatson@FreeBSD.org>2004-03-29 17:00:05 +0000
commitf31d09974779144113570ae1799c033ad751cf98 (patch)
tree1f64733b644b314df40bcb87eab86d0b5b64ac3d /sys/kern/uipc_domain.c
parenta9677be93b2494b3aff1faea5058e891f1a71955 (diff)
downloadFreeBSD-src-f31d09974779144113570ae1799c033ad751cf98.zip
FreeBSD-src-f31d09974779144113570ae1799c033ad751cf98.tar.gz
If debug.mpsafenet, initialize UNIX domain socket timeouts as MPSAFE;
otherwise, assert Giant in the callouts.
Diffstat (limited to 'sys/kern/uipc_domain.c')
-rw-r--r--sys/kern/uipc_domain.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c
index 33a21c5..b94c114 100644
--- a/sys/kern/uipc_domain.c
+++ b/sys/kern/uipc_domain.c
@@ -134,8 +134,13 @@ domaininit(void *dummy)
if (max_linkhdr < 16) /* XXX */
max_linkhdr = 16;
- callout_init(&pffast_callout, 0);
- callout_init(&pfslow_callout, 0);
+ if (debug_mpsafenet) {
+ callout_init(&pffast_callout, CALLOUT_MPSAFE);
+ callout_init(&pfslow_callout, CALLOUT_MPSAFE);
+ } else {
+ callout_init(&pffast_callout, 0);
+ callout_init(&pfslow_callout, 0);
+ }
callout_reset(&pffast_callout, 1, pffasttimo, NULL);
callout_reset(&pfslow_callout, 1, pfslowtimo, NULL);
@@ -236,6 +241,8 @@ pfslowtimo(arg)
register struct domain *dp;
register struct protosw *pr;
+ NET_ASSERT_GIANT();
+
for (dp = domains; dp; dp = dp->dom_next)
for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
if (pr->pr_slowtimo)
@@ -250,6 +257,8 @@ pffasttimo(arg)
register struct domain *dp;
register struct protosw *pr;
+ NET_ASSERT_GIANT();
+
for (dp = domains; dp; dp = dp->dom_next)
for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
if (pr->pr_fasttimo)
OpenPOWER on IntegriCloud