From 507062d51b3e018fdfac838e7982ffe62ff423c5 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Sun, 28 Apr 2024 21:39:53 +0200 Subject: Kernel: Use ringbuffer for handling incoming socket data --- kernel/lib/ringbuffer.c | 4 ++++ kernel/lib/ringbuffer.h | 4 ++++ 2 files changed, 8 insertions(+) (limited to 'kernel/lib') diff --git a/kernel/lib/ringbuffer.c b/kernel/lib/ringbuffer.c index 425971d..66dd17e 100644 --- a/kernel/lib/ringbuffer.c +++ b/kernel/lib/ringbuffer.c @@ -65,6 +65,10 @@ u32 ringbuffer_read(struct ringbuffer *rb, u8 *buffer, u32 len) { return orig_len - len; } +int ringbuffer_isempty(const struct ringbuffer *rb) { + return (rb->write_ptr == rb->read_ptr); +} + void ringbuffer_free(struct ringbuffer *rb) { kfree(rb->buffer); rb->buffer = NULL; diff --git a/kernel/lib/ringbuffer.h b/kernel/lib/ringbuffer.h index c329af3..3ebc507 100644 --- a/kernel/lib/ringbuffer.h +++ b/kernel/lib/ringbuffer.h @@ -1,3 +1,5 @@ +#ifndef RINGBUFFER_H +#define RINGBUFFER_H #include struct ringbuffer { @@ -10,7 +12,9 @@ struct ringbuffer { int ringbuffer_init(struct ringbuffer *rb, u32 buffer_size); u32 ringbuffer_write(struct ringbuffer *rb, const u8 *buffer, u32 len); u32 ringbuffer_read(struct ringbuffer *rb, u8 *buffer, u32 len); +int ringbuffer_isempty(const struct ringbuffer *rb); void ringbuffer_free(struct ringbuffer *rb); #ifdef KERNEL_TEST void ringbuffer_test(void); #endif // KERNEL_TEST +#endif // RINGBUFFER_H -- cgit v1.2.3