ringbuffer: ringbuffer_truncate

This commit is contained in:
Matheus
2024-04-07 16:31:17 -03:00
parent 802a425baa
commit 219635a48a
2 changed files with 9 additions and 2 deletions
+1
View File
@@ -15,6 +15,7 @@ int ringbuffer_init(ringbuffer_t *ringbuffer, size_t size);
void ringbuffer_destroy(ringbuffer_t *ringbuffer);
size_t ringbuffer_read(ringbuffer_t* ringbuffer, void *buffer, size_t count);
size_t ringbuffer_write(ringbuffer_t* ringbuffer, void *buffer, size_t count);
size_t ringbuffer_truncate(ringbuffer_t *ringbuffer, size_t count);
#define RINGBUFFER_DATACOUNT(x) ((x)->write - (x)->read)
+8 -2
View File
@@ -18,7 +18,13 @@ void ringbuffer_destroy(ringbuffer_t *ringbuffer) {
vmm_unmap(ringbuffer->data, ROUND_UP(ringbuffer->size, PAGE_SIZE), 0);
}
size_t ringbuffer_read(ringbuffer_t* ringbuffer, void *buffer, size_t count) {
size_t ringbuffer_truncate(ringbuffer_t *ringbuffer, size_t count) {
size_t truecount = min(RINGBUFFER_DATACOUNT(ringbuffer), count);
ringbuffer->read += truecount;
return truecount;
}
size_t ringbuffer_read(ringbuffer_t *ringbuffer, void *buffer, size_t count) {
uint8_t *ptr = buffer;
size_t readc = 0;
for (; readc < count; ++readc) {
@@ -32,7 +38,7 @@ size_t ringbuffer_read(ringbuffer_t* ringbuffer, void *buffer, size_t count) {
return readc;
}
size_t ringbuffer_write(ringbuffer_t* ringbuffer, void *buffer, size_t count) {
size_t ringbuffer_write(ringbuffer_t *ringbuffer, void *buffer, size_t count) {
uint8_t *ptr = buffer;
size_t writec = 0;
for (;writec < count; ++writec) {