mm/mm_heap: output memory info about each task

Signed-off-by: Jiuzhu Dong <dongjiuzhu1@xiaomi.com>
This commit is contained in:
Jiuzhu Dong 2022-06-02 13:44:14 +08:00 committed by Xiang Xiao
parent 0fddf71b2d
commit 8a1e985e71
1 changed files with 16 additions and 1 deletions

View File

@ -31,6 +31,7 @@
#include <nuttx/arch.h>
#include <nuttx/mm/mm.h>
#include <nuttx/sched.h>
#include "mm_heap/mm.h"
#include "kasan/kasan.h"
@ -82,6 +83,18 @@ static void mm_free_delaylist(FAR struct mm_heap_s *heap)
#endif
}
#ifdef CONFIG_MM_BACKTRACE
void mm_dump_handler(FAR struct tcb_s *tcb, FAR void *arg)
{
struct mallinfo_task info;
info.pid = tcb->pid;
mm_mallinfo_task(arg, &info);
mwarn("pid:%5d, used:%10d, nused:%10d\n",
tcb->pid, info.uordblks, info.aordblks);
}
#endif
/****************************************************************************
* Public Functions
****************************************************************************/
@ -254,7 +267,9 @@ FAR void *mm_malloc(FAR struct mm_heap_s *heap, size_t size)
mwarn("Total:%d, used:%d, free:%d, largest:%d, nused:%d, nfree:%d\n",
minfo.arena, minfo.uordblks, minfo.fordblks,
minfo.mxordblk, minfo.aordblks, minfo.ordblks);
mm_memdump(heap, -1);
# ifdef CONFIG_MM_BACKTRACE
nxsched_foreach(mm_dump_handler, heap);
# endif
#endif
#ifdef CONFIG_MM_PANIC_ON_FAILURE
PANIC();