diff options
author | wollman <wollman@FreeBSD.org> | 1997-02-24 20:40:40 +0000 |
---|---|---|
committer | wollman <wollman@FreeBSD.org> | 1997-02-24 20:40:40 +0000 |
commit | dc73a48dfc8f5e87096998cf06a2a534554f66ee (patch) | |
tree | 46ce4121b4d1f8ad875728e152820e1421c96d51 /usr.bin | |
parent | a174a13af3f3ab7c4603e7530a5089069d6aef33 (diff) | |
download | FreeBSD-src-dc73a48dfc8f5e87096998cf06a2a534554f66ee.zip FreeBSD-src-dc73a48dfc8f5e87096998cf06a2a534554f66ee.tar.gz |
Use the new sysctl(3) interface to mbuf statistics rather than
groveling about in kmem.
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/netstat/mbuf.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/usr.bin/netstat/mbuf.c b/usr.bin/netstat/mbuf.c index cd751da..cfefa5e 100644 --- a/usr.bin/netstat/mbuf.c +++ b/usr.bin/netstat/mbuf.c @@ -36,9 +36,10 @@ static char sccsid[] = "@(#)mbuf.c 8.1 (Berkeley) 6/6/93"; #endif /* not lint */ #include <sys/param.h> +#include <sys/mbuf.h> #include <sys/protosw.h> #include <sys/socket.h> -#include <sys/mbuf.h> +#include <sys/sysctl.h> #include <stdio.h> #include "netstat.h" @@ -82,17 +83,28 @@ mbpr(mbaddr) register int totmem, totfree, totmbufs; register int i; register struct mbtypes *mp; + int name[3]; + size_t mbstatlen; - if (nmbtypes != 256) { - warnx("unexpected change to mbstat; check source"); + name[0] = CTL_KERN; + name[1] = KERN_IPC; + name[2] = KIPC_MBSTAT; + mbstatlen = sizeof mbstat; + + if (sysctl(name, 3, &mbstat, &mbstatlen, 0, 0) < 0) { + warn("sysctl: retrieving mbstat"); return; } - if (mbaddr == 0) { - warnx("mbstat: symbol not in namelist"); +#undef MSIZE +#define MSIZE (mbstat.m_msize) +#undef MCLBYTES +#define MCLBYTES (mbstat.m_mclbytes) + + if (nmbtypes != 256) { + warnx("unexpected change to mbstat; check source"); return; } - if (kread(mbaddr, (char *)&mbstat, sizeof (mbstat))) - return; + totmbufs = 0; for (mp = mbtypes; mp->mt_name; mp++) totmbufs += mbstat.m_mtypes[mp->mt_type]; |