DBusThreadFunctions Struct Reference

#include <stdapis/dbus-1.0/dbus/dbus-threads.h>

struct DBusThreadFunctions

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.

Member Attribute Documentation

condvar_free

Function to free a condition variable

condvar_new

Function to create a condition variable

condvar_wait

Function to wait on a condition

condvar_wait_timeout

DBusCondVarWaitTimeoutFunction condvar_wait_timeout

Function to wait on a condition with a timeout

condvar_wake_all

DBusCondVarWakeAllFunction condvar_wake_all

Function to wake all threads waiting on the condition

condvar_wake_one

DBusCondVarWakeOneFunction condvar_wake_one

Function to wake one thread waiting on the condition

mask

unsigned intmask

Mask indicating which functions are present.

mutex_free

Function to free a mutex; optional and deprecated.

mutex_lock

Function to lock a mutex; optional and deprecated.

mutex_new

Function to create a mutex; optional and deprecated.

mutex_unlock

Function to unlock a mutex; optional and deprecated.

padding1

void(*padding1

Reserved for future expansion

padding2

void(*padding2

Reserved for future expansion

padding3

void(*padding3

Reserved for future expansion

padding4

void(*padding4

Reserved for future expansion

recursive_mutex_free

DBusRecursiveMutexFreeFunction recursive_mutex_free

Function to free a recursive mutex

recursive_mutex_lock

DBusRecursiveMutexLockFunction recursive_mutex_lock

Function to lock a recursive mutex

recursive_mutex_new

DBusRecursiveMutexNewFunction recursive_mutex_new

Function to create a recursive mutex

recursive_mutex_unlock

DBusRecursiveMutexUnlockFunction recursive_mutex_unlock

Function to unlock a recursive mutex