diff options
| author | Shell <[email protected]> | 2023-07-05 17:54:28 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-07-05 17:54:28 +0800 |
| commit | af01d1fd1ccecfcefe535060de678651760a92f1 (patch) | |
| tree | b7ada4f1aa12e5ee8b58d6d1de79858c334c817f /components | |
| parent | d6adf6708f6e0666d040e553a81b24edcc92c374 (diff) | |
[components/mm] improve output of list_page (#7779)
Diffstat (limited to 'components')
| -rw-r--r-- | components/mm/mm_page.c | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/components/mm/mm_page.c b/components/mm/mm_page.c index f72083a9d3..53df6a4e28 100644 --- a/components/mm/mm_page.c +++ b/components/mm/mm_page.c @@ -597,46 +597,42 @@ int rt_pages_free(void *addr, rt_uint32_t size_bits) void rt_page_list(void) __attribute__((alias("list_page"))); -#warning TODO: improve list page +#define PGNR2SIZE(nr) ((nr) * ARCH_PAGE_SIZE / 1024) + void list_page(void) { int i; - rt_size_t total = 0; + rt_size_t free = 0; + rt_size_t installed = page_nr + _high_pages_nr; rt_base_t level; level = rt_hw_interrupt_disable(); for (i = 0; i < RT_PAGE_MAX_ORDER; i++) { - struct rt_page *p = page_list_low[i]; + struct rt_page *lp = page_list_low[i]; + struct rt_page *hp = page_list_high[i]; rt_kprintf("level %d ", i); - while (p) + while (lp) { - total += (1UL << i); - rt_kprintf("[0x%08p]", rt_page_page2addr(p)); - p = p->next; + free += (1UL << i); + rt_kprintf("[0x%08p]", rt_page_page2addr(lp)); + lp = lp->next; } - rt_kprintf("\n"); - } - for (i = 0; i < RT_PAGE_MAX_ORDER; i++) - { - struct rt_page *p = page_list_high[i]; - - rt_kprintf("level %d ", i); - - while (p) + while (hp) { - total += (1UL << i); - rt_kprintf("[0x%08p]", rt_page_page2addr(p)); - p = p->next; + free += (1UL << i); + rt_kprintf("[0x%08p]", rt_page_page2addr(hp)); + hp = hp->next; } rt_kprintf("\n"); } rt_hw_interrupt_enable(level); - rt_kprintf("free pages is 0x%08lx (%ld KB)\n", total, total * ARCH_PAGE_SIZE / 1024); + rt_kprintf("-------------------------------\n"); + rt_kprintf("Page Summary:\n => free/installed: 0x%lx/0x%lx (%ld/%ld KB)\n", free, installed, PGNR2SIZE(free), PGNR2SIZE(installed)); rt_kprintf("-------------------------------\n"); } MSH_CMD_EXPORT(list_page, show page info); |
