summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorShell <[email protected]>2023-07-05 17:54:28 +0800
committerGitHub <[email protected]>2023-07-05 17:54:28 +0800
commitaf01d1fd1ccecfcefe535060de678651760a92f1 (patch)
treeb7ada4f1aa12e5ee8b58d6d1de79858c334c817f /components
parentd6adf6708f6e0666d040e553a81b24edcc92c374 (diff)
[components/mm] improve output of list_page (#7779)
Diffstat (limited to 'components')
-rw-r--r--components/mm/mm_page.c36
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);