Only define static locks in multithreaded mode

Newlib build system defines __SINGLE_THREAD__ to allow concurrency code
to be only compiled when newlib is configured for multithread. One such
example are locks which become useless in single thread mode. Although
most static locks are indeed guarded by !defined(__SINGLE_THREAD__),
some are not.

This commit adds these missing guards to __dd_hash_mutex,
__atexit_recursive_mutex, __at_quick_exit_mutex and __arc4random_mutex.
It also makes sure locking macros in lock.h are noop in single thread
mode.
This commit is contained in:
Thomas Preud'homme
2017-01-30 11:23:00 +00:00
committed by Jeff Johnston
parent af272aca59
commit fa55c610fa
5 changed files with 28 additions and 6 deletions

View File

@ -180,16 +180,24 @@ arc4random(void)
{
uint32_t val;
#ifndef __SINGLE_THREAD__
_ARC4_LOCK();
#endif
_rs_random_u32(&val);
#ifndef __SINGLE_THREAD__
_ARC4_UNLOCK();
#endif
return val;
}
void
arc4random_buf(void *buf, size_t n)
{
#ifndef __SINGLE_THREAD__
_ARC4_LOCK();
#endif
_rs_random_buf(buf, n);
#ifndef __SINGLE_THREAD__
_ARC4_UNLOCK();
#endif
}