embox

Форк
0
48 строк · 1.2 Кб
1
/**
2
 * @file
3
 *
4
 * @date 20.03.13
5
 * @author Eldar Abusalimov
6
 */
7

8
#include <lib/libds/ring.h>
9

10
#include <string.h>
11

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));
14
}
15

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));
18
}
19

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) {
22
	size_t count = 0;
23
	size_t block_size;
24

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;
28
		count += block_size;
29
		ring_just_read(r, r_size, block_size);
30
	}
31

32
	return count;
33
}
34

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) {
37
	size_t count = 0;
38
	size_t block_size;
39

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;
43
		count += block_size;
44
		ring_just_write(r, r_size, block_size);
45
	}
46

47
	return count;
48
}
49

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.