Commit Graph

66 Commits

Author SHA1 Message Date
Jeroen Domburg
a1ba660b4a change(system): heap_caps_alloc returns aligned memory if caps indicate a need for it
The implicit promise of heap_alloc_caps() and friends is that the memory it
returns is fit for the purpose as requested in the caps field. Before
this commit, that did not happen; e.g. DMA-capable memory wass returned
from a correct region, but not aligned/sized to something the DMA subsystem
can handle.

This commit adds an API to the esp_mm component that is then used by the
heap component to adjust allocation alignment, caps and size dependent on
the hardware requirement of the requested allocation caps.
2024-05-27 12:41:18 +08:00
Guillaume Souchere
3f366d6e8b feat(heap-trace): Add a pause state to the heap tracing
This commit adds a feature to pause the heap tracing in the
sense that in this state, the heap tracing will no longer
record the new allocations but will continue to monitor
the free() in order to keep track of the status of the
allocations present in the list of records.

See https://github.com/espressif/esp-idf/issues/13803
2024-05-21 10:59:01 +02:00
Guillaume Souchere
bd0dbbe767 test(heap): Extend task tracking test with task handle check
Add a test to make sure that the task handles returned in the
task tracking information are valid task handles.

To verify that, feed the task name returned by pcTaskGetName()
using the task handle under test to xTaskGetHandle() and make
sure the task handle returned matches the one under test.
2024-04-10 11:23:07 +02:00
Kevin (Lao Kaiyao)
432864e917 Merge branch 'ci/enable_c5_mp_ci_jobs' into 'master'
ci(esp32c5mp): enable esp32c5 build on CI

See merge request espressif/esp-idf!29895
2024-04-08 12:16:16 +08:00
laokaiyao
65b1fd33d3 ci(esp32c5mp): disable the unsupported tests 2024-04-07 12:13:29 +08:00
Ivan Grokhotkov
64757e9fea
fix(check_callgraph): rework --ignore-refs to be more generic 2024-03-26 17:05:39 +01:00
Guillaume Souchere
39f789df93 feat(esp_rom): patch heap walker to the ROM implementation
modify existing patch of TLSF rom and add multi heap patch
to add the walker feature to the ROM implementation of the
heap component.
2024-03-21 07:41:04 +01:00
Guillaume Souchere
34fb83ffbc feat(heap): Add return value to walker callback
This return value is used by the tlsf_walk_pool
function to be notified of the need to interrupt
the ongoing traversal of the currently traversed
heap.
2024-03-20 08:33:48 +01:00
Guillaume Souchere
5cc69ce12b feat(heap): Add walker to the heap component
Introduce new APIs in essp_heap_caps.h:
- heap_caps_walk()
- heap_caps_walk_all()

Those functions are triggering a callback for all blocks
(allocated or free) of memory present in heaps meeting
the set of capabilities passed as parameter (or all heaps
for heap_caps_walk_all() function)

test_walker.c added to test the new functionality in
test_apps/heap_test/
2024-03-20 08:33:48 +01:00
Guillaume Souchere
bb9d5a8d51 feat(heap): Allow tracking of minimum free size for a given time frame
Implement a function to start tracking the minimum free size from the
moment the function is called.
Implement a function to stop tracking the minimum free size and restore
the minimum free size value calculated since startup.
Implement the tests related to this new feature.
2023-12-21 08:07:01 +01:00
Guillaume Souchere
e8f046358d fix(heap): Add missing test for heap task tracking config
- Add sdkconfig.ci.task_tracking that runs generic tests
with heap task tracking enabled.
- Add task_tracking.c that includes a test checking that
a created task that allocates memory is added to the list
of task tracked by the heap task tracking feature.
2023-11-09 09:20:45 +01:00
Guillaume Souchere
93d4b0b38c fix(heap): Patch tlsf_check_pool in ROM heap
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.
2023-11-01 09:47:41 +01:00
Marius Vikhammer
20b6d92b91 Merge branch 'ci/reduce_heap_tests' into 'master'
ci(heap): reduce the number of test apps built

See merge request espressif/esp-idf!26643
2023-10-25 09:23:18 +08:00
Marius Vikhammer
7e8181b976 ci(heap): reduce the number of test apps built 2023-10-24 12:38:56 +08:00
Guillaume Souchere
787a4ad6c9 Merge branch 'feat/use-singly-linked-hashmap' into 'master'
feat(heap): update hash map to use singly linked list

