mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
fix(ble): unified ble memory allocation method
(cherry picked from commit 8e4cc79a27
)
Co-authored-by: zwl <zhaoweiliang@espressif.com>
This commit is contained in:
parent
1f68652c46
commit
17c29f773b
@ -21,6 +21,7 @@
|
|||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
#include "soc/soc_caps.h"
|
#include "soc/soc_caps.h"
|
||||||
#include "esp_bt.h"
|
#include "esp_bt.h"
|
||||||
|
#include "bt_osi_mem.h"
|
||||||
|
|
||||||
portMUX_TYPE ble_port_mutex = portMUX_INITIALIZER_UNLOCKED;
|
portMUX_TYPE ble_port_mutex = portMUX_INITIALIZER_UNLOCKED;
|
||||||
|
|
||||||
@ -95,7 +96,7 @@ IRAM_ATTR npl_freertos_event_init(struct ble_npl_event *ev, ble_npl_event_fn *fn
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if(!ev->event) {
|
if(!ev->event) {
|
||||||
ev->event = malloc(sizeof(struct ble_npl_event_freertos));
|
ev->event = bt_osi_mem_malloc_internal(sizeof(struct ble_npl_event_freertos));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
event = (struct ble_npl_event_freertos *)ev->event;
|
event = (struct ble_npl_event_freertos *)ev->event;
|
||||||
@ -113,7 +114,7 @@ IRAM_ATTR npl_freertos_event_deinit(struct ble_npl_event *ev)
|
|||||||
#if OS_MEM_ALLOC
|
#if OS_MEM_ALLOC
|
||||||
os_memblock_put(&ble_freertos_ev_pool,ev->event);
|
os_memblock_put(&ble_freertos_ev_pool,ev->event);
|
||||||
#else
|
#else
|
||||||
free(ev->event);
|
bt_osi_mem_free(ev->event);
|
||||||
#endif
|
#endif
|
||||||
ev->event = NULL;
|
ev->event = NULL;
|
||||||
}
|
}
|
||||||
@ -144,7 +145,7 @@ npl_freertos_eventq_init(struct ble_npl_eventq *evq)
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if(!evq->eventq) {
|
if(!evq->eventq) {
|
||||||
evq->eventq = malloc(sizeof(struct ble_npl_eventq_freertos));
|
evq->eventq = bt_osi_mem_malloc_internal(sizeof(struct ble_npl_eventq_freertos));
|
||||||
eventq = (struct ble_npl_eventq_freertos*)evq->eventq;
|
eventq = (struct ble_npl_eventq_freertos*)evq->eventq;
|
||||||
BLE_LL_ASSERT(eventq);
|
BLE_LL_ASSERT(eventq);
|
||||||
memset(eventq, 0, sizeof(*eventq));
|
memset(eventq, 0, sizeof(*eventq));
|
||||||
@ -167,7 +168,7 @@ npl_freertos_eventq_deinit(struct ble_npl_eventq *evq)
|
|||||||
#if OS_MEM_ALLOC
|
#if OS_MEM_ALLOC
|
||||||
os_memblock_put(&ble_freertos_evq_pool,eventq);
|
os_memblock_put(&ble_freertos_evq_pool,eventq);
|
||||||
#else
|
#else
|
||||||
free((void *)eventq);
|
bt_osi_mem_free((void *)eventq);
|
||||||
#endif
|
#endif
|
||||||
evq->eventq = NULL;
|
evq->eventq = NULL;
|
||||||
}
|
}
|
||||||
@ -357,7 +358,7 @@ npl_freertos_mutex_init(struct ble_npl_mutex *mu)
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if(!mu->mutex) {
|
if(!mu->mutex) {
|
||||||
mu->mutex = malloc(sizeof(struct ble_npl_mutex_freertos));
|
mu->mutex = bt_osi_mem_malloc_internal(sizeof(struct ble_npl_mutex_freertos));
|
||||||
mutex = (struct ble_npl_mutex_freertos *)mu->mutex;
|
mutex = (struct ble_npl_mutex_freertos *)mu->mutex;
|
||||||
|
|
||||||
if (!mutex) {
|
if (!mutex) {
|
||||||
@ -388,7 +389,7 @@ npl_freertos_mutex_deinit(struct ble_npl_mutex *mu)
|
|||||||
#if OS_MEM_ALLOC
|
#if OS_MEM_ALLOC
|
||||||
os_memblock_put(&ble_freertos_mutex_pool,mutex);
|
os_memblock_put(&ble_freertos_mutex_pool,mutex);
|
||||||
#else
|
#else
|
||||||
free((void *)mutex);
|
bt_osi_mem_free((void *)mutex);
|
||||||
#endif
|
#endif
|
||||||
mu->mutex = NULL;
|
mu->mutex = NULL;
|
||||||
|
|
||||||
@ -494,7 +495,7 @@ npl_freertos_sem_init(struct ble_npl_sem *sem, uint16_t tokens)
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if(!sem->sem) {
|
if(!sem->sem) {
|
||||||
sem->sem = malloc(sizeof(struct ble_npl_sem_freertos));
|
sem->sem = bt_osi_mem_malloc_internal(sizeof(struct ble_npl_sem_freertos));
|
||||||
semaphore = (struct ble_npl_sem_freertos *)sem->sem;
|
semaphore = (struct ble_npl_sem_freertos *)sem->sem;
|
||||||
|
|
||||||
if (!semaphore) {
|
if (!semaphore) {
|
||||||
@ -525,7 +526,7 @@ npl_freertos_sem_deinit(struct ble_npl_sem *sem)
|
|||||||
#if OS_MEM_ALLOC
|
#if OS_MEM_ALLOC
|
||||||
os_memblock_put(&ble_freertos_sem_pool,semaphore);
|
os_memblock_put(&ble_freertos_sem_pool,semaphore);
|
||||||
#else
|
#else
|
||||||
free((void *)semaphore);
|
bt_osi_mem_free((void *)semaphore);
|
||||||
#endif
|
#endif
|
||||||
sem->sem = NULL;
|
sem->sem = NULL;
|
||||||
|
|
||||||
@ -684,7 +685,7 @@ npl_freertos_callout_init(struct ble_npl_callout *co, struct ble_npl_eventq *evq
|
|||||||
#else
|
#else
|
||||||
|
|
||||||
if(!co->co) {
|
if(!co->co) {
|
||||||
co->co = malloc(sizeof(struct ble_npl_callout_freertos));
|
co->co = bt_osi_mem_malloc_internal(sizeof(struct ble_npl_callout_freertos));
|
||||||
callout = (struct ble_npl_callout_freertos *)co->co;
|
callout = (struct ble_npl_callout_freertos *)co->co;
|
||||||
if (!callout) {
|
if (!callout) {
|
||||||
return -1;
|
return -1;
|
||||||
@ -704,7 +705,7 @@ npl_freertos_callout_init(struct ble_npl_callout *co, struct ble_npl_eventq *evq
|
|||||||
|
|
||||||
if (esp_timer_create(&create_args, &callout->handle) != ESP_OK) {
|
if (esp_timer_create(&create_args, &callout->handle) != ESP_OK) {
|
||||||
ble_npl_event_deinit(&callout->ev);
|
ble_npl_event_deinit(&callout->ev);
|
||||||
free((void *)callout);
|
bt_osi_mem_free((void *)callout);
|
||||||
co->co = NULL;
|
co->co = NULL;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -713,7 +714,7 @@ npl_freertos_callout_init(struct ble_npl_callout *co, struct ble_npl_eventq *evq
|
|||||||
|
|
||||||
if (!callout->handle) {
|
if (!callout->handle) {
|
||||||
ble_npl_event_deinit(&callout->ev);
|
ble_npl_event_deinit(&callout->ev);
|
||||||
free((void *)callout);
|
bt_osi_mem_free((void *)callout);
|
||||||
co->co = NULL;
|
co->co = NULL;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -761,7 +762,7 @@ npl_freertos_callout_deinit(struct ble_npl_callout *co)
|
|||||||
#if OS_MEM_ALLOC
|
#if OS_MEM_ALLOC
|
||||||
os_memblock_put(&ble_freertos_co_pool,callout);
|
os_memblock_put(&ble_freertos_co_pool,callout);
|
||||||
#else
|
#else
|
||||||
free((void *)callout);
|
bt_osi_mem_free((void *)callout);
|
||||||
#endif // OS_MEM_ALLOC
|
#endif // OS_MEM_ALLOC
|
||||||
co->co = NULL;
|
co->co = NULL;
|
||||||
memset(co, 0, sizeof(struct ble_npl_callout));
|
memset(co, 0, sizeof(struct ble_npl_callout));
|
||||||
@ -1089,7 +1090,7 @@ struct npl_funcs_t * npl_freertos_funcs_get(void)
|
|||||||
|
|
||||||
void npl_freertos_funcs_init(void)
|
void npl_freertos_funcs_init(void)
|
||||||
{
|
{
|
||||||
npl_funcs = (struct npl_funcs_t *)malloc(sizeof(struct npl_funcs_t));
|
npl_funcs = (struct npl_funcs_t *)bt_osi_mem_malloc_internal(sizeof(struct npl_funcs_t));
|
||||||
if(!npl_funcs) {
|
if(!npl_funcs) {
|
||||||
printf("npl funcs init failed\n");
|
printf("npl funcs init failed\n");
|
||||||
assert(0);
|
assert(0);
|
||||||
@ -1123,7 +1124,7 @@ int npl_freertos_mempool_init(void)
|
|||||||
ble_freertos_total_event_cnt = ble_total_evt_count;
|
ble_freertos_total_event_cnt = ble_total_evt_count;
|
||||||
|
|
||||||
if (ble_total_evt_count) {
|
if (ble_total_evt_count) {
|
||||||
ble_freertos_ev_buf = malloc(OS_MEMPOOL_SIZE(ble_total_evt_count,
|
ble_freertos_ev_buf = bt_osi_mem_malloc_internal(OS_MEMPOOL_SIZE(ble_total_evt_count,
|
||||||
sizeof (struct ble_npl_event_freertos)) *
|
sizeof (struct ble_npl_event_freertos)) *
|
||||||
sizeof(os_membuf_t));
|
sizeof(os_membuf_t));
|
||||||
if (!ble_freertos_ev_buf) {
|
if (!ble_freertos_ev_buf) {
|
||||||
@ -1138,7 +1139,7 @@ int npl_freertos_mempool_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ble_total_evtq_count) {
|
if (ble_total_evtq_count) {
|
||||||
ble_freertos_evq_buf = malloc(OS_MEMPOOL_SIZE(ble_total_evtq_count,
|
ble_freertos_evq_buf = bt_osi_mem_malloc_internal(OS_MEMPOOL_SIZE(ble_total_evtq_count,
|
||||||
sizeof (struct ble_npl_eventq_freertos)) *
|
sizeof (struct ble_npl_eventq_freertos)) *
|
||||||
sizeof(os_membuf_t));
|
sizeof(os_membuf_t));
|
||||||
if (!ble_freertos_evq_buf) {
|
if (!ble_freertos_evq_buf) {
|
||||||
@ -1153,7 +1154,7 @@ int npl_freertos_mempool_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ble_total_co_count) {
|
if (ble_total_co_count) {
|
||||||
ble_freertos_co_buf = malloc(OS_MEMPOOL_SIZE(ble_total_co_count,
|
ble_freertos_co_buf = bt_osi_mem_malloc_internal(OS_MEMPOOL_SIZE(ble_total_co_count,
|
||||||
sizeof (struct ble_npl_callout_freertos)) *
|
sizeof (struct ble_npl_callout_freertos)) *
|
||||||
sizeof(os_membuf_t));
|
sizeof(os_membuf_t));
|
||||||
if (!ble_freertos_co_buf) {
|
if (!ble_freertos_co_buf) {
|
||||||
@ -1168,7 +1169,7 @@ int npl_freertos_mempool_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ble_total_sem_count) {
|
if (ble_total_sem_count) {
|
||||||
ble_freertos_sem_buf = malloc(OS_MEMPOOL_SIZE(ble_total_sem_count,
|
ble_freertos_sem_buf = bt_osi_mem_malloc_internal(OS_MEMPOOL_SIZE(ble_total_sem_count,
|
||||||
sizeof (struct ble_npl_sem_freertos)) *
|
sizeof (struct ble_npl_sem_freertos)) *
|
||||||
sizeof(os_membuf_t));
|
sizeof(os_membuf_t));
|
||||||
if (!ble_freertos_sem_buf) {
|
if (!ble_freertos_sem_buf) {
|
||||||
@ -1183,7 +1184,7 @@ int npl_freertos_mempool_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ble_total_mutex_count) {
|
if (ble_total_mutex_count) {
|
||||||
ble_freertos_mutex_buf = malloc(OS_MEMPOOL_SIZE(ble_total_mutex_count,
|
ble_freertos_mutex_buf = bt_osi_mem_malloc_internal(OS_MEMPOOL_SIZE(ble_total_mutex_count,
|
||||||
sizeof (struct ble_npl_mutex_freertos)) *
|
sizeof (struct ble_npl_mutex_freertos)) *
|
||||||
sizeof(os_membuf_t));
|
sizeof(os_membuf_t));
|
||||||
if (!ble_freertos_mutex_buf) {
|
if (!ble_freertos_mutex_buf) {
|
||||||
@ -1200,27 +1201,27 @@ int npl_freertos_mempool_init(void)
|
|||||||
return 0;
|
return 0;
|
||||||
_error:
|
_error:
|
||||||
if (ble_freertos_ev_buf) {
|
if (ble_freertos_ev_buf) {
|
||||||
free(ble_freertos_ev_buf);
|
bt_osi_mem_free(ble_freertos_ev_buf);
|
||||||
ble_freertos_ev_buf = NULL;
|
ble_freertos_ev_buf = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ble_freertos_evq_buf) {
|
if (ble_freertos_evq_buf) {
|
||||||
free(ble_freertos_evq_buf);
|
bt_osi_mem_free(ble_freertos_evq_buf);
|
||||||
ble_freertos_evq_buf = NULL;
|
ble_freertos_evq_buf = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ble_freertos_co_buf) {
|
if (ble_freertos_co_buf) {
|
||||||
free(ble_freertos_co_buf);
|
bt_osi_mem_free(ble_freertos_co_buf);
|
||||||
ble_freertos_co_buf = NULL;
|
ble_freertos_co_buf = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ble_freertos_sem_buf) {
|
if (ble_freertos_sem_buf) {
|
||||||
free(ble_freertos_sem_buf);
|
bt_osi_mem_free(ble_freertos_sem_buf);
|
||||||
ble_freertos_sem_buf = NULL;
|
ble_freertos_sem_buf = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ble_freertos_mutex_buf) {
|
if (ble_freertos_mutex_buf) {
|
||||||
free(ble_freertos_mutex_buf);
|
bt_osi_mem_free(ble_freertos_mutex_buf);
|
||||||
ble_freertos_mutex_buf = NULL;
|
ble_freertos_mutex_buf = NULL;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
@ -1229,23 +1230,23 @@ _error:
|
|||||||
void npl_freertos_mempool_deinit(void)
|
void npl_freertos_mempool_deinit(void)
|
||||||
{
|
{
|
||||||
if (ble_freertos_ev_buf) {
|
if (ble_freertos_ev_buf) {
|
||||||
free(ble_freertos_ev_buf);
|
bt_osi_mem_free(ble_freertos_ev_buf);
|
||||||
ble_freertos_ev_buf = NULL;
|
ble_freertos_ev_buf = NULL;
|
||||||
}
|
}
|
||||||
if (ble_freertos_evq_buf) {
|
if (ble_freertos_evq_buf) {
|
||||||
free(ble_freertos_evq_buf);
|
bt_osi_mem_free(ble_freertos_evq_buf);
|
||||||
ble_freertos_evq_buf = NULL;
|
ble_freertos_evq_buf = NULL;
|
||||||
}
|
}
|
||||||
if (ble_freertos_co_buf) {
|
if (ble_freertos_co_buf) {
|
||||||
free(ble_freertos_co_buf);
|
bt_osi_mem_free(ble_freertos_co_buf);
|
||||||
ble_freertos_co_buf = NULL;
|
ble_freertos_co_buf = NULL;
|
||||||
}
|
}
|
||||||
if (ble_freertos_sem_buf) {
|
if (ble_freertos_sem_buf) {
|
||||||
free(ble_freertos_sem_buf);
|
bt_osi_mem_free(ble_freertos_sem_buf);
|
||||||
ble_freertos_sem_buf = NULL;
|
ble_freertos_sem_buf = NULL;
|
||||||
}
|
}
|
||||||
if (ble_freertos_mutex_buf) {
|
if (ble_freertos_mutex_buf) {
|
||||||
free(ble_freertos_mutex_buf);
|
bt_osi_mem_free(ble_freertos_mutex_buf);
|
||||||
ble_freertos_mutex_buf = NULL;
|
ble_freertos_mutex_buf = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1253,7 +1254,7 @@ void npl_freertos_mempool_deinit(void)
|
|||||||
void npl_freertos_funcs_deinit(void)
|
void npl_freertos_funcs_deinit(void)
|
||||||
{
|
{
|
||||||
if (npl_funcs) {
|
if (npl_funcs) {
|
||||||
free(npl_funcs);
|
bt_osi_mem_free(npl_funcs);
|
||||||
}
|
}
|
||||||
npl_funcs = NULL;
|
npl_funcs = NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user