Lines Matching refs:rb
18 rt_inline enum rt_ringbuffer_state rt_ringbuffer_status(struct rt_ringbuffer *rb) in rt_ringbuffer_status() argument
20 if (rb->read_index == rb->write_index) in rt_ringbuffer_status()
22 if (rb->read_mirror == rb->write_mirror) in rt_ringbuffer_status()
37 void rt_ringbuffer_init(struct rt_ringbuffer *rb, in rt_ringbuffer_init() argument
41 RT_ASSERT(rb != RT_NULL); in rt_ringbuffer_init()
45 rb->read_mirror = rb->read_index = 0; in rt_ringbuffer_init()
46 rb->write_mirror = rb->write_index = 0; in rt_ringbuffer_init()
49 rb->buffer_ptr = pool; in rt_ringbuffer_init()
50 rb->buffer_size = RT_ALIGN_DOWN(size, RT_ALIGN_SIZE); in rt_ringbuffer_init()
63 rt_size_t rt_ringbuffer_put(struct rt_ringbuffer *rb, in rt_ringbuffer_put() argument
69 RT_ASSERT(rb != RT_NULL); in rt_ringbuffer_put()
72 size = rt_ringbuffer_space_len(rb); in rt_ringbuffer_put()
82 if (rb->buffer_size - rb->write_index > length) in rt_ringbuffer_put()
85 rt_memcpy(&rb->buffer_ptr[rb->write_index], ptr, length); in rt_ringbuffer_put()
88 rb->write_index += length; in rt_ringbuffer_put()
92 rt_memcpy(&rb->buffer_ptr[rb->write_index], in rt_ringbuffer_put()
94 rb->buffer_size - rb->write_index); in rt_ringbuffer_put()
95 rt_memcpy(&rb->buffer_ptr[0], in rt_ringbuffer_put()
96 &ptr[rb->buffer_size - rb->write_index], in rt_ringbuffer_put()
97 length - (rb->buffer_size - rb->write_index)); in rt_ringbuffer_put()
100 rb->write_mirror = ~rb->write_mirror; in rt_ringbuffer_put()
101 rb->write_index = length - (rb->buffer_size - rb->write_index); in rt_ringbuffer_put()
116 rt_size_t rt_ringbuffer_put_force(struct rt_ringbuffer *rb, in rt_ringbuffer_put_force() argument
122 RT_ASSERT(rb != RT_NULL); in rt_ringbuffer_put_force()
124 space_length = rt_ringbuffer_space_len(rb); in rt_ringbuffer_put_force()
126 if (length > rb->buffer_size) in rt_ringbuffer_put_force()
128 ptr = &ptr[length - rb->buffer_size]; in rt_ringbuffer_put_force()
129 length = rb->buffer_size; in rt_ringbuffer_put_force()
132 if (rb->buffer_size - rb->write_index > length) in rt_ringbuffer_put_force()
135 rt_memcpy(&rb->buffer_ptr[rb->write_index], ptr, length); in rt_ringbuffer_put_force()
138 rb->write_index += length; in rt_ringbuffer_put_force()
141 rb->read_index = rb->write_index; in rt_ringbuffer_put_force()
146 rt_memcpy(&rb->buffer_ptr[rb->write_index], in rt_ringbuffer_put_force()
148 rb->buffer_size - rb->write_index); in rt_ringbuffer_put_force()
149 rt_memcpy(&rb->buffer_ptr[0], in rt_ringbuffer_put_force()
150 &ptr[rb->buffer_size - rb->write_index], in rt_ringbuffer_put_force()
151 length - (rb->buffer_size - rb->write_index)); in rt_ringbuffer_put_force()
154 rb->write_mirror = ~rb->write_mirror; in rt_ringbuffer_put_force()
155 rb->write_index = length - (rb->buffer_size - rb->write_index); in rt_ringbuffer_put_force()
159 if (rb->write_index <= rb->read_index) in rt_ringbuffer_put_force()
160 rb->read_mirror = ~rb->read_mirror; in rt_ringbuffer_put_force()
161 rb->read_index = rb->write_index; in rt_ringbuffer_put_force()
177 rt_size_t rt_ringbuffer_get(struct rt_ringbuffer *rb, in rt_ringbuffer_get() argument
183 RT_ASSERT(rb != RT_NULL); in rt_ringbuffer_get()
186 size = rt_ringbuffer_data_len(rb); in rt_ringbuffer_get()
196 if (rb->buffer_size - rb->read_index > length) in rt_ringbuffer_get()
199 rt_memcpy(ptr, &rb->buffer_ptr[rb->read_index], length); in rt_ringbuffer_get()
202 rb->read_index += length; in rt_ringbuffer_get()
207 &rb->buffer_ptr[rb->read_index], in rt_ringbuffer_get()
208 rb->buffer_size - rb->read_index); in rt_ringbuffer_get()
209 rt_memcpy(&ptr[rb->buffer_size - rb->read_index], in rt_ringbuffer_get()
210 &rb->buffer_ptr[0], in rt_ringbuffer_get()
211 length - (rb->buffer_size - rb->read_index)); in rt_ringbuffer_get()
214 rb->read_mirror = ~rb->read_mirror; in rt_ringbuffer_get()
215 rb->read_index = length - (rb->buffer_size - rb->read_index); in rt_ringbuffer_get()
231 rt_size_t rt_ringbuffer_peek(struct rt_ringbuffer *rb, rt_uint8_t **ptr) in rt_ringbuffer_peek() argument
235 RT_ASSERT(rb != RT_NULL); in rt_ringbuffer_peek()
240 size = rt_ringbuffer_data_len(rb); in rt_ringbuffer_peek()
246 *ptr = &rb->buffer_ptr[rb->read_index]; in rt_ringbuffer_peek()
248 if ((rt_size_t)(rb->buffer_size - rb->read_index) > size) in rt_ringbuffer_peek()
250 rb->read_index += size; in rt_ringbuffer_peek()
254 size = rb->buffer_size - rb->read_index; in rt_ringbuffer_peek()
257 rb->read_mirror = ~rb->read_mirror; in rt_ringbuffer_peek()
258 rb->read_index = 0; in rt_ringbuffer_peek()
272 rt_size_t rt_ringbuffer_putchar(struct rt_ringbuffer *rb, const rt_uint8_t ch) in rt_ringbuffer_putchar() argument
274 RT_ASSERT(rb != RT_NULL); in rt_ringbuffer_putchar()
277 if (!rt_ringbuffer_space_len(rb)) in rt_ringbuffer_putchar()
280 rb->buffer_ptr[rb->write_index] = ch; in rt_ringbuffer_putchar()
283 if (rb->write_index == rb->buffer_size - 1) in rt_ringbuffer_putchar()
285 rb->write_mirror = ~rb->write_mirror; in rt_ringbuffer_putchar()
286 rb->write_index = 0; in rt_ringbuffer_putchar()
290 rb->write_index++; in rt_ringbuffer_putchar()
305 rt_size_t rt_ringbuffer_putchar_force(struct rt_ringbuffer *rb, const rt_uint8_t ch) in rt_ringbuffer_putchar_force() argument
309 RT_ASSERT(rb != RT_NULL); in rt_ringbuffer_putchar_force()
311 old_state = rt_ringbuffer_status(rb); in rt_ringbuffer_putchar_force()
313 rb->buffer_ptr[rb->write_index] = ch; in rt_ringbuffer_putchar_force()
316 if (rb->write_index == rb->buffer_size - 1) in rt_ringbuffer_putchar_force()
318 rb->write_mirror = ~rb->write_mirror; in rt_ringbuffer_putchar_force()
319 rb->write_index = 0; in rt_ringbuffer_putchar_force()
322 rb->read_mirror = ~rb->read_mirror; in rt_ringbuffer_putchar_force()
323 rb->read_index = rb->write_index; in rt_ringbuffer_putchar_force()
328 rb->write_index++; in rt_ringbuffer_putchar_force()
330 rb->read_index = rb->write_index; in rt_ringbuffer_putchar_force()
346 rt_size_t rt_ringbuffer_getchar(struct rt_ringbuffer *rb, rt_uint8_t *ch) in rt_ringbuffer_getchar() argument
348 RT_ASSERT(rb != RT_NULL); in rt_ringbuffer_getchar()
351 if (!rt_ringbuffer_data_len(rb)) in rt_ringbuffer_getchar()
355 *ch = rb->buffer_ptr[rb->read_index]; in rt_ringbuffer_getchar()
357 if (rb->read_index == rb->buffer_size - 1) in rt_ringbuffer_getchar()
359 rb->read_mirror = ~rb->read_mirror; in rt_ringbuffer_getchar()
360 rb->read_index = 0; in rt_ringbuffer_getchar()
364 rb->read_index++; in rt_ringbuffer_getchar()
378 rt_size_t rt_ringbuffer_data_len(struct rt_ringbuffer *rb) in rt_ringbuffer_data_len() argument
380 switch (rt_ringbuffer_status(rb)) in rt_ringbuffer_data_len()
385 return rb->buffer_size; in rt_ringbuffer_data_len()
389 rt_size_t wi = rb->write_index, ri = rb->read_index; in rt_ringbuffer_data_len()
394 return rb->buffer_size - (ri - wi); in rt_ringbuffer_data_len()
405 void rt_ringbuffer_reset(struct rt_ringbuffer *rb) in rt_ringbuffer_reset() argument
407 RT_ASSERT(rb != RT_NULL); in rt_ringbuffer_reset()
409 rb->read_mirror = 0; in rt_ringbuffer_reset()
410 rb->read_index = 0; in rt_ringbuffer_reset()
411 rb->write_mirror = 0; in rt_ringbuffer_reset()
412 rb->write_index = 0; in rt_ringbuffer_reset()
427 struct rt_ringbuffer *rb; in rt_ringbuffer_create() local
434 rb = (struct rt_ringbuffer *)rt_malloc(sizeof(struct rt_ringbuffer)); in rt_ringbuffer_create()
435 if (rb == RT_NULL) in rt_ringbuffer_create()
441 rt_free(rb); in rt_ringbuffer_create()
442 rb = RT_NULL; in rt_ringbuffer_create()
445 rt_ringbuffer_init(rb, pool, size); in rt_ringbuffer_create()
448 return rb; in rt_ringbuffer_create()
457 void rt_ringbuffer_destroy(struct rt_ringbuffer *rb) in rt_ringbuffer_destroy() argument
459 RT_ASSERT(rb != RT_NULL); in rt_ringbuffer_destroy()
461 rt_free(rb->buffer_ptr); in rt_ringbuffer_destroy()
462 rt_free(rb); in rt_ringbuffer_destroy()