PERFORCE change 126784 for review
Kip Macy
kmacy at FreeBSD.org
Mon Sep 24 13:32:53 PDT 2007
http://perforce.freebsd.org/chv.cgi?CH=126784
Change 126784 by kmacy at 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); \
More information about the p4-projects
mailing list