newlib functions are reentrant but it does not mean they are thread-safe. In multprocessing system, _impure_ptr is used to give thread-safe feature. However, in multiprocessor systems, changing _impure_ptr for each taks is not valid anymore because multiple tasks may have been executed simultaneously.