vm: add trace output

This commit is contained in:
2026-02-21 11:22:51 +00:00
parent e1e025ab6a
commit 855440f584
2 changed files with 35 additions and 5 deletions

View File

@@ -19,10 +19,11 @@
contributors may be used to endorse or promote products derived from this contributors may be used to endorse or promote products derived from this
software without specific prior written permission. software without specific prior written permission.
*/ */
#include <limits.h>
#include <kernel/libc/string.h> #include <kernel/libc/string.h>
#include <kernel/memblock.h> #include <kernel/memblock.h>
#include <kernel/printk.h>
#include <kernel/types.h> #include <kernel/types.h>
#include <limits.h>
#include <stdbool.h> #include <stdbool.h>
#define MIN(a, b) ((a) < (b) ? (a) : (b)) #define MIN(a, b) ((a) < (b) ? (a) : (b))
@@ -447,10 +448,10 @@ void __next_memory_region(
} }
/* we want the area that is overlapped by both /* we want the area that is overlapped by both
region M (m_start - m_end) : The region defined - region M (m_start - m_end) : The region defined
as system memory. region R (r_start - r_end) : The as system memory.
region defined as free / outside of any reserved - region R (r_start - r_end) : The region defined as
regions. free / outside of any reserved regions.
*/ */
it->it_base = MAX(m_start, r_start); it->it_base = MAX(m_start, r_start);
it->it_limit = MIN(m_end, r_end); it->it_limit = MIN(m_end, r_end);
@@ -497,3 +498,28 @@ void *memblock_phys_to_virt(phys_addr_t p)
{ {
return (void *)(p + memblock.m_voffset); return (void *)(p + memblock.m_voffset);
} }
#ifdef TRACE
static void memblock_type_dump(struct memblock_type *type)
{
tracek("%s:", type->name);
for (size_t i = 0; i < type->count; i++) {
tracek(" [%zx-%zx]",
type->regions[i].base,
type->regions[i].limit);
}
}
extern void memblock_dump(void)
{
memblock_type_dump(&memblock.memory);
memblock_type_dump(&memblock.reserved);
tracek("free:");
struct memblock_iter it;
for_each_free_mem_range(&it, 0, ADDR_MAX)
{
tracek(" [%zx-%zx]", it.it_base, it.it_limit);
}
}
#endif

View File

@@ -286,6 +286,10 @@ extern struct vm_page *vm_object_alloc_page(
return NULL; return NULL;
} }
tracek("vm-object: [%s] alloc offset %zx -> page %zx",
vo->vo_name,
offset,
vm_page_get_paddr(page));
page->p_vmo_offset = offset; page->p_vmo_offset = offset;
vo->vo_pages.b_root = &page->p_bnode; vo->vo_pages.b_root = &page->p_bnode;
btree_insert_fixup(&vo->vo_pages, &page->p_bnode); btree_insert_fixup(&vo->vo_pages, &page->p_bnode);