aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-02-04 19:34:26 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2025-02-04 19:36:47 +0530
commitcb90318893b2bbbfa22c1d656b3fb74765c62615 (patch)
tree59b554917480864f58464625b541e7ab4e31c2a5
parent1c84c1e838bddb1a85d1a708b22e9d488831f5b2 (diff)
mm: virtual_mm: No need to check l_table_index
Since each directory can have only 1024 entries, we don't need to check l_table_index or create any new tables.
-rw-r--r--kernel/kernel/kernel.cc19
-rw-r--r--kernel/mm/virtual_mm/page_table_allocator.cc5
-rw-r--r--kernel/mm/virtual_mm/pages.cc2
-rw-r--r--kernel/mm/virtual_mm/virtual_mm.cc2
4 files changed, 2 insertions, 26 deletions
diff --git a/kernel/kernel/kernel.cc b/kernel/kernel/kernel.cc
index 9143bec..a4670a9 100644
--- a/kernel/kernel/kernel.cc
+++ b/kernel/kernel/kernel.cc
@@ -44,25 +44,6 @@ kernel_main(uint32_t magic, multiboot_info_t *multiboot_info)
MemoryMap::load(multiboot_info);
PhysicalMM::initialize();
VirtualMM::initialize();
- PageTableAllocator::prepare();
-
- // uint32_t *page = (uint32_t *) VirtualMM::alloc_pages(1);
- // printk("debug", "page(0x%x)", page);
-
- int *x = (int *) LibAlloc::kmalloc(14 * MiB);
- 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 *) LibAlloc::kmalloc(sizeof(int) * 8192);
- for (uint32_t i = 0; i < 8192; i++)
- y[i] = i;
- printk("debug", "x(0x%x) *x(0x%x)", y, y[12]);
-
- int *z = (int *) LibAlloc::kmalloc(sizeof(int) * 8192);
- for (uint32_t i = 0; i < 8192; i++)
- z[i] = i;
- printk("debug", "x(0x%x) *x(0x%x)", z, z[12]);
printk("\nKernel", "Started.");
diff --git a/kernel/mm/virtual_mm/page_table_allocator.cc b/kernel/mm/virtual_mm/page_table_allocator.cc
index 3ec4896..6a2a07e 100644
--- a/kernel/mm/virtual_mm/page_table_allocator.cc
+++ b/kernel/mm/virtual_mm/page_table_allocator.cc
@@ -56,11 +56,6 @@ prepare(void)
/* Initial table */
if (l_heap == NULL)
make_table((uint32_t *) (7 * MiB));
-
- /* If we're gonna run out of space, allocate a new table with the remaining
- * page */
- if (l_table_index == 1023)
- make_table(allocate());
}
uint32_t *
diff --git a/kernel/mm/virtual_mm/pages.cc b/kernel/mm/virtual_mm/pages.cc
index 7778418..3eb403c 100644
--- a/kernel/mm/virtual_mm/pages.cc
+++ b/kernel/mm/virtual_mm/pages.cc
@@ -30,8 +30,6 @@ namespace VirtualMM
void *
alloc_pages(uint32_t n_pages)
{
- PageTableAllocator::prepare();
-
uint32_t starting_address = (uint32_t) find_free_addresses(n_pages);
if (!starting_address)
return NULL;
diff --git a/kernel/mm/virtual_mm/virtual_mm.cc b/kernel/mm/virtual_mm/virtual_mm.cc
index fc6bec6..2055481 100644
--- a/kernel/mm/virtual_mm/virtual_mm.cc
+++ b/kernel/mm/virtual_mm/virtual_mm.cc
@@ -105,6 +105,8 @@ initialize(void)
switch_page_directory(l_page_directory);
enable_paging();
+
+ PageTableAllocator::prepare();
}
uint32_t *