* @brief Allocate block of memory. * * @param n - Memory size in byte * @param exec - True: memory can run executable code; False: memory can R/W data * * @return Memory pointer if success or NULL if failed. */
| 27 | * @return Memory pointer if success or NULL if failed. |
| 28 | */ |
| 29 | void *esp_elf_malloc(uint32_t n, bool exec) |
| 30 | { |
| 31 | uint32_t caps; |
| 32 | |
| 33 | #if CONFIG_ELF_LOADER_BUS_ADDRESS_MIRROR |
| 34 | #ifdef CONFIG_ELF_LOADER_LOAD_PSRAM |
| 35 | caps = MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT; |
| 36 | #else |
| 37 | caps = exec ? MALLOC_CAP_EXEC : MALLOC_CAP_8BIT; |
| 38 | #endif |
| 39 | #else |
| 40 | #ifdef CONFIG_ELF_LOADER_LOAD_PSRAM |
| 41 | caps = MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT; |
| 42 | #else |
| 43 | caps = MALLOC_CAP_8BIT; |
| 44 | #endif |
| 45 | #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0) |
| 46 | caps |= MALLOC_CAP_CACHE_ALIGNED; |
| 47 | #endif |
| 48 | #endif |
| 49 | |
| 50 | return heap_caps_malloc(n, caps); |
| 51 | } |
| 52 | |
| 53 | /** |
| 54 | * @brief Free block of memory. |
no outgoing calls
no test coverage detected