| 156 | }; |
| 157 | |
| 158 | spsc_ring_t *spsc_ring_create(size_t size) |
| 159 | { |
| 160 | spsc_ring_t *r = malloc(sizeof(spsc_ring_t)); |
| 161 | if (!r) |
| 162 | return NULL; |
| 163 | |
| 164 | r->size = size; |
| 165 | r->buf = calloc(size, sizeof(ring_msg_t *)); |
| 166 | if (!r->buf) |
| 167 | { |
| 168 | free(r); |
| 169 | return NULL; |
| 170 | } |
| 171 | atomic_store_relaxed(&r->head, 0); |
| 172 | atomic_store_relaxed(&r->tail, 0); |
| 173 | return r; |
| 174 | } |
| 175 | |
| 176 | void spsc_ring_destroy(spsc_ring_t *r) |
| 177 | { |