For a threadsafe newlib C implementation, we need to define:
Code Block | ||||
---|---|---|---|---|
| ||||
#define configUSE_NEWLIB_REENTRANT 1 |
This will create a separate impure pointer for each task (handled by FreeRTOS).
Furthermore, we need to provide reentrant implementations for sbrk(), malloc_lock(), malloc_unlock(), env_lock(), env_unlock(). Broadly used is this independent implementation: newlib and FreeRTOS.
To use this, we have to exclude the libc_mem_support from the libc_support component.