vm: add trace output
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user