Date: Mon, 12 Jan 2015 13:50:35 +0000 (UTC) From: Gleb Smirnoff <glebius@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r277070 - projects/ifnet/sys/sys Message-ID: <201501121350.t0CDoZok019559@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: glebius Date: Mon Jan 12 13:50:34 2015 New Revision: 277070 URL: https://svnweb.freebsd.org/changeset/base/277070 Log: Marry mbuf(9) and queue(9). Now you can chain mbufs using SLIST and STAILQ families of macros. The change is 100% backward compatible, the m_next and m_nextpkt work as before and has no effect on binary code. Sponsored by: Nginx, Inc. Modified: projects/ifnet/sys/sys/mbuf.h Modified: projects/ifnet/sys/sys/mbuf.h ============================================================================== --- projects/ifnet/sys/sys/mbuf.h Mon Jan 12 13:44:34 2015 (r277069) +++ projects/ifnet/sys/sys/mbuf.h Mon Jan 12 13:50:34 2015 (r277070) @@ -92,8 +92,16 @@ struct mb_args { * LP64: 32 */ struct m_hdr { - struct mbuf *mh_next; /* next buffer in chain */ - struct mbuf *mh_nextpkt; /* next chain in queue/record */ + union { + struct mbuf *m; + SLIST_ENTRY(mbuf) slist; + STAILQ_ENTRY(mbuf) stailq; + } mh_next; /* next buffer in chain */ + union { + struct mbuf *m; + SLIST_ENTRY(mbuf) slist; + STAILQ_ENTRY(mbuf) stailq; + } mh_nextpkt; /* next chain in queue/record */ caddr_t mh_data; /* location of data */ int32_t mh_len; /* amount of data in this mbuf */ uint32_t mh_type:8, /* type of data in this mbuf */ @@ -196,12 +204,16 @@ struct mbuf { char M_databuf[MLEN]; /* !M_PKTHDR, !M_EXT */ } M_dat; }; -#define m_next m_hdr.mh_next +#define m_next m_hdr.mh_next.m +#define m_slist m_hdr.mh_next.slist +#define m_stailq m_hdr.mh_next.stailq #define m_len m_hdr.mh_len #define m_data m_hdr.mh_data #define m_type m_hdr.mh_type #define m_flags m_hdr.mh_flags -#define m_nextpkt m_hdr.mh_nextpkt +#define m_nextpkt m_hdr.mh_nextpkt.m +#define m_slistpkt m_hdr.mh_nextpkt.slist +#define m_stailqpkt m_hdr.mh_nextpkt.stailq #define m_pkthdr M_dat.MH.MH_pkthdr #define m_ext M_dat.MH.MH_dat.MH_ext #define m_pktdat M_dat.MH.MH_dat.MH_databuf
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201501121350.t0CDoZok019559>