aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-02-01 09:23:01 -0500
committerRaghuram Subramani <raghus2247@gmail.com>2025-02-01 09:23:01 -0500
commit3c6e55df77bf373a5d51785afd8463bca9161c7c (patch)
tree2ca8b0b8641058b42fb13459cd8d3f260f5d7a28
parent4111fee72bcde6db229fc45b0076db8bc7407937 (diff)
libk: kmalloc->liballoc && C->C++
-rw-r--r--kernel/CMakeLists.txt2
-rw-r--r--kernel/include/libk/liballoc.h (renamed from kernel/include/libk/kmalloc.h)10
-rw-r--r--kernel/kernel/kernel.cc8
-rw-r--r--kernel/libk/liballoc.cc (renamed from kernel/libk/kmalloc.cc)19
-rw-r--r--kernel/mm/virtual_mm/virtual_mm.cc6
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;