From dc73a48dfc8f5e87096998cf06a2a534554f66ee Mon Sep 17 00:00:00 2001 From: wollman Date: Mon, 24 Feb 1997 20:40:40 +0000 Subject: Use the new sysctl(3) interface to mbuf statistics rather than groveling about in kmem. --- usr.bin/netstat/mbuf.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'usr.bin/netstat') 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 +#include #include #include -#include +#include #include #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]; -- cgit v1.1