diff options
author | Paul Saab <ps@FreeBSD.org> | 2006-04-21 09:25:40 +0000 |
---|---|---|
committer | Paul Saab <ps@FreeBSD.org> | 2006-04-21 09:25:40 +0000 |
commit | 4f590175b7f3a4efecdd28ffd3306d30724d32c9 (patch) | |
tree | 104c2b8ecefe4f49f0608012d591ed6bc153383e /sys/kern/uipc_domain.c | |
parent | 9b062675f01a7f2f089796902a035081661f7a89 (diff) | |
download | src-4f590175b7f3a4efecdd28ffd3306d30724d32c9.tar.gz src-4f590175b7f3a4efecdd28ffd3306d30724d32c9.zip |
Allow for nmbclusters and maxsockets to be increased via sysctl.
An eventhandler is used to update all the various zones that depend
on these values.
Notes
Notes:
svn path=/head/; revision=157927
Diffstat (limited to 'sys/kern/uipc_domain.c')
-rw-r--r-- | sys/kern/uipc_domain.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c index 7a26ff5e6978..6adb336a14f8 100644 --- a/sys/kern/uipc_domain.c +++ b/sys/kern/uipc_domain.c @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include <sys/socket.h> #include <sys/protosw.h> #include <sys/domain.h> +#include <sys/eventhandler.h> #include <sys/mbuf.h> #include <sys/kernel.h> #include <sys/lock.h> @@ -189,6 +190,13 @@ net_add_domain(void *data) net_init_domain(dp); } +static void +socket_zone_change(void *tag) +{ + + uma_zone_set_max(socket_zone, maxsockets); +} + /* ARGSUSED*/ static void domaininit(void *dummy) @@ -201,6 +209,8 @@ domaininit(void *dummy) socket_zone = uma_zcreate("socket", sizeof(struct socket), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); uma_zone_set_max(socket_zone, maxsockets); + EVENTHANDLER_REGISTER(maxsockets_change, socket_zone_change, NULL, + EVENTHANDLER_PRI_FIRST); if (max_linkhdr < 16) /* XXX */ max_linkhdr = 16; |