diff options
author | Anton Kling <anton@kling.gg> | 2024-04-28 21:39:53 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-04-28 21:40:39 +0200 |
commit | 507062d51b3e018fdfac838e7982ffe62ff423c5 (patch) | |
tree | 9ed18a03fd2c35329525872f2aabe2455a7a6236 /kernel/lib | |
parent | 7695cb9ca77a32aae75cf0d2bcea9769cd938615 (diff) |
Kernel: Use ringbuffer for handling incoming socket data
Diffstat (limited to 'kernel/lib')
-rw-r--r-- | kernel/lib/ringbuffer.c | 4 | ||||
-rw-r--r-- | kernel/lib/ringbuffer.h | 4 |
2 files changed, 8 insertions, 0 deletions
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 <typedefs.h> 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 |