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