diff options
author | Alfred Perlstein <alfred@FreeBSD.org> | 2000-07-15 06:02:48 +0000 |
---|---|---|
committer | Alfred Perlstein <alfred@FreeBSD.org> | 2000-07-15 06:02:48 +0000 |
commit | af0e6bcdf07c602bf2770f44779106e62078ec75 (patch) | |
tree | 2dced105f256cc7dcbe4c5effb86375e362b4b7f /sys/sys/mbuf.h | |
parent | a85978584cc37b468a8f24e79fd1bd5bc0edf478 (diff) | |
download | src-af0e6bcdf07c602bf2770f44779106e62078ec75.tar.gz src-af0e6bcdf07c602bf2770f44779106e62078ec75.zip |
Make mbstat.m_mtypes seperate and viewable via sysctl, also
expand the size from short to ulong
Submitted by: Ian Dowse <iedowse@maths.tcd.ie>
PR: kern/19809
Notes
Notes:
svn path=/head/; revision=63203
Diffstat (limited to 'sys/sys/mbuf.h')
-rw-r--r-- | sys/sys/mbuf.h | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h index 98c87fa14e16..155e6818a25d 100644 --- a/sys/sys/mbuf.h +++ b/sys/sys/mbuf.h @@ -180,6 +180,8 @@ struct mbuf { #define MT_CONTROL 14 /* extra-data protocol message */ #define MT_OOBDATA 15 /* expedited data */ +#define MT_NTYPES 16 /* number of mbuf types for mbtypes[] */ + /* * mbuf statistics */ @@ -191,7 +193,6 @@ struct mbstat { u_long m_drops; /* times failed to find space */ u_long m_wait; /* times waited for space */ u_long m_drain; /* times drained protocols for space */ - u_short m_mtypes[256]; /* type specific mbuf allocations */ u_long m_mcfail; /* times m_copym failed */ u_long m_mpfail; /* times m_pullup failed */ u_long m_msize; /* length of an mbuf */ @@ -284,9 +285,9 @@ union mcluster { _mm = mmbfree; \ if (_mm != NULL) { \ mmbfree = _mm->m_next; \ - mbstat.m_mtypes[MT_FREE]--; \ + mbtypes[MT_FREE]--; \ _mm->m_type = _mtype; \ - mbstat.m_mtypes[_mtype]++; \ + mbtypes[_mtype]++; \ _mm->m_next = NULL; \ _mm->m_nextpkt = NULL; \ _mm->m_data = _mm->m_dat; \ @@ -314,9 +315,9 @@ union mcluster { _mm = mmbfree; \ if (_mm != NULL) { \ mmbfree = _mm->m_next; \ - mbstat.m_mtypes[MT_FREE]--; \ + mbtypes[MT_FREE]--; \ _mm->m_type = _mtype; \ - mbstat.m_mtypes[_mtype]++; \ + mbtypes[_mtype]++; \ _mm->m_next = NULL; \ _mm->m_nextpkt = NULL; \ _mm->m_data = _mm->m_pktdat; \ @@ -419,12 +420,12 @@ union mcluster { struct mbuf *_mm = (m); \ \ KASSERT(_mm->m_type != MT_FREE, ("freeing free mbuf")); \ - mbstat.m_mtypes[_mm->m_type]--; \ + mbtypes[_mm->m_type]--; \ if (_mm->m_flags & M_EXT) \ MEXTFREE1(m); \ (n) = _mm->m_next; \ _mm->m_type = MT_FREE; \ - mbstat.m_mtypes[MT_FREE]++; \ + mbtypes[MT_FREE]++; \ _mm->m_next = mmbfree; \ mmbfree = _mm; \ MMBWAKEUP(); \ @@ -508,8 +509,8 @@ union mcluster { int _mt = (t); \ int _ms = splimp(); \ \ - mbstat.m_mtypes[_mm->m_type]--; \ - mbstat.m_mtypes[_mt]++; \ + mbtypes[_mm->m_type]--; \ + mbtypes[_mt]++; \ splx(_ms); \ _mm->m_type = (_mt); \ } while (0) @@ -536,6 +537,7 @@ extern int max_protohdr; /* largest protocol header */ extern int max_hdr; /* largest link+protocol header */ extern int max_datalen; /* MHLEN - max_hdr */ extern struct mbstat mbstat; +extern u_long mbtypes[MT_NTYPES]; /* per-type mbuf allocations */ extern int mbuf_wait; /* mbuf sleep time */ extern struct mbuf *mbutl; /* virtual address of mclusters */ extern char *mclrefcnt; /* cluster reference counts */ |