From 20edb87505b1b02136be8716eae90665f8390767 Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Sun, 6 May 2018 01:37:39 -0700 Subject: [PATCH] Move block list dump to separate method in page manager --- src/kernel/main.cpp | 5 ++++- src/kernel/memory_pages.cpp | 18 +++++++++++------- src/kernel/memory_pages.h | 9 +++++++++ 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/kernel/main.cpp b/src/kernel/main.cpp index 2bdc246..08ab216 100644 --- a/src/kernel/main.cpp +++ b/src/kernel/main.cpp @@ -46,8 +46,9 @@ init_console(const popcorn_data *header) cons->puts(GIT_VERSION " booting...\n"); log::init(cons); - log::enable(logs::apic, log::level::debug); + log::enable(logs::apic, log::level::info); log::enable(logs::devices, log::level::debug); + log::enable(logs::memory, log::level::info); } void do_error_3() { int x = 1 / 0; } @@ -74,6 +75,7 @@ kernel_main(popcorn_data *header) header->frame_buffer_length); init_console(header); + // pager->dump_blocks(); interrupts_init(); device_manager devices(header->acpi_table); @@ -84,6 +86,7 @@ kernel_main(popcorn_data *header) log::info(logs::boot, "CPU Family %x Model %x Stepping %x", cpu.family(), cpu.model(), cpu.stepping()); + // do_error_1(); // __asm__ __volatile__("int $15"); diff --git a/src/kernel/memory_pages.cpp b/src/kernel/memory_pages.cpp index ebec123..f2030dd 100644 --- a/src/kernel/memory_pages.cpp +++ b/src/kernel/memory_pages.cpp @@ -119,7 +119,7 @@ page_block::consolidate(page_block *list) void page_block::dump(page_block *list, const char *name, bool show_unmapped) { - log::debug(logs::memory, "Block list %s:", name); + log::info(logs::memory, "Block list %s:", name); int count = 0; for (page_block *cur = list; cur; cur = cur->next) { @@ -129,7 +129,7 @@ page_block::dump(page_block *list, const char *name, bool show_unmapped) if (cur->virtual_address) { page_table_indices start{cur->virtual_address}; - log::debug(logs::memory, " %lx %x [%6d] %lx (%d,%d,%d,%d)", + log::info(logs::memory, " %lx %x [%6d] %lx (%d,%d,%d,%d)", cur->physical_address, cur->flags, cur->count, @@ -137,14 +137,14 @@ page_block::dump(page_block *list, const char *name, bool show_unmapped) start[0], start[1], start[2], start[3]); } else { page_table_indices start{cur->virtual_address}; - log::debug(logs::memory, " %lx %x [%6d]", + log::info(logs::memory, " %lx %x [%6d]", cur->physical_address, cur->flags, cur->count); } } - log::debug(logs::memory, " Total: %d", count); + log::info(logs::memory, " Total: %d", count); } void @@ -193,9 +193,6 @@ page_manager::init( consolidate_blocks(); - page_block::dump(m_used, "used", true); - page_block::dump(m_free, "free", true); - // Initialize the kernel memory manager addr_t end = 0; for (page_block *b = m_used; b; b = b->next) { @@ -235,6 +232,13 @@ page_manager::map_offset_pointer(void **pointer, size_t length) *p = v; } +void +page_manager::dump_blocks() +{ + page_block::dump(m_used, "used", true); + page_block::dump(m_free, "free", true); +} + page_block * page_manager::get_block() { diff --git a/src/kernel/memory_pages.h b/src/kernel/memory_pages.h index fa7fd20..cb94804 100644 --- a/src/kernel/memory_pages.h +++ b/src/kernel/memory_pages.h @@ -45,6 +45,13 @@ public: /// \arg length Length of the memory area to be mapped void map_offset_pointer(void **pointer, size_t length); + /// Log the current free/used block lists. + void dump_blocks(); + + /// Get the system page manager. + /// \returns A pointer to the system page manager + static page_manager * get(); + private: friend void memory_initialize_managers(const void *, size_t, size_t); @@ -142,6 +149,8 @@ private: /// Global page manager. extern page_manager g_page_manager; +inline page_manager * page_manager::get() { return &g_page_manager; } + /// Flags used by `page_block`. enum class page_block_flags : uint32_t {