--- libelwix/src/ring.c 2026/02/18 11:41:47 1.8 +++ libelwix/src/ring.c 2026/05/05 15:35:28 1.8.4.1 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: ring.c,v 1.8 2026/02/18 11:41:47 misho Exp $ +* $Id: ring.c,v 1.8.4.1 2026/05/05 15:35:28 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -59,9 +59,9 @@ rbuf_init(ringbuf_t *rbuf, int num) if (!rbuf) return -1; - atomic_store_explicit((atomic_int*) &rbuf->rb_head, 0, memory_order_relaxed); - atomic_store_explicit((atomic_int*) &rbuf->rb_tail, 0, memory_order_relaxed); - atomic_store_explicit((atomic_int*) &rbuf->rb_full, 0, memory_order_relaxed); + atomic_store_explicit((atomic_int*) &rbuf->rb_head, 0, memory_order_release); + atomic_store_explicit((atomic_int*) &rbuf->rb_tail, 0, memory_order_release); + atomic_store_explicit((atomic_int*) &rbuf->rb_full, 0, memory_order_release); rbuf->rb_buffer = e_calloc(num, sizeof(struct iovec)); if (!rbuf->rb_buffer) @@ -91,9 +91,9 @@ rbuf_free(ringbuf_t *rbuf) rbuf->rb_bufnum = 0; } - atomic_store_explicit((atomic_int*) &rbuf->rb_head, 0, memory_order_relaxed); - atomic_store_explicit((atomic_int*) &rbuf->rb_tail, 0, memory_order_relaxed); - atomic_store_explicit((atomic_int*) &rbuf->rb_full, 0, memory_order_relaxed); + atomic_store_explicit((atomic_int*) &rbuf->rb_head, 0, memory_order_release); + atomic_store_explicit((atomic_int*) &rbuf->rb_tail, 0, memory_order_release); + atomic_store_explicit((atomic_int*) &rbuf->rb_full, 0, memory_order_release); } /* @@ -111,9 +111,9 @@ rbuf_purge(ringbuf_t *rbuf) if (rbuf->rb_buffer) memset(rbuf->rb_buffer, 0, rbuf->rb_bufnum * sizeof(struct iovec)); - atomic_store_explicit((atomic_int*) &rbuf->rb_head, 0, memory_order_relaxed); - atomic_store_explicit((atomic_int*) &rbuf->rb_tail, 0, memory_order_relaxed); - atomic_store_explicit((atomic_int*) &rbuf->rb_full, 0, memory_order_relaxed); + atomic_store_explicit((atomic_int*) &rbuf->rb_head, 0, memory_order_release); + atomic_store_explicit((atomic_int*) &rbuf->rb_tail, 0, memory_order_release); + atomic_store_explicit((atomic_int*) &rbuf->rb_full, 0, memory_order_release); } /* @@ -262,9 +262,9 @@ lrb_init(lrbuf_t *lrb, u_int size) if (!lrb) return -1; - atomic_store_explicit((atomic_int*) &lrb->lrb_head, 0, memory_order_relaxed); - atomic_store_explicit((atomic_int*) &lrb->lrb_tail, 0, memory_order_relaxed); - atomic_store_explicit((atomic_int*) &lrb->lrb_full, 0, memory_order_relaxed); + atomic_store_explicit((atomic_int*) &lrb->lrb_head, 0, memory_order_release); + atomic_store_explicit((atomic_int*) &lrb->lrb_tail, 0, memory_order_release); + atomic_store_explicit((atomic_int*) &lrb->lrb_full, 0, memory_order_release); lrb->lrb_data = e_malloc(size); if (!lrb->lrb_data) @@ -294,9 +294,9 @@ lrb_free(lrbuf_t *lrb) lrb->lrb_size = 0; } - atomic_store_explicit((atomic_int*) &lrb->lrb_head, 0, memory_order_relaxed); - atomic_store_explicit((atomic_int*) &lrb->lrb_tail, 0, memory_order_relaxed); - atomic_store_explicit((atomic_int*) &lrb->lrb_full, 0, memory_order_relaxed); + atomic_store_explicit((atomic_int*) &lrb->lrb_head, 0, memory_order_release); + atomic_store_explicit((atomic_int*) &lrb->lrb_tail, 0, memory_order_release); + atomic_store_explicit((atomic_int*) &lrb->lrb_full, 0, memory_order_release); } /* @@ -314,9 +314,9 @@ lrb_purge(lrbuf_t *lrb) if (lrb->lrb_data) memset(lrb->lrb_data, 0, lrb->lrb_size); - atomic_store_explicit((atomic_int*) &lrb->lrb_head, 0, memory_order_relaxed); - atomic_store_explicit((atomic_int*) &lrb->lrb_tail, 0, memory_order_relaxed); - atomic_store_explicit((atomic_int*) &lrb->lrb_full, 0, memory_order_relaxed); + atomic_store_explicit((atomic_int*) &lrb->lrb_head, 0, memory_order_release); + atomic_store_explicit((atomic_int*) &lrb->lrb_tail, 0, memory_order_release); + atomic_store_explicit((atomic_int*) &lrb->lrb_full, 0, memory_order_release); } /* @@ -377,7 +377,7 @@ lrb_getw(lrbuf_t *lrb, size_t *len) if (!lrb || !lrb->lrb_data || !lrb->lrb_size) return NULL; - h = atomic_load_explicit((atomic_int*) &lrb->lrb_head, memory_order_relaxed); + h = atomic_load_explicit((atomic_int*) &lrb->lrb_head, memory_order_acquire); if (len) *len = lrb->lrb_size - h; @@ -417,7 +417,7 @@ lrb_enqueue(lrbuf_t *lrb, void *data, size_t len, int t = atomic_load_explicit((atomic_int*) &lrb->lrb_tail, memory_order_acquire); t2 = (t + drop) % lrb->lrb_size; } - h = atomic_load_explicit((atomic_int*) &lrb->lrb_head, memory_order_relaxed); + h = atomic_load_explicit((atomic_int*) &lrb->lrb_head, memory_order_acquire); n = lrb->lrb_size - h; if (len < n) { if (data)