- Move sbcheck() declaration under SOCKBUF_DEBUG.
- Improve SOCKBUF_DEBUG macros. - Improve sbcheck(). Sponsored by: Netflix Sponsored by: Nginx, Inc.
This commit is contained in:
parent
8967b220a3
commit
57f43a45a3
@ -607,28 +607,36 @@ sbappendstream(struct sockbuf *sb, struct mbuf *m)
|
||||
|
||||
#ifdef SOCKBUF_DEBUG
|
||||
void
|
||||
sbcheck(struct sockbuf *sb)
|
||||
sbcheck(struct sockbuf *sb, const char *file, int line)
|
||||
{
|
||||
struct mbuf *m;
|
||||
struct mbuf *n = 0;
|
||||
u_long len = 0, mbcnt = 0;
|
||||
struct mbuf *m, *n;
|
||||
u_long cc, mbcnt;
|
||||
|
||||
SOCKBUF_LOCK_ASSERT(sb);
|
||||
|
||||
cc = mbcnt = 0;
|
||||
|
||||
for (m = sb->sb_mb; m; m = n) {
|
||||
n = m->m_nextpkt;
|
||||
for (; m; m = m->m_next) {
|
||||
len += m->m_len;
|
||||
if (m->m_len == 0) {
|
||||
printf("sb %p empty mbuf %p\n", sb, m);
|
||||
goto fail;
|
||||
}
|
||||
cc += m->m_len;
|
||||
mbcnt += MSIZE;
|
||||
if (m->m_flags & M_EXT) /*XXX*/ /* pretty sure this is bogus */
|
||||
mbcnt += m->m_ext.ext_size;
|
||||
}
|
||||
}
|
||||
if (len != sb->sb_cc || mbcnt != sb->sb_mbcnt) {
|
||||
printf("cc %ld != %u || mbcnt %ld != %u\n", len, sb->sb_cc,
|
||||
if (cc != sb->sb_cc || mbcnt != sb->sb_mbcnt) {
|
||||
printf("cc %ld != %u || mbcnt %ld != %u\n", cc, sb->sb_cc,
|
||||
mbcnt, sb->sb_mbcnt);
|
||||
panic("sbcheck");
|
||||
goto fail;
|
||||
}
|
||||
return;
|
||||
fail:
|
||||
panic("%s from %s:%u", __func__, file, line);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -136,7 +136,6 @@ int sbappendcontrol_locked(struct sockbuf *sb, struct mbuf *m0,
|
||||
struct mbuf *control);
|
||||
void sbappendrecord(struct sockbuf *sb, struct mbuf *m0);
|
||||
void sbappendrecord_locked(struct sockbuf *sb, struct mbuf *m0);
|
||||
void sbcheck(struct sockbuf *sb);
|
||||
void sbcompress(struct sockbuf *sb, struct mbuf *m, struct mbuf *n);
|
||||
struct mbuf *
|
||||
sbcreatecontrol(caddr_t p, int size, int type, int level);
|
||||
@ -224,13 +223,15 @@ sbspace(struct sockbuf *sb)
|
||||
|
||||
#ifdef SOCKBUF_DEBUG
|
||||
void sblastrecordchk(struct sockbuf *, const char *, int);
|
||||
#define SBLASTRECORDCHK(sb) sblastrecordchk((sb), __FILE__, __LINE__)
|
||||
|
||||
void sblastmbufchk(struct sockbuf *, const char *, int);
|
||||
void sbcheck(struct sockbuf *, const char *, int);
|
||||
#define SBLASTRECORDCHK(sb) sblastrecordchk((sb), __FILE__, __LINE__)
|
||||
#define SBLASTMBUFCHK(sb) sblastmbufchk((sb), __FILE__, __LINE__)
|
||||
#define SBCHECK(sb) sbcheck((sb), __FILE__, __LINE__)
|
||||
#else
|
||||
#define SBLASTRECORDCHK(sb) /* nothing */
|
||||
#define SBLASTMBUFCHK(sb) /* nothing */
|
||||
#define SBLASTRECORDCHK(sb) do {} while (0)
|
||||
#define SBLASTMBUFCHK(sb) do {} while (0)
|
||||
#define SBCHECK(sb) do {} while (0)
|
||||
#endif /* SOCKBUF_DEBUG */
|
||||
|
||||
#endif /* _KERNEL */
|
||||
|
Loading…
Reference in New Issue
Block a user