From 7f4c833ced046f88160a50e7adb1f55343e7e759 Mon Sep 17 00:00:00 2001 From: Nathan Lee Date: Fri, 28 Aug 2026 21:26:14 -0500 Subject: rework early kernel init --- kernel/common/mem.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'kernel/common/mem.c') diff --git a/kernel/common/mem.c b/kernel/common/mem.c index fee0761..f03d0a8 100644 --- a/kernel/common/mem.c +++ b/kernel/common/mem.c @@ -1,8 +1,12 @@ #include #include +#define EHEAP_SIZE (512 * 1024) static struct page *free_list; +static char eheap[EHEAP_SIZE] = {0}; +static size_t eheap_off = 0; + static void merge_freelist() { struct page *list = free_list; @@ -16,6 +20,20 @@ static void merge_freelist() { } } + +void* kemalloc(size_t size) { + size = (size + 7) & ~7; + + if (eheap_off + size > EHEAP_SIZE) { + return NULL; + } + + void *ptr = &eheap[eheap_off]; + eheap_off += size; + return ptr; +} + + void* kmalloc(size_t size) { struct page *page = free_list; struct page *last = NULL; -- cgit v1.2.3