mirror of
https://github.com/freebsd/freebsd-src
synced 2024-11-05 18:22:52 +00:00
Use the new sysctl(3) interface to mbuf statistics rather than
groveling about in kmem.
This commit is contained in:
parent
e8694bc269
commit
13ae2e2d75
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=23086
1 changed files with 19 additions and 7 deletions
|
@ -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;
|
||||
|
||||
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;
|
||||
}
|
||||
#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 (mbaddr == 0) {
|
||||
warnx("mbstat: symbol not in namelist");
|
||||
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];
|
||||
|
|
Loading…
Reference in a new issue