mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 08:24:32 -08:00
Move block list dump to separate method in page manager
This commit is contained in:
@@ -46,8 +46,9 @@ init_console(const popcorn_data *header)
|
|||||||
cons->puts(GIT_VERSION " booting...\n");
|
cons->puts(GIT_VERSION " booting...\n");
|
||||||
|
|
||||||
log::init(cons);
|
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::devices, log::level::debug);
|
||||||
|
log::enable(logs::memory, log::level::info);
|
||||||
}
|
}
|
||||||
|
|
||||||
void do_error_3() { int x = 1 / 0; }
|
void do_error_3() { int x = 1 / 0; }
|
||||||
@@ -74,6 +75,7 @@ kernel_main(popcorn_data *header)
|
|||||||
header->frame_buffer_length);
|
header->frame_buffer_length);
|
||||||
|
|
||||||
init_console(header);
|
init_console(header);
|
||||||
|
// pager->dump_blocks();
|
||||||
|
|
||||||
interrupts_init();
|
interrupts_init();
|
||||||
device_manager devices(header->acpi_table);
|
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",
|
log::info(logs::boot, "CPU Family %x Model %x Stepping %x",
|
||||||
cpu.family(), cpu.model(), cpu.stepping());
|
cpu.family(), cpu.model(), cpu.stepping());
|
||||||
|
|
||||||
|
|
||||||
// do_error_1();
|
// do_error_1();
|
||||||
// __asm__ __volatile__("int $15");
|
// __asm__ __volatile__("int $15");
|
||||||
|
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ page_block::consolidate(page_block *list)
|
|||||||
void
|
void
|
||||||
page_block::dump(page_block *list, const char *name, bool show_unmapped)
|
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;
|
int count = 0;
|
||||||
for (page_block *cur = list; cur; cur = cur->next) {
|
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) {
|
if (cur->virtual_address) {
|
||||||
page_table_indices start{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->physical_address,
|
||||||
cur->flags,
|
cur->flags,
|
||||||
cur->count,
|
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]);
|
start[0], start[1], start[2], start[3]);
|
||||||
} else {
|
} else {
|
||||||
page_table_indices start{cur->virtual_address};
|
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->physical_address,
|
||||||
cur->flags,
|
cur->flags,
|
||||||
cur->count);
|
cur->count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log::debug(logs::memory, " Total: %d", count);
|
log::info(logs::memory, " Total: %d", count);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -193,9 +193,6 @@ page_manager::init(
|
|||||||
|
|
||||||
consolidate_blocks();
|
consolidate_blocks();
|
||||||
|
|
||||||
page_block::dump(m_used, "used", true);
|
|
||||||
page_block::dump(m_free, "free", true);
|
|
||||||
|
|
||||||
// Initialize the kernel memory manager
|
// Initialize the kernel memory manager
|
||||||
addr_t end = 0;
|
addr_t end = 0;
|
||||||
for (page_block *b = m_used; b; b = b->next) {
|
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;
|
*p = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
page_manager::dump_blocks()
|
||||||
|
{
|
||||||
|
page_block::dump(m_used, "used", true);
|
||||||
|
page_block::dump(m_free, "free", true);
|
||||||
|
}
|
||||||
|
|
||||||
page_block *
|
page_block *
|
||||||
page_manager::get_block()
|
page_manager::get_block()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -45,6 +45,13 @@ public:
|
|||||||
/// \arg length Length of the memory area to be mapped
|
/// \arg length Length of the memory area to be mapped
|
||||||
void map_offset_pointer(void **pointer, size_t length);
|
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:
|
private:
|
||||||
friend void memory_initialize_managers(const void *, size_t, size_t);
|
friend void memory_initialize_managers(const void *, size_t, size_t);
|
||||||
|
|
||||||
@@ -142,6 +149,8 @@ private:
|
|||||||
/// Global page manager.
|
/// Global page manager.
|
||||||
extern page_manager g_page_manager;
|
extern page_manager g_page_manager;
|
||||||
|
|
||||||
|
inline page_manager * page_manager::get() { return &g_page_manager; }
|
||||||
|
|
||||||
/// Flags used by `page_block`.
|
/// Flags used by `page_block`.
|
||||||
enum class page_block_flags : uint32_t
|
enum class page_block_flags : uint32_t
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user