summaryrefslogtreecommitdiff
path: root/kernel/lib/ringbuffer.c
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2024-04-29 18:00:20 +0200
committerAnton Kling <anton@kling.gg>2024-04-29 18:00:20 +0200
commit7d2ab3a71f4bda9d8ee997764d98b29e13a902c5 (patch)
tree6dcdc7a674a8047a2dba3e95d3be91b4e3161bd5 /kernel/lib/ringbuffer.c
parentd60fa1fc01e600c4a163bbe82fab3f1986cb1476 (diff)
Kernel/Socket: Move sockets back to being file descriptors
Diffstat (limited to 'kernel/lib/ringbuffer.c')
-rw-r--r--kernel/lib/ringbuffer.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/kernel/lib/ringbuffer.c b/kernel/lib/ringbuffer.c
index 66dd17e..9caf555 100644
--- a/kernel/lib/ringbuffer.c
+++ b/kernel/lib/ringbuffer.c
@@ -16,6 +16,23 @@ int ringbuffer_init(struct ringbuffer *rb, u32 buffer_size) {
return 1;
}
+u32 ringbuffer_used(const struct ringbuffer *rb) {
+ if (rb->write_ptr < rb->read_ptr) {
+ u32 c = rb->buffer_size - rb->read_ptr;
+ c += rb->write_ptr;
+ return c;
+ }
+ return rb->write_ptr - rb->read_ptr;
+}
+
+u32 ringbuffer_capacity(const struct ringbuffer *rb) {
+ return rb->buffer_size - 1;
+}
+
+u32 ringbuffer_unused(const struct ringbuffer *rb) {
+ return ringbuffer_capacity(rb) - ringbuffer_used(rb);
+}
+
u32 ringbuffer_write(struct ringbuffer *rb, const u8 *buffer, u32 len) {
const u32 orig_len = len;
for (; len > 0;) {