aboutsummaryrefslogtreecommitdiff
path: root/sys/sys/mbuf.h
diff options
context:
space:
mode:
authorAlfred Perlstein <alfred@FreeBSD.org>2000-07-15 06:02:48 +0000
committerAlfred Perlstein <alfred@FreeBSD.org>2000-07-15 06:02:48 +0000
commitaf0e6bcdf07c602bf2770f44779106e62078ec75 (patch)
tree2dced105f256cc7dcbe4c5effb86375e362b4b7f /sys/sys/mbuf.h
parenta85978584cc37b468a8f24e79fd1bd5bc0edf478 (diff)
downloadsrc-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.h20
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 */