diff --git a/radio/src/syscalls.c b/radio/src/syscalls.c index 369566877..c9de63def 100644 --- a/radio/src/syscalls.c +++ b/radio/src/syscalls.c @@ -45,6 +45,24 @@ extern caddr_t _sbrk(int nbytes) } } +#if defined(THREADSAFE_MALLOC) && !defined(BOOT) + +#include +#include + +void __malloc_lock(struct _reent *r) +{ + (void)(r); + vTaskSuspendAll(); +}; + +void __malloc_unlock(struct _reent *r) +{ + (void)(r); + (void)xTaskResumeAll(); +}; +#endif + #if !defined(SEMIHOSTING) extern int _gettimeofday(void *p1, void *p2) { diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index a06854d91..91e2697ed 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -325,6 +325,9 @@ if (MULTIMODULE) ) endif() +# Make malloc() thread-safe +add_definitions(-DTHREADSAFE_MALLOC) + set(STM32LIB_SRC STM32F4xx_StdPeriph_Driver/src/stm32f4xx_sdio.c STM32F4xx_StdPeriph_Driver/src/stm32f4xx_fmc.c diff --git a/radio/src/targets/nv14/CMakeLists.txt b/radio/src/targets/nv14/CMakeLists.txt index db80a138c..f3b12d83d 100644 --- a/radio/src/targets/nv14/CMakeLists.txt +++ b/radio/src/targets/nv14/CMakeLists.txt @@ -161,6 +161,9 @@ if (MULTIMODULE) ) endif() +# Make malloc() thread-safe +add_definitions(-DTHREADSAFE_MALLOC) + set(STM32LIB_SRC STM32F4xx_StdPeriph_Driver/src/stm32f4xx_sdio.c STM32F4xx_StdPeriph_Driver/src/stm32f4xx_fmc.c