newlib lock support: uses a separate mutex and recursive mutex.
In trying to save memory had incorrectly shared a non-recursive mutex with recursive mutex uses. Initialize one non-recursive mutex too.
This commit is contained in:
parent
49343e9c68
commit
dccf3fc7b9
1 changed files with 12 additions and 12 deletions
|
@ -246,11 +246,10 @@ extern _lock_t __sinit_recursive_mutex;
|
||||||
|
|
||||||
void init_newlib_locks()
|
void init_newlib_locks()
|
||||||
{
|
{
|
||||||
_lock_init(&__arc4random_mutex);
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/* Separate mutex for each lock.
|
/* Used a separate mutex for each lock.
|
||||||
* Each mutex uses about 96 bytes which adds up. */
|
* Each mutex uses about 96 bytes which adds up. */
|
||||||
|
_lock_init(&__arc4random_mutex);
|
||||||
_lock_init(&__at_quick_exit_mutex);
|
_lock_init(&__at_quick_exit_mutex);
|
||||||
//_lock_init(&__dd_hash_mutex);
|
//_lock_init(&__dd_hash_mutex);
|
||||||
_lock_init(&__tz_mutex);
|
_lock_init(&__tz_mutex);
|
||||||
|
@ -261,19 +260,20 @@ void init_newlib_locks()
|
||||||
_lock_init_recursive(&__sfp_recursive_mutex);
|
_lock_init_recursive(&__sfp_recursive_mutex);
|
||||||
_lock_init_recursive(&__sinit_recursive_mutex);
|
_lock_init_recursive(&__sinit_recursive_mutex);
|
||||||
#else
|
#else
|
||||||
/* Reuse the same mutex for all these, reducing memory usage. Newlib
|
/* Reuse one mutex and one recursive mutex for this set, reducing memory
|
||||||
* will still allocate other locks dynamically and some of those need
|
* usage. Newlib will still allocate other locks dynamically and some of
|
||||||
* to be separate such as the file lock where a thread might block with
|
* those need to be separate such as the file lock where a thread might
|
||||||
* them held. */
|
* block with them held. */
|
||||||
|
_lock_init(&__arc4random_mutex);
|
||||||
__at_quick_exit_mutex = __arc4random_mutex;
|
__at_quick_exit_mutex = __arc4random_mutex;
|
||||||
//__dd_hash_mutex = __arc4random_mutex;
|
//__dd_hash_mutex = __arc4random_mutex;
|
||||||
__tz_mutex = __arc4random_mutex;
|
__tz_mutex = __arc4random_mutex;
|
||||||
|
|
||||||
__atexit_recursive_mutex = __arc4random_mutex;
|
_lock_init_recursive(&__atexit_recursive_mutex);
|
||||||
__env_recursive_mutex = __arc4random_mutex;
|
__env_recursive_mutex = __atexit_recursive_mutex;
|
||||||
__malloc_recursive_mutex = __arc4random_mutex;
|
__malloc_recursive_mutex = __atexit_recursive_mutex;
|
||||||
__sfp_recursive_mutex = __arc4random_mutex;
|
__sfp_recursive_mutex = __atexit_recursive_mutex;
|
||||||
__sinit_recursive_mutex = __arc4random_mutex;
|
__sinit_recursive_mutex = __atexit_recursive_mutex;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
locks_initialized = 1;
|
locks_initialized = 1;
|
||||||
|
|
Loading…
Reference in a new issue