diff options
author | Raghuram Subramani <raghus2247@gmail.com> | 2025-02-01 09:23:01 -0500 |
---|---|---|
committer | Raghuram Subramani <raghus2247@gmail.com> | 2025-02-01 09:23:01 -0500 |
commit | 3c6e55df77bf373a5d51785afd8463bca9161c7c (patch) | |
tree | 2ca8b0b8641058b42fb13459cd8d3f260f5d7a28 | |
parent | 4111fee72bcde6db229fc45b0076db8bc7407937 (diff) |
libk: kmalloc->liballoc && C->C++
-rw-r--r-- | kernel/CMakeLists.txt | 2 | ||||
-rw-r--r-- | kernel/include/libk/liballoc.h (renamed from kernel/include/libk/kmalloc.h) | 10 | ||||
-rw-r--r-- | kernel/kernel/kernel.cc | 8 | ||||
-rw-r--r-- | kernel/libk/liballoc.cc (renamed from kernel/libk/kmalloc.cc) | 19 | ||||
-rw-r--r-- | kernel/mm/virtual_mm/virtual_mm.cc | 6 |
5 files changed, 28 insertions, 17 deletions
diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index cde48b6..a65d436 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -18,7 +18,7 @@ set(SRC libk/printf.cc libk/printk.cc libk/strlen.cc - libk/kmalloc.cc + libk/liballoc.cc mm/memory_map.cc mm/physical_mm/bitmap.cc diff --git a/kernel/include/libk/kmalloc.h b/kernel/include/libk/liballoc.h index fac3a95..8b57122 100644 --- a/kernel/include/libk/kmalloc.h +++ b/kernel/include/libk/liballoc.h @@ -23,6 +23,9 @@ #include <stddef.h> #include <stdint.h> +namespace LibAlloc +{ + /** 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 @@ -41,8 +44,11 @@ struct boundary_tag { struct boundary_tag *prev; //< Linked list info. }; -bool kmalloc_initialized(void); -void kmalloc_initialize(void); +bool initialized(void); +void initialize(void); + void *kmalloc(size_t); +} + #endif diff --git a/kernel/kernel/kernel.cc b/kernel/kernel/kernel.cc index 5b02baf..8e24ac0 100644 --- a/kernel/kernel/kernel.cc +++ b/kernel/kernel/kernel.cc @@ -20,7 +20,7 @@ #include <drivers/serial.h> #include <drivers/vga_text_buffer.h> #include <kernel/halt.h> -#include <libk/kmalloc.h> +#include <libk/liballoc.h> #include <libk/stdio.h> #include <mm/memory_map.h> #include <mm/multiboot.h> @@ -43,14 +43,14 @@ kernel_main(uint32_t magic, multiboot_info_t *multiboot_info) MemoryMap::load(multiboot_info); PhysicalMM::initialize(); VirtualMM::initialize(); - kmalloc_initialize(); + LibAlloc::initialize(); - int *x = (int *) kmalloc(sizeof(int) * 8192); + int *x = (int *) LibAlloc::kmalloc(sizeof(int) * 8192); for (uint32_t i = 0; i < 8192; i++) x[i] = i; printk("debug", "x(0x%x) *x(0x%x)", x, x[12]); - int *y = (int *) kmalloc(sizeof(int) * 8192); + int *y = (int *) LibAlloc::kmalloc(sizeof(int) * 8192); for (uint32_t i = 0; i < 8192; i++) y[i] = i; printk("debug", "y(0x%x) *x(0x%x)", y, y[14]); diff --git a/kernel/libk/kmalloc.cc b/kernel/libk/liballoc.cc index 2354139..6f48557 100644 --- a/kernel/libk/kmalloc.cc +++ b/kernel/libk/liballoc.cc @@ -18,7 +18,7 @@ */ #include <kernel/spinlock.h> -#include <libk/kmalloc.h> +#include <libk/liballoc.h> #include <libk/stdio.h> #include <mm/virtual_mm.h> #include <stddef.h> @@ -36,6 +36,9 @@ #define MODE MODE_BEST +namespace LibAlloc +{ + struct boundary_tag *l_freePages[MAXEXP]; //< Allowing for 2^MAXEXP blocks int l_completePages[MAXEXP]; //< Allowing for 2^MAXEXP blocks @@ -44,7 +47,7 @@ static unsigned int l_pageSize = 4096; //< Individual page size static unsigned int l_pageCount = 1; //< Minimum number of pages to allocate. spinlock_t lock; -bool initialized; +bool kmalloc_initialized; #define liballoc_alloc VirtualMM::alloc_pages #define liballoc_free VirtualMM::free_pages @@ -64,22 +67,22 @@ liballoc_unlock(void) } bool -kmalloc_initialized(void) +initialized(void) { - return initialized; + return kmalloc_initialized; } void -kmalloc_initialize(void) +initialize(void) { // void *x = kmalloc(1); - initialized = true; + kmalloc_initialized = true; // kfree(x); } static inline int -getexp(unsigned int size) +getexp(int size) { if (size < (1 << MINEXP)) { return -1; // Smaller than the quantum. @@ -273,3 +276,5 @@ kmalloc(size_t size) liballoc_unlock(); return ptr; } + +} diff --git a/kernel/mm/virtual_mm/virtual_mm.cc b/kernel/mm/virtual_mm/virtual_mm.cc index ee2e78a..041459f 100644 --- a/kernel/mm/virtual_mm/virtual_mm.cc +++ b/kernel/mm/virtual_mm/virtual_mm.cc @@ -17,7 +17,7 @@ */ #include <kernel/halt.h> -#include <libk/kmalloc.h> +#include <libk/liballoc.h> #include <libk/stdio.h> #include <mm/physical_mm.h> #include <mm/virtual_mm.h> @@ -102,7 +102,7 @@ uint32_t * make_table(uint32_t *pd_entry) { uint32_t *table = 0; - if (!kmalloc_initialized()) { + if (!LibAlloc::initialized()) { /* If we don't have a dynamic memory allocator yet (this will happen only * once, when we initialize the dynamic allocator), then we hard code the * next page table to be at 7MiB */ @@ -110,7 +110,7 @@ make_table(uint32_t *pd_entry) printk("virtual_mm", "Using our hard coded table; this should happen only once."); } else - table = (uint32_t *) kmalloc(sizeof(uint32_t) * 1024); + table = (uint32_t *) LibAlloc::kmalloc(sizeof(uint32_t) * 1024); for (uint32_t i = 0; i < 1024; i++) table[i] = 0x0; |