From 64c2ad54353df91f481dd1d3d75da41bb50d72ea Mon Sep 17 00:00:00 2001 From: Jakub Jermar Date: Sun, 8 Oct 2006 14:47:54 +0000 Subject: [PATCH] Add function for printing out info about address space. --- kernel/generic/include/mm/as.h | 3 +++ kernel/generic/src/mm/as.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/kernel/generic/include/mm/as.h b/kernel/generic/include/mm/as.h index 7e0ffa29f..03044add1 100644 --- a/kernel/generic/include/mm/as.h +++ b/kernel/generic/include/mm/as.h @@ -216,6 +216,9 @@ extern unative_t sys_as_area_create(uintptr_t address, size_t size, int flags); extern unative_t sys_as_area_resize(uintptr_t address, size_t size, int flags); extern unative_t sys_as_area_destroy(uintptr_t address); +/* Introspection functions. */ +extern void as_print(as_t *as); + #endif /* KERNEL */ #endif diff --git a/kernel/generic/src/mm/as.c b/kernel/generic/src/mm/as.c index 43cdb8990..87b0b3f48 100644 --- a/kernel/generic/src/mm/as.c +++ b/kernel/generic/src/mm/as.c @@ -1578,5 +1578,39 @@ unative_t sys_as_area_destroy(uintptr_t address) return (unative_t) as_area_destroy(AS, address); } +/** Print out information about address space. + * + * @param as Address space. + */ +void as_print(as_t *as) +{ + ipl_t ipl; + + ipl = interrupts_disable(); + mutex_lock(&as->lock); + + /* print out info about address space areas */ + link_t *cur; + for (cur = as->as_area_btree.leaf_head.next; cur != &as->as_area_btree.leaf_head; cur = cur->next) { + as_area_t *area; + btree_node_t *node; + + node = list_get_instance(cur, btree_node_t, leaf_link); + + int i; + for (i = 0; i < node->keys; i++) { + area = node->value[i]; + + mutex_lock(&area->lock); + printf("as_area: %p, base=%p, pages=%d (%p - %p)\n", + area, area->base, area->pages, area->base, area->base + area->pages*PAGE_SIZE); + mutex_unlock(&area->lock); + } + } + + mutex_unlock(&as->lock); + interrupts_restore(ipl); +} + /** @} */ -- 2.11.4.GIT