示例#1
0
/*
 * Drop data from (the front of) a sockbuf.
 */
void
ofp_sbdrop_locked(struct sockbuf *sb, int len)
{
	SOCKBUF_LOCK_ASSERT(sb);

	sbdrop_internal(sb, len);
}
示例#2
0
/*
 * Free all mbufs in a sockbuf.  Check that all resources are reclaimed.
 */
static void
sbflush_internal(struct sockbuf *sb)
{

	while (sb->sb_mbcnt) {
		/*
		 * Don't call sbdrop(sb, 0) if the leading mbuf is non-empty:
		 * we would loop forever. Panic instead.
		 */
		if (!sb->sb_cc && (sb->sb_mb == NULL || sb->sb_mb->m_len))
			break;
		sbdrop_internal(sb, (int)sb->sb_cc);
	}
	if (sb->sb_cc || sb->sb_mb || sb->sb_mbcnt)
		panic("sbflush_internal: cc %u || mb %p || mbcnt %u",
		    sb->sb_cc, (void *)sb->sb_mb, sb->sb_mbcnt);
}