Merge branch 'bugfix/memory_issue_v5.4' into 'release/v5.4'

fix(nimble): Nimble Error logs in case of memory overflow/failure (v5.4)

See merge request espressif/esp-idf!34997
This commit is contained in:
Rahul Tank
2024-11-19 16:56:40 +08:00
2 changed files with 14 additions and 6 deletions

View File

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@ -7,18 +7,26 @@
#include "esp_attr.h" #include "esp_attr.h"
#include "esp_heap_caps.h" #include "esp_heap_caps.h"
#include "sdkconfig.h" #include "sdkconfig.h"
#include "esp_log.h"
#include <assert.h>
IRAM_ATTR void *bt_osi_mem_malloc(size_t size) IRAM_ATTR void *bt_osi_mem_malloc(size_t size)
{ {
void *mem = NULL;
#ifdef CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL #ifdef CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL
return heap_caps_malloc(size, MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT); mem = heap_caps_malloc(size, MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT);
#elif CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL #elif CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL
return heap_caps_malloc(size, MALLOC_CAP_SPIRAM|MALLOC_CAP_8BIT); mem = heap_caps_malloc(size, MALLOC_CAP_SPIRAM|MALLOC_CAP_8BIT);
#elif CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_IRAM_8BIT #elif CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_IRAM_8BIT
return heap_caps_malloc_prefer(size, 2, MALLOC_CAP_INTERNAL|MALLOC_CAP_IRAM_8BIT, MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT); mem = heap_caps_malloc_prefer(size, 2, MALLOC_CAP_INTERNAL|MALLOC_CAP_IRAM_8BIT, MALLOC_CAP_INTERNAL|MALLOC_CAP_8BIT);
#else #else
return malloc(size); mem = malloc(size);
#endif #endif
if(!mem){
ESP_LOGI("ESP_LOG_INFO","malloc failed (size %zu)",size);
assert(mem != NULL);
}
return mem;
} }
IRAM_ATTR void *bt_osi_mem_calloc(size_t n, size_t size) IRAM_ATTR void *bt_osi_mem_calloc(size_t n, size_t size)