|
|
| version 1.4.4.2, 2026/02/10 17:24:39 | version 1.5.2.1, 2026/02/10 18:23:53 |
|---|---|
| Line 284 lrb_purge(lrbuf_t *lrb) | Line 284 lrb_purge(lrbuf_t *lrb) |
| atomic_store_explicit((atomic_int*) &lrb->lrb_head, 0, memory_order_relaxed); | 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_tail, 0, memory_order_relaxed); |
| atomic_store_explicit((atomic_int*) &lrb->lrb_full, 0, memory_order_relaxed); | |
| } | } |
| /* | /* |
| Line 323 lrb_isfull(lrbuf_t *lrb) | Line 324 lrb_isfull(lrbuf_t *lrb) |
| return 0; | return 0; |
| t = atomic_load_explicit((atomic_int*) &lrb->lrb_tail, memory_order_acquire); | t = atomic_load_explicit((atomic_int*) &lrb->lrb_tail, memory_order_acquire); |
| h = atomic_load_explicit((atomic_int*) &lrb->lrb_head, memory_order_relaxed) + 1; | h = atomic_load_explicit((atomic_int*) &lrb->lrb_head, memory_order_acquire); |
| if (h >= lrb->lrb_size) | |
| h ^= h; | |
| return (h == t); | return (h == t); |
| } | } |
| Line 342 lrb_isfull(lrbuf_t *lrb) | Line 340 lrb_isfull(lrbuf_t *lrb) |
| int | int |
| lrb_enqueue(lrbuf_t *lrb, void *data, size_t len, int lost) | lrb_enqueue(lrbuf_t *lrb, void *data, size_t len, int lost) |
| { | { |
| int h, t, n, t2, unused, drop = 0; | int h, t = 0, n, t2 = 0, unused, drop = 0; |
| if (!lrb || !lrb->lrb_data) | if (!lrb || !lrb->lrb_data) |
| return -1; | return -1; |
| Line 402 lrb_enqueue(lrbuf_t *lrb, void *data, size_t len, int | Line 400 lrb_enqueue(lrbuf_t *lrb, void *data, size_t len, int |
| int | int |
| lrb_dequeue(lrbuf_t *lrb, void *data, size_t len) | lrb_dequeue(lrbuf_t *lrb, void *data, size_t len) |
| { | { |
| int h, t, t2, n, l; | int h, t, t2, n, l, f; |
| if (!lrb) | if (!lrb) |
| return -1; | return -1; |
| Line 414 lrb_dequeue(lrbuf_t *lrb, void *data, size_t len) | Line 412 lrb_dequeue(lrbuf_t *lrb, void *data, size_t len) |
| while (42) { | while (42) { |
| t = atomic_load_explicit((atomic_int*) &lrb->lrb_tail, memory_order_acquire); | t = atomic_load_explicit((atomic_int*) &lrb->lrb_tail, memory_order_acquire); |
| h = atomic_load_explicit((atomic_int*) &lrb->lrb_head, memory_order_acquire); | h = atomic_load_explicit((atomic_int*) &lrb->lrb_head, memory_order_acquire); |
| f = atomic_load_explicit((atomic_int*) &lrb->lrb_full, memory_order_acquire); | |
| l = h - t; | l = h - t; |
| if (l < 0) | if (l < 0) |
| l += lrb->lrb_size; | l += lrb->lrb_size; |
| if (!l) | if (!l) { |
| return 0; | if (!f) |
| return 0; | |
| l = lrb->lrb_size; | |
| } | |
| if (l > len) | if (l > len) |
| l = len; | l = len; |