Create a new branch of the kernel MIB, kern.ipc, to store
all of the configurables and instrumentation related to inter-process communication mechanisms. Some variables, like mbuf statistics, are instrumented here for the first time. For mbuf statistics: also keep track of m_copym() and m_pullup() failures, and provide for the user's inspection the compiled-in values of MSIZE, MHLEN, MCLBYTES, and MINCLSIZE.
This commit is contained in:
parent
5d8d8dd3b6
commit
639acc13e2
@ -31,7 +31,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)uipc_mbuf.c 8.2 (Berkeley) 1/4/94
|
||||
* $Id$
|
||||
* $Id: uipc_mbuf.c,v 1.28 1997/02/18 20:43:05 wollman Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
@ -41,6 +41,7 @@
|
||||
#define MBTYPES
|
||||
#include <sys/mbuf.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/sysctl.h>
|
||||
#include <sys/syslog.h>
|
||||
#include <sys/domain.h>
|
||||
#include <sys/protosw.h>
|
||||
@ -63,6 +64,15 @@ int max_protohdr;
|
||||
int max_hdr;
|
||||
int max_datalen;
|
||||
|
||||
SYSCTL_INT(_kern_ipc, KIPC_MAX_LINKHDR, max_linkhdr, CTLFLAG_RW,
|
||||
&max_linkhdr, 0, "");
|
||||
SYSCTL_INT(_kern_ipc, KIPC_MAX_PROTOHDR, max_protohdr, CTLFLAG_RW,
|
||||
&max_protohdr, 0, "");
|
||||
SYSCTL_INT(_kern_ipc, KIPC_MAX_HDR, max_hdr, CTLFLAG_RW, &max_hdr, 0, "");
|
||||
SYSCTL_INT(_kern_ipc, KIPC_MAX_DATALEN, max_datalen, CTLFLAG_RW,
|
||||
&max_datalen, 0, "");
|
||||
SYSCTL_STRUCT(_kern_ipc, KIPC_MBSTAT, mbstat, CTLFLAG_RW, &mbstat, mbstat, "");
|
||||
|
||||
static void m_reclaim __P((void));
|
||||
|
||||
/* "number of clusters of pages" */
|
||||
@ -78,6 +88,12 @@ mbinit(dummy)
|
||||
int s;
|
||||
|
||||
mmbfree = NULL; mclfree = NULL;
|
||||
mbstat.m_msize = MSIZE;
|
||||
mbstat.m_mclbytes = MCLBYTES;
|
||||
mbstat.m_minclsize = MINCLSIZE;
|
||||
mbstat.m_mlen = MLEN;
|
||||
mbstat.m_mhlen = MHLEN;
|
||||
|
||||
s = splimp();
|
||||
if (m_mballoc(NMB_INIT, M_DONTWAIT) == 0)
|
||||
goto bad;
|
||||
@ -385,7 +401,7 @@ m_prepend(m, len, how)
|
||||
* continuing for "len" bytes. If len is M_COPYALL, copy to end of mbuf.
|
||||
* The wait parameter is a choice of M_WAIT/M_DONTWAIT from caller.
|
||||
*/
|
||||
static int MCFail;
|
||||
#define MCFail (mbstat.m_mcfail)
|
||||
|
||||
struct mbuf *
|
||||
m_copym(m, off0, len, wait)
|
||||
@ -656,7 +672,7 @@ m_adj(mp, req_len)
|
||||
* If there is room, it will add up to max_protohdr-len extra bytes to the
|
||||
* contiguous region in an attempt to avoid being called next time.
|
||||
*/
|
||||
static int MPFail;
|
||||
#define MPFail (mbstat.m_mpfail)
|
||||
|
||||
struct mbuf *
|
||||
m_pullup(n, len)
|
||||
|
@ -31,14 +31,16 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)uipc_proto.c 8.1 (Berkeley) 6/10/93
|
||||
* $Id$
|
||||
* $Id: uipc_proto.c,v 1.9 1997/02/22 09:39:27 peter Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/protosw.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/domain.h>
|
||||
#include <sys/mbuf.h>
|
||||
#include <sys/protosw.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/sysctl.h>
|
||||
#include <sys/un.h>
|
||||
|
||||
#include <net/raw_cb.h>
|
||||
@ -68,3 +70,7 @@ static struct protosw localsw[] = {
|
||||
struct domain localdomain =
|
||||
{ AF_LOCAL, "local", 0, unp_externalize, unp_dispose,
|
||||
localsw, &localsw[sizeof(localsw)/sizeof(localsw[0])] };
|
||||
|
||||
SYSCTL_NODE(_net, PF_LOCAL, local, CTLFLAG_RW, 0, "Local domain");
|
||||
SYSCTL_NODE(_net_local, SOCK_STREAM, stream, CTLFLAG_RW, 0, "SOCK_STREAM");
|
||||
SYSCTL_NODE(_net_local, SOCK_DGRAM, dgram, CTLFLAG_RW, 0, "SOCK_DGRAM");
|
||||
|
@ -31,7 +31,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)uipc_socket2.c 8.1 (Berkeley) 6/10/93
|
||||
* $Id$
|
||||
* $Id: uipc_socket2.c,v 1.21 1997/02/19 19:15:43 wollman Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
@ -54,11 +54,8 @@
|
||||
*/
|
||||
|
||||
u_long sb_max = SB_MAX; /* XXX should be static */
|
||||
SYSCTL_INT(_kern, KERN_MAXSOCKBUF, maxsockbuf, CTLFLAG_RW, &sb_max, 0, "")
|
||||
|
||||
static u_long sb_efficiency = 8; /* parameter for sbreserve() */
|
||||
SYSCTL_INT(_kern, OID_AUTO, sockbuf_waste_factor, CTLFLAG_RW, &sb_efficiency,
|
||||
0, "");
|
||||
|
||||
/*
|
||||
* Procedures to manipulate state flags of socket
|
||||
@ -1005,3 +1002,17 @@ pru_sense_null(struct socket *so, struct stat *sb)
|
||||
sb->st_blksize = so->so_snd.sb_hiwat;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Here is the definition of some of the basic objects in the kern.ipc
|
||||
* branch of the MIB.
|
||||
*/
|
||||
SYSCTL_NODE(_kern, KERN_IPC, ipc, CTLFLAG_RW, 0, "IPC");
|
||||
|
||||
/* This takes the place of kern.maxsockbuf, which moved to kern.ipc. */
|
||||
static int dummy;
|
||||
SYSCTL_INT(_kern, KERN_DUMMY, dummy, CTLFLAG_RW, &dummy, 0, "");
|
||||
|
||||
SYSCTL_INT(_kern_ipc, KIPC_MAXSOCKBUF, maxsockbuf, CTLFLAG_RW, &sb_max, 0, "")
|
||||
SYSCTL_INT(_kern_ipc, KIPC_SOCKBUF_WASTE, sockbuf_waste_factor, CTLFLAG_RW,
|
||||
&sb_efficiency, 0, "");
|
||||
|
@ -31,7 +31,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)uipc_socket.c 8.3 (Berkeley) 4/15/94
|
||||
* $Id$
|
||||
* $Id: uipc_socket.c,v 1.23 1997/02/22 09:39:28 peter Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
@ -51,7 +51,8 @@
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
static int somaxconn = SOMAXCONN;
|
||||
SYSCTL_INT(_kern, KERN_SOMAXCONN, somaxconn, CTLFLAG_RW, &somaxconn, 0, "");
|
||||
SYSCTL_INT(_kern_ipc, KIPC_SOMAXCONN, somaxconn, CTLFLAG_RW, &somaxconn,
|
||||
0, "");
|
||||
|
||||
/*
|
||||
* Socket operation routines.
|
||||
|
@ -31,7 +31,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)uipc_socket2.c 8.1 (Berkeley) 6/10/93
|
||||
* $Id$
|
||||
* $Id: uipc_socket2.c,v 1.21 1997/02/19 19:15:43 wollman Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
@ -54,11 +54,8 @@
|
||||
*/
|
||||
|
||||
u_long sb_max = SB_MAX; /* XXX should be static */
|
||||
SYSCTL_INT(_kern, KERN_MAXSOCKBUF, maxsockbuf, CTLFLAG_RW, &sb_max, 0, "")
|
||||
|
||||
static u_long sb_efficiency = 8; /* parameter for sbreserve() */
|
||||
SYSCTL_INT(_kern, OID_AUTO, sockbuf_waste_factor, CTLFLAG_RW, &sb_efficiency,
|
||||
0, "");
|
||||
|
||||
/*
|
||||
* Procedures to manipulate state flags of socket
|
||||
@ -1005,3 +1002,17 @@ pru_sense_null(struct socket *so, struct stat *sb)
|
||||
sb->st_blksize = so->so_snd.sb_hiwat;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Here is the definition of some of the basic objects in the kern.ipc
|
||||
* branch of the MIB.
|
||||
*/
|
||||
SYSCTL_NODE(_kern, KERN_IPC, ipc, CTLFLAG_RW, 0, "IPC");
|
||||
|
||||
/* This takes the place of kern.maxsockbuf, which moved to kern.ipc. */
|
||||
static int dummy;
|
||||
SYSCTL_INT(_kern, KERN_DUMMY, dummy, CTLFLAG_RW, &dummy, 0, "");
|
||||
|
||||
SYSCTL_INT(_kern_ipc, KIPC_MAXSOCKBUF, maxsockbuf, CTLFLAG_RW, &sb_max, 0, "")
|
||||
SYSCTL_INT(_kern_ipc, KIPC_SOCKBUF_WASTE, sockbuf_waste_factor, CTLFLAG_RW,
|
||||
&sb_efficiency, 0, "");
|
||||
|
@ -31,26 +31,27 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* From: @(#)uipc_usrreq.c 8.3 (Berkeley) 1/4/94
|
||||
* $Id$
|
||||
* $Id: uipc_usrreq.c,v 1.19 1997/02/22 09:39:29 peter Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/queue.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/proc.h>
|
||||
#include <sys/filedesc.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/domain.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/filedesc.h>
|
||||
#include <sys/mbuf.h>
|
||||
#include <sys/namei.h>
|
||||
#include <sys/proc.h>
|
||||
#include <sys/protosw.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/socketvar.h>
|
||||
#include <sys/unpcb.h>
|
||||
#include <sys/un.h>
|
||||
#include <sys/namei.h>
|
||||
#include <sys/vnode.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/mbuf.h>
|
||||
#include <sys/sysctl.h>
|
||||
#include <sys/un.h>
|
||||
#include <sys/unpcb.h>
|
||||
#include <sys/vnode.h>
|
||||
|
||||
/*
|
||||
* Unix communications domain.
|
||||
@ -358,6 +359,16 @@ static u_long unpdg_recvspace = 4*1024;
|
||||
|
||||
static int unp_rights; /* file descriptors in flight */
|
||||
|
||||
SYSCTL_INT(_net_local_stream, OID_AUTO, sendspace, CTLFLAG_RW,
|
||||
&unpst_sendspace, 0, "");
|
||||
SYSCTL_INT(_net_local_stream, OID_AUTO, recvspace, CTLFLAG_RW,
|
||||
&unpst_recvspace, 0, "");
|
||||
SYSCTL_INT(_net_local_dgram, OID_AUTO, maxdgram, CTLFLAG_RW,
|
||||
&unpdg_sendspace, 0, "");
|
||||
SYSCTL_INT(_net_local_dgram, OID_AUTO, recvspace, CTLFLAG_RW,
|
||||
&unpdg_recvspace, 0, "");
|
||||
SYSCTL_INT(_net_local, OID_AUTO, inflight, CTLFLAG_RD, &unp_rights, 0, "");
|
||||
|
||||
static int
|
||||
unp_attach(so)
|
||||
struct socket *so;
|
||||
|
Loading…
Reference in New Issue
Block a user