ARM C libraries and reentrant functions
A reentrant function does not hold static data over successive calls, and does not return a pointer to static data.
For this type of function, the caller provides all the data that the function requires, such as pointers to any workspace. This means that multiple concurrent invocations of the function do not interfere with each other.
A reentrant function must not call non-reentrant functions.