diff options
author | Danny Holman <dholman@gymli.org> | 2025-01-12 01:17:36 -0600 |
---|---|---|
committer | Danny Holman <dholman@gymli.org> | 2025-01-12 01:19:11 -0600 |
commit | 95cd78840f0891e60f5ebecc8a8eb4fbaf3c2ebf (patch) | |
tree | c8c35347b50477929727fa5be9f5d0f55cbe18fd /include/libk/data/ringbuf.h | |
parent | 5e166f3042a8e7b3031aae4da7006f80caa53ecc (diff) |
PROJECT RESTRUCTURING
Move the entire kernel into its own directory. Create new directories
for system commands, libraries and other required essentials for a
complete Unix-like operating system.
Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'include/libk/data/ringbuf.h')
-rw-r--r-- | include/libk/data/ringbuf.h | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/include/libk/data/ringbuf.h b/include/libk/data/ringbuf.h deleted file mode 100644 index cc6d77b..0000000 --- a/include/libk/data/ringbuf.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef LIBK_RINGBUF_H -#define LIBK_RINGBUF_H - -#include <kernel/kmalloc.h> -#include <kernel/string.h> -#include <stdint.h> - -struct ringbuf { - void *buffer; - void *buf_end; - uint32_t capacity; - uint32_t count; - uint32_t size; - void *head; - void *tail; -}; - -static inline void rb_init(struct ringbuf *rb, uint32_t capacity, uint32_t size) { - rb->buffer = kmalloc(capacity * size); - rb->buf_end = (char*)rb->buffer + (capacity * size); - rb->capacity = capacity; - rb->size = size; - rb->head = rb->buffer; - rb->tail = rb->buffer; -} - -static inline int rb_push_back(struct ringbuf *rb, const void *item, size_t size) { - if (rb->count == rb->capacity) - return -1; - if (size > rb->size) - return -1; - - void *tmp = rb->tail + rb->size; - if (tmp > rb->head + rb->capacity * rb->size) - rb->tail = rb->head; - memcpy(rb->tail, item, size); - rb->tail += rb->size; - rb->count++; - return 0; -} - -static inline void rb_pop_front(struct ringbuf *rb, void *item) { - memcpy(item, rb->tail, rb->size); - rb->tail = (char*)rb->tail + rb->size; - if (rb->tail == rb->buf_end) - rb->tail = rb->buffer; - rb->count--; -} - -#endif |