DBusThreadFunctions Struct Reference
[Thread functions]

Functions that must be implemented to make the D-Bus library thread-aware. More...

#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.


Detailed Description

Functions that must be implemented to make the D-Bus library thread-aware.

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.


The documentation for this struct was generated from the following file:
Generated on Sat Dec 6 19:43:46 2008 for D-Bus by  doxygen 1.5.1