version 1.158.2.1, 2012/11/20 03:00:46 |
version 1.158.2.2, 2013/02/25 00:28:03 |
Line 1546 _rtld_shared_enter(void) |
|
Line 1546 _rtld_shared_enter(void) |
|
*/ |
*/ |
if ((_rtld_mutex & RTLD_EXCLUSIVE_MASK) || |
if ((_rtld_mutex & RTLD_EXCLUSIVE_MASK) || |
_rtld_waiter_exclusive) |
_rtld_waiter_exclusive) |
_lwp_park(NULL, -1, __UNVOLATILE(&_rtld_mutex), NULL); |
_lwp_park(NULL, 0, __UNVOLATILE(&_rtld_mutex), NULL); |
/* Try to remove us from the waiter list. */ |
/* Try to remove us from the waiter list. */ |
atomic_cas_uint(&_rtld_waiter_shared, self, 0); |
atomic_cas_uint(&_rtld_waiter_shared, self, 0); |
if (waiter) |
if (waiter) |
Line 1602 _rtld_exclusive_enter(sigset_t *mask) |
|
Line 1602 _rtld_exclusive_enter(sigset_t *mask) |
|
_rtld_die(); |
_rtld_die(); |
} |
} |
if (cur) |
if (cur) |
_lwp_park(NULL, -1, __UNVOLATILE(&_rtld_mutex), NULL); |
_lwp_park(NULL, 0, __UNVOLATILE(&_rtld_mutex), NULL); |
atomic_cas_uint(&_rtld_waiter_exclusive, self, 0); |
atomic_cas_uint(&_rtld_waiter_exclusive, self, 0); |
if (waiter) |
if (waiter) |
_lwp_unpark(waiter, __UNVOLATILE(&_rtld_mutex)); |
_lwp_unpark(waiter, __UNVOLATILE(&_rtld_mutex)); |