#include <dbus-threads.h>
Data Fields | |
unsigned int | mask |
Mask indicating which functions are present. | |
DBusMutexNewFunction | mutex_new |
Function to create a mutex; optional and deprecated. | |
DBusMutexFreeFunction | mutex_free |
Function to free a mutex; optional and deprecated. | |
DBusMutexLockFunction | mutex_lock |
Function to lock a mutex; optional and deprecated. | |
DBusMutexUnlockFunction | mutex_unlock |
Function to unlock a mutex; optional and deprecated. | |
DBusCondVarNewFunction | condvar_new |
Function to create a condition variable. | |
DBusCondVarFreeFunction | condvar_free |
Function to free a condition variable. | |
DBusCondVarWaitFunction | condvar_wait |
Function to wait on a condition. | |
DBusCondVarWaitTimeoutFunction | condvar_wait_timeout |
Function to wait on a condition with a timeout. | |
DBusCondVarWakeOneFunction | condvar_wake_one |
Function to wake one thread waiting on the condition. | |
DBusCondVarWakeAllFunction | condvar_wake_all |
Function to wake all threads waiting on the condition. | |
DBusRecursiveMutexNewFunction | recursive_mutex_new |
Function to create a recursive mutex. | |
DBusRecursiveMutexFreeFunction | recursive_mutex_free |
Function to free a recursive mutex. | |
DBusRecursiveMutexLockFunction | recursive_mutex_lock |
Function to lock a recursive mutex. | |
DBusRecursiveMutexUnlockFunction | recursive_mutex_unlock |
Function to unlock a recursive mutex. | |
void(* | padding1 )(void) |
Reserved for future expansion. | |
void(* | padding2 )(void) |
Reserved for future expansion. | |
void(* | padding3 )(void) |
Reserved for future expansion. | |
void(* | padding4 )(void) |
Reserved for future expansion. |
The recursive mutex functions should be specified rather than the old, deprecated nonrecursive ones.
The condition variable functions have to work with recursive mutexes if you provide those, or with nonrecursive mutexes if you provide those.
If implementing threads using pthreads, be aware that PTHREAD_MUTEX_RECURSIVE is broken in combination with condition variables. libdbus relies on the Java-style behavior that when waiting on a condition, the recursion count is saved and restored, and the mutex is completely unlocked, not just decremented one level of recursion.
Thus with pthreads you probably have to roll your own emulated recursive mutexes, you can't use PTHREAD_MUTEX_RECURSIVE. This is what dbus_threads_init_default() does on platforms that use pthreads.
Definition at line 161 of file dbus-threads.h.