5
* @author Eldar Abusalimov
8
#include <lib/libds/ring.h>
12
size_t ring_read(struct ring *r, size_t r_size, size_t read_size) {
13
return ring_just_read(r, r_size, ring_can_read(r, r_size, read_size));
16
size_t ring_write(struct ring *r, size_t r_size, size_t write_size) {
17
return ring_just_write(r, r_size, ring_can_write(r, r_size, write_size));
20
size_t ring_read_all_into(struct ring *r, const char *r_buff, size_t r_size,
21
char *into_buff, size_t read_size) {
25
while ((block_size = ring_can_read(r, r_size, read_size))) {
26
memcpy(into_buff + count, r_buff + r->tail, block_size);
27
read_size -= block_size;
29
ring_just_read(r, r_size, block_size);
35
size_t ring_write_all_from(struct ring *r, char *r_buff, size_t r_size,
36
const char *from_buff, size_t write_size) {
40
while ((block_size = ring_can_write(r, r_size, write_size))) {
41
memcpy(r_buff + r->head, from_buff + count, block_size);
42
write_size -= block_size;
44
ring_just_write(r, r_size, block_size);