mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
d8a8149abd
The integrity_walker now calls the integrity check hook to control free AND used blocks of memory in the TLSF pool. This integrity walker function is called from tlsf_check_pool. This commit creates a patch of integrity_walker function to update the outdated implementation in the ROM.
97 lines
3.5 KiB
Plaintext
97 lines
3.5 KiB
Plaintext
menu "Heap memory debugging"
|
|
|
|
choice HEAP_CORRUPTION_DETECTION
|
|
prompt "Heap corruption detection"
|
|
default HEAP_POISONING_DISABLED
|
|
help
|
|
Enable heap poisoning features to detect heap corruption caused by out-of-bounds access to heap memory.
|
|
|
|
See the "Heap Memory Debugging" page of the IDF documentation
|
|
for a description of each level of heap corruption detection.
|
|
|
|
config HEAP_POISONING_DISABLED
|
|
bool "Basic (no poisoning)"
|
|
config HEAP_POISONING_LIGHT
|
|
bool "Light impact"
|
|
config HEAP_POISONING_COMPREHENSIVE
|
|
bool "Comprehensive"
|
|
endchoice
|
|
|
|
choice HEAP_TRACING_DEST
|
|
bool "Heap tracing"
|
|
default HEAP_TRACING_OFF
|
|
help
|
|
Enables the heap tracing API defined in esp_heap_trace.h.
|
|
|
|
This function causes a moderate increase in IRAM code side and a minor increase in heap function
|
|
(malloc/free/realloc) CPU overhead, even when the tracing feature is not used.
|
|
So it's best to keep it disabled unless tracing is being used.
|
|
|
|
config HEAP_TRACING_OFF
|
|
bool "Disabled"
|
|
config HEAP_TRACING_STANDALONE
|
|
bool "Standalone"
|
|
select HEAP_TRACING
|
|
config HEAP_TRACING_TOHOST
|
|
bool "Host-based"
|
|
select HEAP_TRACING
|
|
endchoice
|
|
|
|
config HEAP_TRACING
|
|
bool
|
|
default F
|
|
help
|
|
Enables/disables heap tracing API.
|
|
|
|
config HEAP_TRACING_STACK_DEPTH
|
|
int "Heap tracing stack depth"
|
|
range 0 0 if IDF_TARGET_ARCH_RISCV # Disabled for RISC-V due to `__builtin_return_address` limitation
|
|
default 0 if IDF_TARGET_ARCH_RISCV
|
|
range 0 10
|
|
default 2
|
|
depends on HEAP_TRACING
|
|
help
|
|
Number of stack frames to save when tracing heap operation callers.
|
|
|
|
More stack frames uses more memory in the heap trace buffer (and slows down allocation), but
|
|
can provide useful information.
|
|
|
|
config HEAP_TASK_TRACKING
|
|
bool "Enable heap task tracking"
|
|
depends on !HEAP_POISONING_DISABLED
|
|
help
|
|
Enables tracking the task responsible for each heap allocation.
|
|
|
|
This function depends on heap poisoning being enabled and adds four more bytes of overhead for each block
|
|
allocated.
|
|
|
|
config HEAP_ABORT_WHEN_ALLOCATION_FAILS
|
|
bool "Abort if memory allocation fails"
|
|
default n
|
|
help
|
|
When enabled, if a memory allocation operation fails it will cause a system abort.
|
|
|
|
config HEAP_TLSF_USE_ROM_IMPL
|
|
bool "Use ROM implementation of heap tlsf library"
|
|
depends on ESP_ROM_HAS_HEAP_TLSF
|
|
default y
|
|
help
|
|
Enable this flag to use heap functions from ROM instead of ESP-IDF.
|
|
|
|
If keeping this as "n" in your project, you will have less free IRAM.
|
|
If making this as "y" in your project, you will increase free IRAM,
|
|
but you will lose the possibility to debug this module, and some new
|
|
features will be added and bugs will be fixed in the IDF source
|
|
but cannot be synced to ROM.
|
|
|
|
config HEAP_TLSF_CHECK_PATCH
|
|
bool "Patch the tlsf_check_pool() for ROM HEAP TLSF implementation"
|
|
depends on IDF_TARGET_ESP32C2 && ESP32C2_REV_MIN_FULL < 200
|
|
default y
|
|
help
|
|
ROM does not contain the patch of tlsf_check_pool() allowing perform
|
|
the integrity checking on used blocks. The patch to allow such check
|
|
needs to be applied.
|
|
|
|
endmenu
|