diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c index d645af6e55f0..feb07fb323d9 100644 --- a/sys/kern/uipc_mbuf.c +++ b/sys/kern/uipc_mbuf.c @@ -55,84 +55,67 @@ __FBSDID("$FreeBSD$"); #include #include -SDT_PROBE_DEFINE5_XLATE(sdt, , , m__init, - "struct mbuf *", "mbufinfo_t *", - "uint32_t", "uint32_t", - "uint16_t", "uint16_t", - "uint32_t", "uint32_t", +SDT_PROBE_DEFINE5_XLATE(sdt, , , m__init, "struct mbuf *", "mbufinfo_t *", + "uint32_t", "uint32_t", "uint16_t", "uint16_t", "uint32_t", "uint32_t", "uint32_t", "uint32_t"); -SDT_PROBE_DEFINE3_XLATE(sdt, , , m__gethdr, - "uint32_t", "uint32_t", - "uint16_t", "uint16_t", - "struct mbuf *", "mbufinfo_t *"); - -SDT_PROBE_DEFINE3_XLATE(sdt, , , m__get, - "uint32_t", "uint32_t", - "uint16_t", "uint16_t", - "struct mbuf *", "mbufinfo_t *"); - -SDT_PROBE_DEFINE4_XLATE(sdt, , , m__getcl, - "uint32_t", "uint32_t", - "uint16_t", "uint16_t", - "uint32_t", "uint32_t", - "struct mbuf *", "mbufinfo_t *"); - -SDT_PROBE_DEFINE3_XLATE(sdt, , , m__clget, - "struct mbuf *", "mbufinfo_t *", - "uint32_t", "uint32_t", - "uint32_t", "uint32_t"); +SDT_PROBE_DEFINE3_XLATE(sdt, , , m__gethdr, "uint32_t", "uint32_t", "uint16_t", + "uint16_t", "struct mbuf *", "mbufinfo_t *"); + +SDT_PROBE_DEFINE3_XLATE(sdt, , , m__get, "uint32_t", "uint32_t", "uint16_t", + "uint16_t", "struct mbuf *", "mbufinfo_t *"); + +SDT_PROBE_DEFINE4_XLATE(sdt, , , m__getcl, "uint32_t", "uint32_t", "uint16_t", + "uint16_t", "uint32_t", "uint32_t", "struct mbuf *", "mbufinfo_t *"); + +SDT_PROBE_DEFINE3_XLATE(sdt, , , m__clget, "struct mbuf *", "mbufinfo_t *", + "uint32_t", "uint32_t", "uint32_t", "uint32_t"); -SDT_PROBE_DEFINE4_XLATE(sdt, , , m__cljget, - "struct mbuf *", "mbufinfo_t *", - "uint32_t", "uint32_t", - "uint32_t", "uint32_t", - "void*", "void*"); +SDT_PROBE_DEFINE4_XLATE(sdt, , , m__cljget, "struct mbuf *", "mbufinfo_t *", + "uint32_t", "uint32_t", "uint32_t", "uint32_t", "void*", "void*"); SDT_PROBE_DEFINE(sdt, , , m__cljset); -SDT_PROBE_DEFINE1_XLATE(sdt, , , m__free, - "struct mbuf *", "mbufinfo_t *"); +SDT_PROBE_DEFINE1_XLATE(sdt, , , m__free, "struct mbuf *", "mbufinfo_t *"); -SDT_PROBE_DEFINE1_XLATE(sdt, , , m__freem, - "struct mbuf *", "mbufinfo_t *"); +SDT_PROBE_DEFINE1_XLATE(sdt, , , m__freem, "struct mbuf *", "mbufinfo_t *"); #include -int max_linkhdr; -int max_protohdr; -int max_hdr; -int max_datalen; +int max_linkhdr; +int max_protohdr; +int max_hdr; +int max_datalen; #ifdef MBUF_STRESS_TEST -int m_defragpackets; -int m_defragbytes; -int m_defraguseless; -int m_defragfailure; -int m_defragrandomfailures; +int m_defragpackets; +int m_defragbytes; +int m_defraguseless; +int m_defragfailure; +int m_defragrandomfailures; #endif /* * sysctl(8) exported objects */ -SYSCTL_INT(_kern_ipc, KIPC_MAX_LINKHDR, max_linkhdr, CTLFLAG_RD, - &max_linkhdr, 0, "Size of largest link layer header"); +SYSCTL_INT(_kern_ipc, KIPC_MAX_LINKHDR, max_linkhdr, CTLFLAG_RD, &max_linkhdr, + 0, "Size of largest link layer header"); SYSCTL_INT(_kern_ipc, KIPC_MAX_PROTOHDR, max_protohdr, CTLFLAG_RD, - &max_protohdr, 0, "Size of largest protocol layer header"); -SYSCTL_INT(_kern_ipc, KIPC_MAX_HDR, max_hdr, CTLFLAG_RD, - &max_hdr, 0, "Size of largest link plus protocol header"); -SYSCTL_INT(_kern_ipc, KIPC_MAX_DATALEN, max_datalen, CTLFLAG_RD, - &max_datalen, 0, "Minimum space left in mbuf after max_hdr"); + &max_protohdr, 0, "Size of largest protocol layer header"); +SYSCTL_INT(_kern_ipc, KIPC_MAX_HDR, max_hdr, CTLFLAG_RD, &max_hdr, 0, + "Size of largest link plus protocol header"); +SYSCTL_INT(_kern_ipc, KIPC_MAX_DATALEN, max_datalen, CTLFLAG_RD, &max_datalen, + 0, "Minimum space left in mbuf after max_hdr"); #ifdef MBUF_STRESS_TEST -SYSCTL_INT(_kern_ipc, OID_AUTO, m_defragpackets, CTLFLAG_RD, - &m_defragpackets, 0, ""); -SYSCTL_INT(_kern_ipc, OID_AUTO, m_defragbytes, CTLFLAG_RD, - &m_defragbytes, 0, ""); -SYSCTL_INT(_kern_ipc, OID_AUTO, m_defraguseless, CTLFLAG_RD, - &m_defraguseless, 0, ""); -SYSCTL_INT(_kern_ipc, OID_AUTO, m_defragfailure, CTLFLAG_RD, - &m_defragfailure, 0, ""); +SYSCTL_INT( + _kern_ipc, OID_AUTO, m_defragpackets, CTLFLAG_RD, &m_defragpackets, 0, ""); +SYSCTL_INT( + _kern_ipc, OID_AUTO, m_defragbytes, CTLFLAG_RD, &m_defragbytes, 0, ""); +SYSCTL_INT( + _kern_ipc, OID_AUTO, m_defraguseless, CTLFLAG_RD, &m_defraguseless, 0, ""); +SYSCTL_INT( + _kern_ipc, OID_AUTO, m_defragfailure, CTLFLAG_RD, &m_defragfailure, 0, ""); SYSCTL_INT(_kern_ipc, OID_AUTO, m_defragrandomfailures, CTLFLAG_RW, - &m_defragrandomfailures, 0, ""); + &m_defragrandomfailures, 0, ""); #endif /* @@ -196,9 +179,9 @@ mb_dupcl(struct mbuf *n, struct mbuf *m) { volatile u_int *refcnt; - KASSERT(m->m_flags & (M_EXT|M_EXTPG), + KASSERT(m->m_flags & (M_EXT | M_EXTPG), ("%s: M_EXT|M_EXTPG not set on %p", __func__, m)); - KASSERT(!(n->m_flags & (M_EXT|M_EXTPG)), + KASSERT(!(n->m_flags & (M_EXT | M_EXTPG)), ("%s: M_EXT|M_EXTPG set on %p", __func__, n)); /* @@ -262,12 +245,12 @@ m_demote(struct mbuf *m0, int all, int flags) struct mbuf *m; for (m = all ? m0 : m0->m_next; m != NULL; m = m->m_next) { - KASSERT(m->m_nextpkt == NULL, ("%s: m_nextpkt in m %p, m0 %p", - __func__, m, m0)); + KASSERT(m->m_nextpkt == NULL, + ("%s: m_nextpkt in m %p, m0 %p", __func__, m, m0)); if (m->m_flags & M_PKTHDR) m_demote_pkthdr(m); - m->m_flags = m->m_flags & (M_EXT | M_RDONLY | M_NOFREE | - M_EXTPG | flags); + m->m_flags = m->m_flags & + (M_EXT | M_RDONLY | M_NOFREE | M_EXTPG | flags); } } @@ -286,9 +269,9 @@ m_sanity(struct mbuf *m0, int sanitize) int pktlen = 0; #ifdef INVARIANTS -#define M_SANITY_ACTION(s) panic("mbuf %p: " s, m) +#define M_SANITY_ACTION(s) panic("mbuf %p: " s, m) #else -#define M_SANITY_ACTION(s) printf("mbuf %p: " s, m) +#define M_SANITY_ACTION(s) printf("mbuf %p: " s, m) #endif for (m = m0; m != NULL; m = m->m_next) { @@ -312,7 +295,8 @@ m_sanity(struct mbuf *m0, int sanitize) m_freem(m->m_nextpkt); m->m_nextpkt = (struct mbuf *)0xDEADC0DE; } else - M_SANITY_ACTION("m->m_nextpkt on in-chain mbuf"); + M_SANITY_ACTION( + "m->m_nextpkt on in-chain mbuf"); } /* packet length (not mbuf length!) calculation */ @@ -348,7 +332,7 @@ m_sanity(struct mbuf *m0, int sanitize) } return 1; -#undef M_SANITY_ACTION +#undef M_SANITY_ACTION } /* @@ -397,12 +381,12 @@ m_move_pkthdr(struct mbuf *to, struct mbuf *from) if (to->m_flags & M_PKTHDR) m_tag_delete_chain(to, NULL); #endif - to->m_flags = (from->m_flags & M_COPYFLAGS) | - (to->m_flags & (M_EXT | M_EXTPG)); + to->m_flags = + (from->m_flags & M_COPYFLAGS) | (to->m_flags & (M_EXT | M_EXTPG)); if ((to->m_flags & M_EXT) == 0) to->m_data = to->m_pktdat; - to->m_pkthdr = from->m_pkthdr; /* especially tags */ - SLIST_INIT(&from->m_pkthdr.tags); /* purge tags from src */ + to->m_pkthdr = from->m_pkthdr; /* especially tags */ + SLIST_INIT(&from->m_pkthdr.tags); /* purge tags from src */ from->m_flags &= ~M_PKTHDR; if (from->m_pkthdr.csum_flags & CSUM_SND_TAG) { from->m_pkthdr.csum_flags &= ~CSUM_SND_TAG; @@ -436,8 +420,8 @@ m_dup_pkthdr(struct mbuf *to, const struct mbuf *from, int how) if (to->m_flags & M_PKTHDR) m_tag_delete_chain(to, NULL); #endif - to->m_flags = (from->m_flags & M_COPYFLAGS) | - (to->m_flags & (M_EXT | M_EXTPG)); + to->m_flags = + (from->m_flags & M_COPYFLAGS) | (to->m_flags & (M_EXT | M_EXTPG)); if ((to->m_flags & M_EXT) == 0) to->m_data = to->m_pktdat; to->m_pkthdr = from->m_pkthdr; @@ -527,11 +511,11 @@ m_copym(struct mbuf *m, int off0, int len, int wait) copyhdr = 0; } n->m_len = min(len, m->m_len - off); - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data + off; mb_dupcl(n, m); } else - bcopy(mtod(m, caddr_t)+off, mtod(n, caddr_t), + bcopy(mtod(m, caddr_t) + off, mtod(n, caddr_t), (u_int)n->m_len); if (len != M_COPYALL) len -= n->m_len; @@ -569,11 +553,11 @@ m_copypacket(struct mbuf *m, int how) if (!m_dup_pkthdr(n, m, how)) goto nospace; n->m_len = m->m_len; - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data; mb_dupcl(n, m); } else { - n->m_data = n->m_pktdat + (m->m_data - m->m_pktdat ); + n->m_data = n->m_pktdat + (m->m_data - m->m_pktdat); bcopy(mtod(m, char *), mtod(n, char *), n->m_len); } @@ -587,7 +571,7 @@ m_copypacket(struct mbuf *m, int how) n = n->m_next; n->m_len = m->m_len; - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data; mb_dupcl(n, m); } else { @@ -611,8 +595,8 @@ m_copyfromunmapped(const struct mbuf *m, int off, int len, caddr_t cp) KASSERT(off >= 0, ("m_copyfromunmapped: negative off %d", off)); KASSERT(len >= 0, ("m_copyfromunmapped: negative len %d", len)); - KASSERT(off < m->m_len, - ("m_copyfromunmapped: len exceeds mbuf length")); + KASSERT( + off < m->m_len, ("m_copyfromunmapped: len exceeds mbuf length")); iov.iov_base = cp; iov.iov_len = len; uio.uio_resid = len; @@ -622,8 +606,8 @@ m_copyfromunmapped(const struct mbuf *m, int off, int len, caddr_t cp) uio.uio_offset = 0; uio.uio_rw = UIO_READ; error = m_unmappedtouio(m, off, &uio, len); - KASSERT(error == 0, ("m_unmappedtouio failed: off %d, len %d", off, - len)); + KASSERT( + error == 0, ("m_unmappedtouio failed: off %d, len %d", off, len)); } /* @@ -679,7 +663,7 @@ m_dup(const struct mbuf *m, int how) remain = m->m_pkthdr.len; moff = 0; p = ⊤ - while (remain > 0 || top == NULL) { /* allow m->m_pkthdr.len == 0 */ + while (remain > 0 || top == NULL) { /* allow m->m_pkthdr.len == 0 */ struct mbuf *n; /* Get the next new mbuf */ @@ -693,7 +677,7 @@ m_dup(const struct mbuf *m, int how) if (n == NULL) goto nospace; - if (top == NULL) { /* First one, must be PKTHDR */ + if (top == NULL) { /* First one, must be PKTHDR */ if (!m_dup_pkthdr(n, m, how)) { m_free(n); goto nospace; @@ -724,7 +708,7 @@ m_dup(const struct mbuf *m, int how) /* Check correct total mbuf length */ KASSERT((remain > 0 && m != NULL) || (remain == 0 && m == NULL), - ("%s: bogus m_pkthdr.len", __func__)); + ("%s: bogus m_pkthdr.len", __func__)); } return (top); @@ -744,8 +728,7 @@ m_cat(struct mbuf *m, struct mbuf *n) while (m->m_next) m = m->m_next; while (n) { - if (!M_WRITABLE(m) || - (n->m_flags & M_EXTPG) != 0 || + if (!M_WRITABLE(m) || (n->m_flags & M_EXTPG) != 0 || M_TRAILINGSPACE(m) < n->m_len) { /* just join the two chains */ m->m_next = n; @@ -863,16 +846,16 @@ m_pullup(struct mbuf *n, int len) int count; int space; - KASSERT((n->m_flags & M_EXTPG) == 0, - ("%s: unmapped mbuf %p", __func__, n)); + KASSERT( + (n->m_flags & M_EXTPG) == 0, ("%s: unmapped mbuf %p", __func__, n)); /* * If first mbuf has no cluster, and has room for len bytes * without shifting current data, pullup into it, * otherwise allocate a new mbuf to prepend to the chain. */ - if ((n->m_flags & M_EXT) == 0 && - n->m_data + len < &n->m_dat[MLEN] && n->m_next) { + if ((n->m_flags & M_EXT) == 0 && n->m_data + len < &n->m_dat[MLEN] && + n->m_next) { if (n->m_len >= len) return (n); m = n; @@ -891,7 +874,7 @@ m_pullup(struct mbuf *n, int len) do { count = min(min(max(len, max_protohdr), space), n->m_len); bcopy(mtod(n, caddr_t), mtod(m, caddr_t) + m->m_len, - (u_int)count); + (u_int)count); len -= count; m->m_len += count; n->m_len -= count; @@ -902,7 +885,7 @@ m_pullup(struct mbuf *n, int len) n = m_free(n); } while (len > 0 && n); if (len > 0) { - (void) m_free(m); + (void)m_free(m); goto bad; } m->m_next = n; @@ -946,12 +929,12 @@ m_copyup(struct mbuf *n, int len, int dstoff) n = m_free(n); } while (len > 0 && n); if (len > 0) { - (void) m_free(m); + (void)m_free(m); goto bad; } m->m_next = n; return (m); - bad: +bad: m_freem(n); return (NULL); } @@ -1005,14 +988,14 @@ m_split(struct mbuf *m0, int len0, int wait) n->m_pkthdr.rcvif = m0->m_pkthdr.rcvif; n->m_pkthdr.len = m0->m_pkthdr.len - len0; m0->m_pkthdr.len = len0; - if (m->m_flags & (M_EXT|M_EXTPG)) + if (m->m_flags & (M_EXT | M_EXTPG)) goto extpacket; if (remain > MHLEN) { /* m can't be the lead packet */ M_ALIGN(n, 0); n->m_next = m_split(m, len, wait); if (n->m_next == NULL) { - (void) m_free(n); + (void)m_free(n); return (NULL); } else { n->m_len = 0; @@ -1031,7 +1014,7 @@ m_split(struct mbuf *m0, int len0, int wait) M_ALIGN(n, remain); } extpacket: - if (m->m_flags & (M_EXT|M_EXTPG)) { + if (m->m_flags & (M_EXT | M_EXTPG)) { n->m_data = m->m_data + len; mb_dupcl(n, m); } else { @@ -1060,7 +1043,7 @@ m_devget(char *buf, int totlen, int off, struct ifnet *ifp, return (NULL); while (totlen > 0) { - if (top == NULL) { /* First one, must be PKTHDR */ + if (top == NULL) { /* First one, must be PKTHDR */ if (totlen + off >= MINCLSIZE) { m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); len = MCLBYTES; @@ -1068,7 +1051,8 @@ m_devget(char *buf, int totlen, int off, struct ifnet *ifp, m = m_gethdr(M_NOWAIT, MT_DATA); len = MHLEN; - /* Place initial small packet/header at end of mbuf */ + /* Place initial small packet/header at end of + * mbuf */ if (m && totlen + off + max_linkhdr <= MHLEN) { m->m_data += max_linkhdr; len -= max_linkhdr; @@ -1138,10 +1122,10 @@ m_copyback(struct mbuf *m0, int off, int len, c_caddr_t cp) } while (len > 0) { if (m->m_next == NULL && (len > m->m_len - off)) { - m->m_len += min(len - (m->m_len - off), - M_TRAILINGSPACE(m)); + m->m_len += + min(len - (m->m_len - off), M_TRAILINGSPACE(m)); } - mlen = min (m->m_len - off, len); + mlen = min(m->m_len - off, len); bcopy(cp, off + mtod(m, caddr_t), (u_int)mlen); cp += mlen; len -= mlen; @@ -1159,7 +1143,8 @@ m_copyback(struct mbuf *m0, int off, int len, c_caddr_t cp) } m = m->m_next; } -out: if (((m = m0)->m_flags & M_PKTHDR) && (m->m_pkthdr.len < totlen)) +out: + if (((m = m0)->m_flags & M_PKTHDR) && (m->m_pkthdr.len < totlen)) m->m_pkthdr.len = totlen; } @@ -1214,8 +1199,8 @@ m_append(struct mbuf *m0, int len, c_caddr_t cp) * the beginning, continuing for "len" bytes. */ int -m_apply(struct mbuf *m, int off, int len, - int (*f)(void *, void *, u_int), void *arg) +m_apply(struct mbuf *m, int off, int len, int (*f)(void *, void *, u_int), + void *arg) { u_int count; int rval; @@ -1292,9 +1277,11 @@ m_print(const struct mbuf *m, int maxlen) if (maxlen != -1 && pdata > maxlen) pdata = maxlen; printf("mbuf: %p len: %d, next: %p, %b%s", m2, m2->m_len, - m2->m_next, m2->m_flags, "\20\20freelist\17skipfw" + m2->m_next, m2->m_flags, + "\20\20freelist\17skipfw" "\11proto5\10proto4\7proto3\6proto2\5proto1\4rdonly" - "\3eor\2pkthdr\1ext", pdata ? "" : "\n"); + "\3eor\2pkthdr\1ext", + pdata ? "" : "\n"); if (pdata) printf(", %*D\n", pdata, (u_char *)m2->m_data, "-"); if (len != -1) @@ -1484,10 +1471,8 @@ m_collapse(struct mbuf *m0, int how, int maxfrags) n = m->m_next; if (n == NULL) break; - if (M_WRITABLE(m) && - n->m_len < M_TRAILINGSPACE(m)) { - m_copydata(n, 0, n->m_len, - mtod(m, char *) + m->m_len); + if (M_WRITABLE(m) && n->m_len < M_TRAILINGSPACE(m)) { + m_copydata(n, 0, n->m_len, mtod(m, char *) + m->m_len); m->m_len += n->m_len; m->m_next = n->m_next; curfrags -= frags_per_mbuf(n); @@ -1498,24 +1483,24 @@ m_collapse(struct mbuf *m0, int how, int maxfrags) m = n; } KASSERT(maxfrags > 1, - ("maxfrags %u, but normal collapse failed", maxfrags)); + ("maxfrags %u, but normal collapse failed", maxfrags)); /* * Collapse consecutive mbufs to a cluster. */ - prev = &m0->m_next; /* NB: not the first mbuf */ + prev = &m0->m_next; /* NB: not the first mbuf */ while ((n = *prev) != NULL) { if ((n2 = n->m_next) != NULL && n->m_len + n2->m_len < MCLBYTES) { m = m_getcl(how, MT_DATA, 0); if (m == NULL) goto bad; - m_copydata(n, 0, n->m_len, mtod(m, char *)); - m_copydata(n2, 0, n2->m_len, - mtod(m, char *) + n->m_len); + m_copydata(n, 0, n->m_len, mtod(m, char *)); + m_copydata( + n2, 0, n2->m_len, mtod(m, char *) + n->m_len); m->m_len = n->m_len + n2->m_len; m->m_next = n2->m_next; *prev = m; - curfrags += 1; /* For the new cluster */ + curfrags += 1; /* For the new cluster */ curfrags -= frags_per_mbuf(n); curfrags -= frags_per_mbuf(n2); m_free(n); @@ -1677,7 +1662,7 @@ m_uiotombuf_nomap(struct uio *uio, int how, int len, int maxseg, int flags) mb->m_epg_flags = EPG_FLAG_ANON; needed = length = MIN(maxseg, total); for (i = 0; needed > 0; i++, needed -= PAGE_SIZE) { -retry_page: + retry_page: pg_array[i] = vm_page_alloc(NULL, 0, pflags); if (pg_array[i] == NULL) { if (how & M_NOWAIT) { @@ -1793,8 +1778,9 @@ m_unmappedtouio(const struct mbuf *m, int m_off, struct uio *uio, int len) seglen = min(seglen, len); off = 0; len -= seglen; - error = uiomove(__DECONST(void *, - &m->m_epg_hdr[segoff]), seglen, uio); + error = + uiomove(__DECONST(void *, &m->m_epg_hdr[segoff]), + seglen, uio); } } pgoff = m->m_epg_1st_off; @@ -1817,9 +1803,9 @@ m_unmappedtouio(const struct mbuf *m, int m_off, struct uio *uio, int len) if (len != 0 && error == 0) { KASSERT((off + len) <= m->m_epg_trllen, ("off + len > trail (%d + %d > %d, m_off = %d)", off, len, - m->m_epg_trllen, m_off)); - error = uiomove(__DECONST(void *, &m->m_epg_trail[off]), - len, uio); + m->m_epg_trllen, m_off)); + error = + uiomove(__DECONST(void *, &m->m_epg_trail[off]), len, uio); } return (error); } @@ -1892,8 +1878,9 @@ m_unshare(struct mbuf *m0, int how) memcpy(mtod(mprev, caddr_t) + mprev->m_len, mtod(m, caddr_t), m->m_len); mprev->m_len += m->m_len; - mprev->m_next = m->m_next; /* unlink from chain */ - m_free(m); /* reclaim mbuf */ + mprev->m_next = + m->m_next; /* unlink from chain */ + m_free(m); /* reclaim mbuf */ } else { mprev = m; } @@ -1921,8 +1908,8 @@ m_unshare(struct mbuf *m0, int how) memcpy(mtod(mprev, caddr_t) + mprev->m_len, mtod(m, caddr_t), m->m_len); mprev->m_len += m->m_len; - mprev->m_next = m->m_next; /* unlink from chain */ - m_free(m); /* reclaim mbuf */ + mprev->m_next = m->m_next; /* unlink from chain */ + m_free(m); /* reclaim mbuf */ continue; } @@ -1940,8 +1927,8 @@ m_unshare(struct mbuf *m0, int how) return (NULL); } if (m->m_flags & M_PKTHDR) { - KASSERT(mprev == NULL, ("%s: m0 %p, m %p has M_PKTHDR", - __func__, m0, m)); + KASSERT(mprev == NULL, + ("%s: m0 %p, m %p has M_PKTHDR", __func__, m0, m)); m_move_pkthdr(n, m); } len = m->m_len; @@ -1973,10 +1960,10 @@ m_unshare(struct mbuf *m0, int how) } n->m_next = m->m_next; if (mprev == NULL) - m0 = mfirst; /* new head of chain */ + m0 = mfirst; /* new head of chain */ else - mprev->m_next = mfirst; /* replace old mbuf */ - m_free(m); /* release old mbuf */ + mprev->m_next = mfirst; /* replace old mbuf */ + m_free(m); /* release old mbuf */ mprev = mfirst; } return (m0); @@ -1991,12 +1978,12 @@ struct mbufprofile { uintmax_t segments[MP_BUCKETS]; } mbprof; -#define MP_MAXDIGITS 21 /* strlen("16,000,000,000,000,000,000") == 21 */ +#define MP_MAXDIGITS 21 /* strlen("16,000,000,000,000,000,000") == 21 */ #define MP_NUMLINES 6 #define MP_NUMSPERLINE 16 -#define MP_EXTRABYTES 64 /* > strlen("used:\nwasted:\nsegments:\n") */ +#define MP_EXTRABYTES 64 /* > strlen("used:\nwasted:\nsegments:\n") */ /* work out max space needed and add a bit of spare space too */ -#define MP_MAXLINE ((MP_MAXDIGITS+1) * MP_NUMSPERLINE) +#define MP_MAXLINE ((MP_MAXDIGITS + 1) * MP_NUMSPERLINE) #define MP_BUFSIZE ((MP_MAXLINE * MP_NUMLINES) + 1 + MP_EXTRABYTES) char mbprofbuf[MP_BUFSIZE]; @@ -2012,8 +1999,8 @@ m_profile(struct mbuf *m) segments++; used += m->m_len; if (m->m_flags & M_EXT) { - wasted += MHLEN - sizeof(m->m_ext) + - m->m_ext.ext_size - m->m_len; + wasted += MHLEN - sizeof(m->m_ext) + m->m_ext.ext_size - + m->m_len; } else { if (m->m_flags & M_PKTHDR) wasted += MHLEN - m->m_len; @@ -2049,16 +2036,16 @@ mbprof_textify(void) "wasted:\n" "%ju %ju %ju %ju %ju %ju %ju %ju " "%ju %ju %ju %ju %ju %ju %ju %ju\n", - p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], - p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15]); + p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], + p[11], p[12], p[13], p[14], p[15]); #ifdef BIG_ARRAY p = &mbprof.wasted[16]; c += offset; offset = snprintf(c, MP_MAXLINE, "%ju %ju %ju %ju %ju %ju %ju %ju " "%ju %ju %ju %ju %ju %ju %ju %ju\n", - p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], - p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15]); + p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], + p[11], p[12], p[13], p[14], p[15]); #endif p = &mbprof.used[0]; c += offset; @@ -2066,16 +2053,16 @@ mbprof_textify(void) "used:\n" "%ju %ju %ju %ju %ju %ju %ju %ju " "%ju %ju %ju %ju %ju %ju %ju %ju\n", - p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], - p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15]); + p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], + p[11], p[12], p[13], p[14], p[15]); #ifdef BIG_ARRAY p = &mbprof.used[16]; c += offset; offset = snprintf(c, MP_MAXLINE, "%ju %ju %ju %ju %ju %ju %ju %ju " "%ju %ju %ju %ju %ju %ju %ju %ju\n", - p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], - p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15]); + p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], + p[11], p[12], p[13], p[14], p[15]); #endif p = &mbprof.segments[0]; c += offset; @@ -2083,21 +2070,20 @@ mbprof_textify(void) "segments:\n" "%ju %ju %ju %ju %ju %ju %ju %ju " "%ju %ju %ju %ju %ju %ju %ju %ju\n", - p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], - p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15]); + p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], + p[11], p[12], p[13], p[14], p[15]); #ifdef BIG_ARRAY p = &mbprof.segments[16]; c += offset; offset = snprintf(c, MP_MAXLINE, "%ju %ju %ju %ju %ju %ju %ju %ju " "%ju %ju %ju %ju %ju %ju %ju %jju", - p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], - p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15]); + p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], + p[11], p[12], p[13], p[14], p[15]); #endif } -static int -mbprof_handler(SYSCTL_HANDLER_ARGS) +static int mbprof_handler(SYSCTL_HANDLER_ARGS) { int error; @@ -2106,8 +2092,7 @@ mbprof_handler(SYSCTL_HANDLER_ARGS) return (error); } -static int -mbprof_clr_handler(SYSCTL_HANDLER_ARGS) +static int mbprof_clr_handler(SYSCTL_HANDLER_ARGS) { int clear, error; @@ -2124,13 +2109,10 @@ mbprof_clr_handler(SYSCTL_HANDLER_ARGS) } SYSCTL_PROC(_kern_ipc, OID_AUTO, mbufprofile, - CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, NULL, 0, - mbprof_handler, "A", - "mbuf profiling statistics"); + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, NULL, 0, mbprof_handler, + "A", "mbuf profiling statistics"); SYSCTL_PROC(_kern_ipc, OID_AUTO, mbufprofileclr, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, NULL, 0, - mbprof_clr_handler, "I", - "clear mbuf profiling statistics"); + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, NULL, 0, mbprof_clr_handler, + "I", "clear mbuf profiling statistics"); #endif -