summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/sys/buf_ring.h
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/sys/buf_ring.h')
-rw-r--r--freebsd/sys/sys/buf_ring.h15
1 files changed, 10 insertions, 5 deletions
diff --git a/freebsd/sys/sys/buf_ring.h b/freebsd/sys/sys/buf_ring.h
index 59e74cf7..ee7a48ce 100644
--- a/freebsd/sys/sys/buf_ring.h
+++ b/freebsd/sys/sys/buf_ring.h
@@ -99,7 +99,7 @@ buf_ring_enqueue(struct buf_ring *br, void *buf)
return (ENOBUFS);
}
- success = atomic_cmpset_int(&br->br_prod_head, prod_head,
+ success = atomic_cmpset_int((volatile int *)&br->br_prod_head, prod_head,
prod_next);
} while (success == 0);
#ifdef DEBUG_BUFRING
@@ -146,7 +146,7 @@ buf_ring_dequeue_mc(struct buf_ring *br)
return (NULL);
}
- success = atomic_cmpset_int(&br->br_cons_head, cons_head,
+ success = atomic_cmpset_int((volatile int *)&br->br_cons_head, cons_head,
cons_next);
} while (success == 0);
@@ -178,7 +178,10 @@ buf_ring_dequeue_mc(struct buf_ring *br)
static __inline void *
buf_ring_dequeue_sc(struct buf_ring *br)
{
- uint32_t cons_head, cons_next, cons_next_next;
+ uint32_t cons_head, cons_next;
+#ifdef PREFETCH_DEFINED
+ uint32_t cons_next_next;
+#endif
uint32_t prod_tail;
void *buf;
@@ -186,7 +189,9 @@ buf_ring_dequeue_sc(struct buf_ring *br)
prod_tail = br->br_prod_tail;
cons_next = (cons_head + 1) & br->br_cons_mask;
+#ifdef PREFETCH_DEFINED
cons_next_next = (cons_head + 2) & br->br_cons_mask;
+#endif
if (cons_head == prod_tail)
return (NULL);
@@ -254,11 +259,11 @@ buf_ring_advance_sc(struct buf_ring *br)
* the compare and an atomic.
*/
static __inline void
-buf_ring_putback_sc(struct buf_ring *br, void *new)
+buf_ring_putback_sc(struct buf_ring *br, void *new_item)
{
KASSERT(br->br_cons_head != br->br_prod_tail,
("Buf-Ring has none in putback")) ;
- br->br_ring[br->br_cons_head] = new;
+ br->br_ring[br->br_cons_head] = new_item;
}
/*