diff options
author | jeff <jeff@FreeBSD.org> | 2002-03-20 04:39:32 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2002-03-20 04:39:32 +0000 |
commit | 803cb2a2ba1f8847bbb7ea2f1c36cfc14a645091 (patch) | |
tree | bbc92e42ed6a1f0d410188d2ce1e6e8d1096b4d7 | |
parent | 622e42f19462cd07c1cbcbc13be5f4003e6e8d1c (diff) | |
download | FreeBSD-src-803cb2a2ba1f8847bbb7ea2f1c36cfc14a645091.zip FreeBSD-src-803cb2a2ba1f8847bbb7ea2f1c36cfc14a645091.tar.gz |
Backout part of my previous commit; I was wrong about vm_zone's handling of
limits on zones w/o objects.
-rw-r--r-- | sys/kern/uipc_sockbuf.c | 14 | ||||
-rw-r--r-- | sys/kern/uipc_socket2.c | 14 | ||||
-rw-r--r-- | sys/sys/socketvar.h | 1 |
3 files changed, 29 insertions, 0 deletions
diff --git a/sys/kern/uipc_sockbuf.c b/sys/kern/uipc_sockbuf.c index 3145e3f..40907f9 100644 --- a/sys/kern/uipc_sockbuf.c +++ b/sys/kern/uipc_sockbuf.c @@ -55,6 +55,8 @@ #include <sys/aio.h> /* for aio_swake proto */ #include <sys/event.h> +int maxsockets; + void (*aio_swake)(struct socket *, struct sockbuf *); /* @@ -1002,5 +1004,17 @@ SYSCTL_INT(_kern, KERN_DUMMY, dummy, CTLFLAG_RW, &dummy, 0, ""); SYSCTL_INT(_kern_ipc, KIPC_MAXSOCKBUF, maxsockbuf, CTLFLAG_RW, &sb_max, 0, "Maximum socket buffer size"); +SYSCTL_INT(_kern_ipc, OID_AUTO, maxsockets, CTLFLAG_RD, + &maxsockets, 0, "Maximum number of sockets avaliable"); SYSCTL_INT(_kern_ipc, KIPC_SOCKBUF_WASTE, sockbuf_waste_factor, CTLFLAG_RW, &sb_efficiency, 0, ""); + +/* + * Initialise maxsockets + */ +static void init_maxsockets(void *ignored) +{ + TUNABLE_INT_FETCH("kern.ipc.maxsockets", &maxsockets); + maxsockets = imax(maxsockets, imax(maxfiles, nmbclusters)); +} +SYSINIT(param, SI_SUB_TUNABLES, SI_ORDER_ANY, init_maxsockets, NULL); diff --git a/sys/kern/uipc_socket2.c b/sys/kern/uipc_socket2.c index 3145e3f..40907f9 100644 --- a/sys/kern/uipc_socket2.c +++ b/sys/kern/uipc_socket2.c @@ -55,6 +55,8 @@ #include <sys/aio.h> /* for aio_swake proto */ #include <sys/event.h> +int maxsockets; + void (*aio_swake)(struct socket *, struct sockbuf *); /* @@ -1002,5 +1004,17 @@ SYSCTL_INT(_kern, KERN_DUMMY, dummy, CTLFLAG_RW, &dummy, 0, ""); SYSCTL_INT(_kern_ipc, KIPC_MAXSOCKBUF, maxsockbuf, CTLFLAG_RW, &sb_max, 0, "Maximum socket buffer size"); +SYSCTL_INT(_kern_ipc, OID_AUTO, maxsockets, CTLFLAG_RD, + &maxsockets, 0, "Maximum number of sockets avaliable"); SYSCTL_INT(_kern_ipc, KIPC_SOCKBUF_WASTE, sockbuf_waste_factor, CTLFLAG_RW, &sb_efficiency, 0, ""); + +/* + * Initialise maxsockets + */ +static void init_maxsockets(void *ignored) +{ + TUNABLE_INT_FETCH("kern.ipc.maxsockets", &maxsockets); + maxsockets = imax(maxsockets, imax(maxfiles, nmbclusters)); +} +SYSINIT(param, SI_SUB_TUNABLES, SI_ORDER_ANY, init_maxsockets, NULL); diff --git a/sys/sys/socketvar.h b/sys/sys/socketvar.h index 9ba2d92..c31eb58 100644 --- a/sys/sys/socketvar.h +++ b/sys/sys/socketvar.h @@ -318,6 +318,7 @@ MALLOC_DECLARE(M_SONAME); MALLOC_DECLARE(M_ACCF); #endif +extern int maxsockets; extern u_long sb_max; extern uma_zone_t socket_zone; extern so_gen_t so_gencnt; |