|
|
| version 1.4.4.2, 2026/02/10 17:24:39 | version 1.6.2.1, 2026/02/13 17:09:32 |
|---|---|
| Line 62 typedef struct { | Line 62 typedef struct { |
| int lrb_size; | int lrb_size; |
| unsigned char *lrb_data; | unsigned char *lrb_data; |
| } lrbuf_t; | } lrbuf_t; |
| #define lrb_head(x) atomic_load_explicit((atomic_int*) &(x)->lrb_head, memory_order_relaxed) | |
| #define lrb_tail(x) atomic_load_explicit((atomic_int*) &(x)->lrb_tail, memory_order_relaxed) | |
| #define lrb_size(x) ((x)->lrb_size) | |
| #define lrb_getb(x) ((x)->lrb_data) | |
| #define lrb_hptr(x) ((x)->lrb_data + lrb_head((x))) | |
| #define lrb_tptr(x) ((x)->lrb_data + lrb_tail((x))) | |
| #define lrb_isrewind(x) (lrb_head((x)) < lrb_tail((x))) | |
| #define lrb_queued(x, r) do { \ | #define lrb_queued(x, r) do { \ |
| u_int _h, _t; \ | u_int _h, _t; \ |
| _t = atomic_load_explicit((atomic_int*) &(x)->lrb_tail, memory_order_acquire); \ | _t = atomic_load_explicit((atomic_int*) &(x)->lrb_tail, memory_order_acquire); \ |
| Line 190 int lrb_enqueue(lrbuf_t *lrb, void *data, size_t len, | Line 197 int lrb_enqueue(lrbuf_t *lrb, void *data, size_t len, |
| * return: -1 error, 0 buffer is empty or >0 stored data bytes | * return: -1 error, 0 buffer is empty or >0 stored data bytes |
| */ | */ |
| int lrb_dequeue(lrbuf_t *lrb, void *data, size_t len); | int lrb_dequeue(lrbuf_t *lrb, void *data, size_t len); |
| /* | |
| * lrb_getw() - Get address for write | |
| * | |
| * @lrb = Linear ring buffer | |
| * @len = Return available buffer length for write | |
| * return: NULL error or !=NULL pointer for write | |
| * remark: After use of lrb_getw() and write to pointer. | |
| * You should update ring buffer with lrb_enqueue(,NULL,wrote_len,) | |
| */ | |
| void *lrb_getw(lrbuf_t *lrb, size_t *len); | |
| /* | |
| * lrb_getr() - Get address for read | |
| * | |
| * @lrb = Linear ring buffer | |
| * @len = Return available data length for read | |
| * return: NULL error or !=NULL pointer for read | |
| * remark: After use of lrb_getr() and read from pointer. | |
| * You could update ring buffer with lrb_dequeue(,NULL,read_len) | |
| */ | |
| void *lrb_getr(lrbuf_t *lrb, size_t *len); | |
| #endif | #endif |