Closes IDFGH-9846

See merge request espressif/esp-idf!26441
2023-10-23 13:12:37 +08:00
Guillaume Souchere
07165308f6 feat(heap): update hash map to use singly linked list
Previously, the hash map was a doubly linked list but was never
using the characteristics of it.

This commit switches the hash map to a singly linked list instead

This commit also fixes memory leak in heap trace tests by setting
hashmap size to 10 for the tests (instead of the default value of 250)

See https://github.com/espressif/esp-idf/issues/11173
2023-10-19 14:50:05 +02:00
Guillaume Souchere
84c5d3e52f fix(heap): Fixed integrity check on used blocks by the tlsf component
This commit updates the tlsf submodule to include the modification made in the component
aiming to perform integrity check on all blocks (not only the free ones).
Added test to test the fix in test_apps/heap_tests.

Fixes https://github.com/espressif/esp-idf/issues/12231
2023-10-16 12:29:38 +02:00
Chen Yudong
2e11919f70 fix(ci): change build-test-rules files folder 2023-09-20 19:17:06 +08:00
Armando
7dbd3f6909 feat(ci): Enable p4 example, test_apps and unit tests CI build 2023-08-24 12:51:19 +08:00
Marius Vikhammer
b70aaa16f1 Merge branch 'contrib/github_pr_11509' into 'master'
[Heap Trace Standalone] do not allocate memory until init is called (GitHub PR)

Closes IDFGH-10247

See merge request espressif/esp-idf!23958
2023-07-10 19:59:00 +08:00
morris
f0c07f82b5 fix(test): check call graph for hal component 2023-07-05 09:09:01 +08:00
Zim Kalinowski
2b4137d212 heap: enable qemu tests 2023-06-20 16:03:41 +02:00
Konstantin Kondrashov
c350c3c504 Merge branch 'feature/cleanup_wrong_log_use' into 'master'
all: Removes unnecessary newline character in logs

Closes IDFGH-10197

See merge request espressif/esp-idf!24131
2023-06-15 21:49:49 +08:00
Marius Vikhammer
6d11c37ff1 core-system: trim build components for core-system test apps 2023-06-13 09:14:42 +08:00
KonstantinKondrashov
e72061695e all: Removes unnecessary newline character in logs
Closes https://github.com/espressif/esp-idf/issues/11465
2023-06-09 03:31:21 +08:00
Chip Weinberger
fc1e8b0365 [Heap Trace Standalone] do not allocate memory until init is called 2023-05-29 00:00:15 -07:00
Marius Vikhammer
a300b3eb81 ci: fix invalid kconfig options in system test apps 2023-05-09 11:27:55 +08:00
Guillaume Souchere
6ce1ccd964 heap: Add trace configuration to allow hash map placement in external RAM bss section when possible
- Remove the size limit for the hash_map array from the CONFIG_HEAP_TRACE_HASH_MAP_SIZE
- Add test case for heap tracing using hashmap
- Update heap_debug.rst to document the newly added configurations in the heap component

Closes https://github.com/espressif/esp-idf/issues/11172
2023-04-19 10:30:59 +02:00
Guillaume Souchere
48932ce910 Merge branch 'feature/heap-in-flash' into 'master'
heap: Add a configuration that places all the heap component in flash

Closes IDF-7143 and IDF-2853

See merge request espressif/esp-idf!23050
2023-04-13 14:38:15 +08:00
Guillaume Souchere
110aac240d heap: Add a configuration that places all the heap component and related functionalities in flash when enabled
Add test configuration to run all tests with heap component in the flash.
Add reference to this new configuration in performance section of the documentation.
2023-04-12 08:11:24 +02:00
Anton Maklakov
a1584750c8 Merge branch 'fix/heap-test-h2' into 'master'
heap: remove exclusion of esp32h2 as a target for heap pytest

Closes IDF-6880

