summaryrefslogtreecommitdiff
path: root/mem/allocator.h
diff options
context:
space:
mode:
authorAlejandro Sior <aho@sior.be>2022-07-23 22:53:47 +0200
committerAlejandro Sior <aho@sior.be>2022-07-23 22:53:47 +0200
commitef805e9373fd946bf1fe667bf18a54dfed6d1045 (patch)
tree7762f9574bbd56c502d4dbba1a9d5f3535035211 /mem/allocator.h
kernel: add basic modules: arch, mem, rt
Diffstat (limited to 'mem/allocator.h')
-rw-r--r--mem/allocator.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/mem/allocator.h b/mem/allocator.h
new file mode 100644
index 0000000..535965a
--- /dev/null
+++ b/mem/allocator.h
@@ -0,0 +1,23 @@
+#ifndef MEM_ALLOCATOR_H
+#define MEM_ALLOCATOR_H
+
+#include <rt.h>
+
+typedef struct mem_allocator MemAllocator;
+
+typedef void *(*MemAlloc)(MemAllocator *, usize);
+typedef void *(*MemRealloc)(MemAllocator *, void *, usize);
+typedef void (*MemFree)(MemAllocator *, void *);
+
+/* Abstract object representing an allocator */
+struct mem_allocator {
+ MemAlloc alloc;
+ MemRealloc realloc;
+ MemFree free;
+};
+
+void *mem_alloc(MemAllocator *self, usize n);
+void *mem_realloc(MemAllocator *self, void *ptr, usize n);
+void mem_free(MemAllocator *self, void *ptr);
+
+#endif \ No newline at end of file