version 1.1.2.1, 2025/09/26 08:58:05
|
version 1.1.2.3, 2025/09/26 10:00:46
|
Line 140 rbuf_isfull(ringbuf_t *rbuf)
|
Line 140 rbuf_isfull(ringbuf_t *rbuf)
|
{ |
{ |
if (!rbuf) |
if (!rbuf) |
return -1; |
return -1; |
|
if (!rbuf->rb_bufnum) |
|
return 1; |
|
|
return (((atomic_load_explicit(&rbuf->rb_head, memory_order_relaxed) + 1) % rbuf->rb_bufnum) == |
return (((atomic_load_explicit(&rbuf->rb_head, memory_order_relaxed) + 1) % rbuf->rb_bufnum) == |
atomic_load_explicit(&rbuf->rb_tail, memory_order_acquire)); |
atomic_load_explicit(&rbuf->rb_tail, memory_order_acquire)); |
Line 159 rbuf_enqueue(ringbuf_t *rbuf, void *data, size_t len)
|
Line 161 rbuf_enqueue(ringbuf_t *rbuf, void *data, size_t len)
|
int h, t, n; |
int h, t, n; |
struct iovec *iov; |
struct iovec *iov; |
|
|
if (!rbuf) | if (!rbuf || !rbuf->rb_buffer) |
return -1; |
return -1; |
|
|
h = atomic_load_explicit(&rbuf->rb_head, memory_order_relaxed); |
h = atomic_load_explicit(&rbuf->rb_head, memory_order_relaxed); |
Line 189 rbuf_dequeue(ringbuf_t *rbuf, struct iovec *out)
|
Line 191 rbuf_dequeue(ringbuf_t *rbuf, struct iovec *out)
|
{ |
{ |
int h, t, n; |
int h, t, n; |
|
|
if (!rbuf) | if (!rbuf || !rbuf->rb_buffer) |
return -1; |
return -1; |
|
|
h = atomic_load_explicit(&rbuf->rb_head, memory_order_acquire); |
h = atomic_load_explicit(&rbuf->rb_head, memory_order_acquire); |
Line 200 rbuf_dequeue(ringbuf_t *rbuf, struct iovec *out)
|
Line 202 rbuf_dequeue(ringbuf_t *rbuf, struct iovec *out)
|
return 1; |
return 1; |
|
|
if (out) |
if (out) |
out = rbuf->rb_buffer + t; | *out = rbuf->rb_buffer[t]; |
|
|
atomic_store_explicit(&rbuf->rb_tail, n, memory_order_release); |
atomic_store_explicit(&rbuf->rb_tail, n, memory_order_release); |
return 0; |
return 0; |