To request heap statistics, a pointer to a heap structure is required. This is straightforward for a user-defined heap. However, such a pointer is not known for heaps created by other components or libraries, like libc. Therefore, it is not possible to calculate the total heap memory. The proposed solution is to use an array of pointers, which is filled in on every sys_heap_init() call. One can then iterate through it to sum up the total memory allocated for all heaps. The array size is configurable. The default array size is zero, which means the feature is disabled. Any other integer greater then zero defines the array size and enables the feature. A list of pointers instead of an array could be another approach, but it requeres a heap, which is not always available. Signed-off-by: Ivan Pankratov <ivan.pankratov@silabs.com>
15 lines
552 B
CMake
15 lines
552 B
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
zephyr_sources(
|
|
heap.c
|
|
)
|
|
|
|
zephyr_sources_ifdef(CONFIG_SYS_HEAP_RUNTIME_STATS heap_stats.c)
|
|
zephyr_sources_ifdef(CONFIG_SYS_HEAP_INFO heap_info.c)
|
|
zephyr_sources_ifdef(CONFIG_SYS_HEAP_VALIDATE heap_validate.c)
|
|
zephyr_sources_ifdef(CONFIG_SYS_HEAP_STRESS heap_stress.c)
|
|
zephyr_sources_ifdef(CONFIG_SHARED_MULTI_HEAP shared_multi_heap.c)
|
|
zephyr_sources_ifdef(CONFIG_MULTI_HEAP multi_heap.c)
|
|
zephyr_sources_ifdef(CONFIG_HEAP_LISTENER heap_listener.c)
|
|
zephyr_sources_ifdef(CONFIG_SYS_HEAP_ARRAY_SIZE heap_array.c)
|