aboutsummaryrefslogtreecommitdiff
path: root/kernel/include/libk
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/include/libk')
-rw-r--r--kernel/include/libk/liballoc.h29
1 files changed, 18 insertions, 11 deletions
diff --git a/kernel/include/libk/liballoc.h b/kernel/include/libk/liballoc.h
index ff40054..b1568e9 100644
--- a/kernel/include/libk/liballoc.h
+++ b/kernel/include/libk/liballoc.h
@@ -20,25 +20,32 @@
#define __libk_liballoc_h
#include <stddef.h>
-#include <stdint.h>
namespace LibAlloc
{
-class Block
-{
-public:
- Block *m_next;
- uint32_t m_size;
+/** This is a boundary tag which is prepended to the
+ * page or section of a page which we have allocated. It is
+ * used to identify valid memory blocks that the
+ * application is trying to free.
+ */
+struct boundary_tag {
+ unsigned int magic; //< It's a kind of ...
+ unsigned int size; //< Requested size.
+ unsigned int real_size; //< Actual size.
+ int index; //< Location in the page table.
-public:
- void initialize(uint32_t size);
+ struct boundary_tag *split_left; //< Linked-list info for broken pages.
+ struct boundary_tag *split_right; //< The same.
- void *get_chunk(void);
+ struct boundary_tag *next; //< Linked list info.
+ struct boundary_tag *prev; //< Linked list info.
};
-bool initialized(void);
-void initialize(void);
+void *kmalloc(size_t);
+void *krealloc(void *, size_t);
+void *kcalloc(size_t, size_t);
+void kfree(void *);
}