See merge request espressif/esp-idf!23075
2023-04-12 13:43:29 +08:00
Jakob Hasse
dac64725af esp_system, heap: increase host test timeout for CI 2023-04-06 10:23:44 +08:00
Guillaume Souchere
c42c93758f heap: remove exclusion of esp32h2 as a target for no/light/comprehensive_poisoning tests 2023-04-05 09:19:39 +02:00
Marius Vikhammer
f627506f6b ci: update driver tests to use run_all_single_board_cases() 2023-03-28 17:05:50 +08:00
Marius Vikhammer
914bb81b95 ci: move linux host tests to test app folder 2023-03-27 17:41:44 +08:00
Guillaume Souchere
2f982107dc heap: Wrap the function hook feature under a configuration
also update heap_debug.rst and mem_alloc.rst to provide information about the feature
2023-03-23 04:50:49 +00:00
Guillaume Souchere
5a1f0cd63c heap: Make weak declaration for the alloc and free callbacks
- Fix "test get allocated size"
- Add tests for the free / alloc hooks
- Call alloc function hook on malloc/realloc/calloc base functions
- Add caps parameter to the allocation hook function
2023-03-23 04:50:49 +00:00
Darian Leung
4069a62629 freertos(IDF): Remove usage of xPortGetFreeHeapSize() outside FreeRTOS
After heap_idf.c has been added (where the FreeRTOS heap is a subset of the
ESP-IDF heap), xPortGetFreeHeapSize() was updated to only returns the free
size of the FreeRTOS heap and not the entire ESP-IDF heap.

This commit replaces calls of xPortGetFreeHeapSize() with
esp_get_free_heap_size() in places outside of FreeRTOS.
2023-03-07 02:02:28 +08:00
Alexey Lapshin
4b54c49203 heap: fix gcc-12 compile errors 2023-02-22 05:33:03 +00:00
Guillaume Souchere
b1f9d7a8ee Merge branch 'feature/use-linked-list-for-heap-trace-records' into 'master'
heap: fix Leaks perf on large records by using doubly linked list

Closes IDFGH-9121 and IDF-1244

See merge request espressif/esp-idf!22009
2023-02-15 15:14:19 +08:00
Cao Sen Miao
fd3e0b0b18 esp32h2(ci): enable target test 2023-02-15 10:20:43 +08:00
Guillaume Souchere
2cf9236f6c heap trace standalone: Fix initialization of the unused linked list, update tests
- Call TAILQ_INSERT_TAIL in linked_list_setup to add unused records from the tail of the list
- Fix test "heap trace leak check" to expect that after a free, the record is zeroed instead of checking that
  the whole list of records is moved by one index in the array.
- Use esp_rom_printf() under lock instead of printf() since it does not rely on interrupts.
2023-02-14 09:48:14 +01:00
Marius Vikhammer
25abc7f6d8 ci: update idf-core related tests for C6 2023-02-13 13:01:57 +08:00
Guillaume Souchere
ba1d7f8d1c heap: Fix erroneous value returned by heap_caps_get_allocated_size() when poisoning is enabled
When light (or comprehensive) poisoning is enabled, the size requested by the user for allocation
is extended by a few bytes to store the canary header and footer. heap_caps_get_allocated_size() should
return the original size asked by the user (without the additional canary bytes).

test_malloc.c extended with a new test assuring that  heap_caps_get_allocated_size() returns the proper size
regardless of the degree of poisoning.
2023-02-01 10:04:38 +01:00
Guillaume Souchere
6382f28998 heap: Modify the memory type of the memory used as startup stack when memory protection is enabled
If memory protection is enabled on esp32c3 and esp32s3, we don't want to the heap component to see
the startup stack memory as D/IRAM but as DRAM only. Introduce a new type to make this possible in
the same fashion the regular D/IRAM regions are handled.
2023-01-26 10:52:34 +01:00
Guillaume Souchere
11f99ef649 heap: Add memory protection activation test
Check that when trying to allocate in IRAM with the system memory protection enabled,
null pointer is returned, or that an address in IRAM is returned if the memory protection
is disabled.
2023-01-25 07:20:57 +01:00
Cao Sen Miao
94120b82c2 esp32h2: add build test 2023-01-17 10:29:04 +08:00
Guillaume Souchere
b5bacffbd3 esp_hw_support: allow writing in IRAM when CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT is not set for esp32C2
when CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT is not set, the PMP rule for esp32c2 shoud allow write access.
Fix esp_cpu_configure_region_protection() in cpu.c accordingly.
2023-01-02 08:41:16 +01:00
Guillaume Souchere
a218139d25 heap: RE-enable ESP32C2 test in test_apps 2023-01-02 08:40:59 +01:00
Guillaume Souchere
a74ae7fba7 Merge branch 'feature/heap-trace-improve-spi-ram-support' into 'master'
heap_trace: improvements to formatting, code, comments of heap trace standalone

Closes IDFGH-8699

See merge request espressif/esp-idf!21506
2022-12-28 15:07:30 +08:00