From 6684489f018e95982f70bc57deb1a5a6be04a6fb Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sun, 3 Oct 2021 14:52:11 +0200 Subject: [PATCH] [colorlcd] make malloc() thread-safe --- radio/src/syscalls.c | 18 ++++++++++++++++++ radio/src/targets/horus/CMakeLists.txt | 3 +++ radio/src/targets/nv14/CMakeLists.txt | 3 +++ 3 files changed, 24 insertions(+) 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