drivers/segger: add heap data plot

Add heap current used to note.
Plot it in segger sysview data plot.

Signed-off-by: xuxingliang <xuxingliang@xiaomi.com>
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
This commit is contained in:
xuxingliang
2024-08-28 10:06:52 +08:00
committed by Xiang Xiao
parent b3cc564910
commit 18d5ae20f5
15 changed files with 100 additions and 122 deletions
+12 -7
View File
@@ -511,7 +511,7 @@ static void mm_delayfree(FAR struct mm_heap_s *heap, FAR void *mem,
/* Update heap statistics */
heap->mm_curused -= size;
sched_note_heap(NOTE_HEAP_FREE, heap, mem, size);
sched_note_heap(NOTE_HEAP_FREE, heap, mem, size, heap->mm_curused);
tlsf_free(heap->mm_tlsf, mem);
}
@@ -601,7 +601,8 @@ void mm_addregion(FAR struct mm_heap_s *heap, FAR void *heapstart,
tlsf_add_pool(heap->mm_tlsf, heapstart, heapsize);
mm_unlock(heap);
sched_note_heap(NOTE_HEAP_ADD, heap, heapstart, heapsize);
sched_note_heap(NOTE_HEAP_ADD, heap, heapstart, heapsize,
heap->mm_curused);
}
/****************************************************************************
@@ -1191,7 +1192,8 @@ FAR void *mm_malloc(FAR struct mm_heap_s *heap, size_t size)
#endif
ret = kasan_unpoison(ret, nodesize);
sched_note_heap(NOTE_HEAP_ALLOC, heap, ret, nodesize);
sched_note_heap(NOTE_HEAP_ALLOC, heap, ret, nodesize,
heap->mm_curused);
#ifdef CONFIG_MM_FILL_ALLOCATIONS
memset(ret, 0xaa, nodesize);
@@ -1271,7 +1273,8 @@ FAR void *mm_memalign(FAR struct mm_heap_s *heap, size_t alignment,
memdump_backtrace(heap, buf);
#endif
ret = kasan_unpoison(ret, nodesize);
sched_note_heap(NOTE_HEAP_ALLOC, heap, ret, nodesize);
sched_note_heap(NOTE_HEAP_ALLOC, heap, ret, nodesize,
heap->mm_curused);
}
#if CONFIG_MM_FREE_DELAYCOUNT_MAX > 0
@@ -1399,8 +1402,10 @@ FAR void *mm_realloc(FAR struct mm_heap_s *heap, FAR void *oldmem,
memdump_backtrace(heap, buf);
#endif
sched_note_heap(NOTE_HEAP_FREE, heap, oldmem, oldsize);
sched_note_heap(NOTE_HEAP_ALLOC, heap, newmem, newsize);
sched_note_heap(NOTE_HEAP_FREE, heap, oldmem, oldsize,
heap->mm_curused - newsize);
sched_note_heap(NOTE_HEAP_ALLOC, heap, newmem, newsize,
heap->mm_curused);
}
#if CONFIG_MM_FREE_DELAYCOUNT_MAX > 0
@@ -1443,7 +1448,7 @@ void mm_uninitialize(FAR struct mm_heap_s *heap)
kasan_unregister(heap->mm_heapstart[i]);
sched_note_heap(NOTE_HEAP_REMOVE, heap, heap->mm_heapstart[i],
(uintptr_t)heap->mm_heapend[i] -
(uintptr_t)heap->mm_heapstart[i]);
(uintptr_t)heap->mm_heapstart[i], heap->mm_curused);
}
#if defined(CONFIG_FS_PROCFS) && !defined(CONFIG_FS_PROCFS_EXCLUDE_MEMINFO)