Date: Mon, 24 Sep 2007 20:32:52 GMT From: Kip Macy <kmacy@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 126784 for review Message-ID: <200709242032.l8OKWqDZ008563@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=126784 Change 126784 by kmacy@kmacy_home:ethng on 2007/09/24 20:32:32 add utility routines for mbuf ring Affected files ... .. //depot/projects/ethng/src/sys/dev/cxgb/cxgb_osdep.h#8 edit Differences ... ==== //depot/projects/ethng/src/sys/dev/cxgb/cxgb_osdep.h#8 (text+ko) ==== @@ -69,6 +69,55 @@ struct mtx mr_lock; }; +static __inline int +mbuf_ring_count(struct mbuf_ring *mr) +{ + return abs(mr->mr_cons - mr->mr_prod); +} + +static __inline int +mbuf_ring_empty(struct mbuf_ring *mr) +{ + return (mr->mr_cons == mr->mr_prod); +} + +static __inline struct mbuf * +mbuf_ring_dequeue(struct mbuf_ring *mr) +{ + int prod, cons, mask; + struct mbuf **ring, *m; + + ring = mr->mr_ring; + mask = mr->mr_size - 1; + cons = mr->mr_cons; + prod = mr->mr_prod; + m = NULL; + if (cons != prod) { + m = ring[cons]; + mr->mr_cons = (cons + 1) & mask; + } + + return (m); +} + + +static __inline struct mbuf * +mbuf_ring_peek(struct mbuf_ring *mr) +{ + int prod, cons, mask; + struct mbuf **ring, *m; + + ring = mr->mr_ring; + mask = mr->mr_size - 1; + cons = mr->mr_cons; + prod = mr->mr_prod; + m = NULL; + if (cons != prod) + m = ring[cons]; + + return (m); +} + #define PANIC_IF(exp) do { \ if (exp) \ panic("BUG: %s", exp); \
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200709242032.l8OKWqDZ008563>