diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2010-04-06 20:20:36 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2010-04-06 20:20:36 +0000 |
commit | 5f46e4094fb4d3399125a1e8651646913718b46f (patch) | |
tree | 904f6460ec18922cb35cc306d38fb46b3e221089 /newlib/libc | |
parent | 385b0add19ef049e4b33acf86e32c1640a87f39d (diff) | |
download | cygnal-5f46e4094fb4d3399125a1e8651646913718b46f.tar.gz cygnal-5f46e4094fb4d3399125a1e8651646913718b46f.tar.bz2 cygnal-5f46e4094fb4d3399125a1e8651646913718b46f.zip |
2010-04-06 Dave Korn <dave.korn.cygwin@googlemail.com>
* libc/stdlib/__atexit.c (__atexit_lock): Initialise as recursive
rather than non-recursive lock type.
(__register_exitproc): Use recursive locking APIs on it.
* libc/stdlib/__call_atexit.c (__call_exitprocs): Likewise.
Diffstat (limited to 'newlib/libc')
-rw-r--r-- | newlib/libc/stdlib/__atexit.c | 8 | ||||
-rw-r--r-- | newlib/libc/stdlib/__call_atexit.c | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/newlib/libc/stdlib/__atexit.c b/newlib/libc/stdlib/__atexit.c index b68d80f9c..a26d2eccc 100644 --- a/newlib/libc/stdlib/__atexit.c +++ b/newlib/libc/stdlib/__atexit.c @@ -10,7 +10,7 @@ /* Make this a weak reference to avoid pulling in malloc. */ void * malloc(size_t) _ATTRIBUTE((__weak__)); -__LOCK_INIT(, __atexit_lock); +__LOCK_INIT_RECURSIVE(, __atexit_lock); /* * Register a function to be performed at exit or on shared library unload. @@ -28,7 +28,7 @@ _DEFUN (__register_exitproc, register struct _atexit *p; #ifndef __SINGLE_THREAD__ - __lock_acquire(__atexit_lock); + __lock_acquire_recursive(__atexit_lock); #endif p = _GLOBAL_REENT->_atexit; @@ -48,7 +48,7 @@ _DEFUN (__register_exitproc, if (p == NULL) { #ifndef __SINGLE_THREAD__ - __lock_release(__atexit_lock); + __lock_release_recursive(__atexit_lock); #endif return -1; } @@ -93,7 +93,7 @@ _DEFUN (__register_exitproc, } p->_fns[p->_ind++] = fn; #ifndef __SINGLE_THREAD__ - __lock_release(__atexit_lock); + __lock_release_recursive(__atexit_lock); #endif return 0; } diff --git a/newlib/libc/stdlib/__call_atexit.c b/newlib/libc/stdlib/__call_atexit.c index 5365f32e9..813c34da6 100644 --- a/newlib/libc/stdlib/__call_atexit.c +++ b/newlib/libc/stdlib/__call_atexit.c @@ -33,7 +33,7 @@ _DEFUN (__call_exitprocs, (code, d), #ifndef __SINGLE_THREAD__ - __lock_acquire(__atexit_lock); + __lock_acquire_recursive(__atexit_lock); #endif restart: @@ -115,7 +115,7 @@ _DEFUN (__call_exitprocs, (code, d), #endif } #ifndef __SINGLE_THREAD__ - __lock_release(__atexit_lock); + __lock_release_recursive(__atexit_lock); #endif } |