Lines Matching defs:tail

100 lws_ring_get_count_waiting_elements(struct lws_ring *ring, uint32_t *tail)
103 if (!tail)
104 tail = &ring->oldest_tail;
114 if (ring->head == *tail)
117 if (ring->head > *tail)
118 f = (int)(ring->head - *tail);
120 f = (int)((ring->buflen - *tail) + ring->head);
199 lws_ring_consume(struct lws_ring *ring, uint32_t *tail, void *dest,
203 void *orig_tail = tail;
207 if (!tail) {
209 tail = &fake_tail;
213 n = (int)(lws_ring_get_count_waiting_elements(ring, tail) *
221 *tail = ((*tail) + (unsigned int)n) % ring->buflen;
222 if (!orig_tail) /* single tail */
223 lws_ring_update_oldest_tail(ring, *tail);
227 if (*tail + (unsigned int)n > ring->buflen) {
234 m = (int32_t)(ring->buflen - *tail);
235 memcpy(dest, ((uint8_t *)ring->buf) + *tail, (size_t)m);
237 *tail = 0;
245 memcpy(dest, ((uint8_t *)ring->buf) + *tail, (size_t)n);
247 *tail = ((*tail) + (unsigned int)n) % ring->buflen;
248 if (!orig_tail) /* single tail */
249 lws_ring_update_oldest_tail(ring, *tail);
255 lws_ring_get_element(struct lws_ring *ring, uint32_t *tail)
257 if (!tail)
258 tail = &ring->oldest_tail;
260 if (*tail == ring->head)
263 return ((uint8_t *)ring->buf) + *tail;
267 lws_ring_update_oldest_tail(struct lws_ring *ring, uint32_t tail)
270 ring->oldest_tail = tail;
274 while (ring->oldest_tail != tail) {
288 lws_ring_dump(struct lws_ring *ring, uint32_t *tail)
290 if (tail == NULL)
291 tail = &ring->oldest_tail;
293 " free_elems: %u; for tail %u, waiting elements: %u\n",
296 (int)lws_ring_get_count_free_elements(ring), (int)*tail,
297 (int)lws_ring_get_count_waiting_elements(ring, tail));