{
pthread_mutex_unlock (&init_mutex);
}
-
-#ifdef DBUS_HAVE_STATIC_RECURSIVE_MUTEXES
-
-static pthread_mutex_t global_locks[] = {
- /* 0-4 */
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
- /* 5-9 */
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
- /* 10-11 */
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
-};
-
-_DBUS_STATIC_ASSERT (_DBUS_N_ELEMENTS (global_locks) == _DBUS_N_GLOBAL_LOCKS);
-
-dbus_bool_t
-_dbus_lock (DBusGlobalLock lock)
-{
- /* No initialization is needed. */
- _dbus_assert (lock >= 0);
- _dbus_assert (lock < _DBUS_N_GLOBAL_LOCKS);
-
- PTHREAD_CHECK ("pthread_mutex_lock",
- pthread_mutex_lock (&(global_locks[lock])));
- return TRUE;
-}
-
-void
-_dbus_unlock (DBusGlobalLock lock)
-{
- /* No initialization is needed. */
- _dbus_assert (lock >= 0);
- _dbus_assert (lock < _DBUS_N_GLOBAL_LOCKS);
-
- PTHREAD_CHECK ("pthread_mutex_unlock",
- pthread_mutex_unlock (&(global_locks[lock])));
-}
-
-#endif
* @{
*/
-/* glibc can implement global locks without needing an initialization step,
- * which improves our thread-safety-by-default further. */
-#if defined(__GLIBC__) && defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
-# define DBUS_HAVE_STATIC_RECURSIVE_MUTEXES 1
-#endif
-
/**
* A mutex which is recursive if possible, else non-recursive.
* This is typically recursive, but that cannot be relied upon.
_dbus_platform_condvar_wake_one (cond);
}
-#ifdef DBUS_HAVE_STATIC_RECURSIVE_MUTEXES
-
-static dbus_bool_t
-init_global_locks (void)
-{
- return TRUE;
-}
-
-/* implementations in dbus-sysdeps-pthread.c */
-
-#else /* !defined(DBUS_HAVE_STATIC_RECURSIVE_MUTEXES) */
-
static DBusRMutex *global_locks[_DBUS_N_GLOBAL_LOCKS] = { NULL };
static void
_dbus_platform_rmutex_unlock (global_locks[lock]);
}
-#endif /* !defined(DBUS_HAVE_STATIC_RECURSIVE_MUTEXES) */
-
/** @} */ /* end of internals */
/**