|
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17 System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64 User : nobody ( 99) PHP Version : 5.2.17 Disable Function : NONE Directory : /usr/share/devhelp/books/dbus/api/ |
Upload File : |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>D-Bus: DBusThreadFunctions Struct Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li id="current"><a href="annotated.html"><span>Data Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li><a href="functions.html"><span>Data Fields</span></a></li>
</ul></div>
<h1>DBusThreadFunctions Struct Reference<br>
<small>
[<a class="el" href="group__DBusThreads.html">Thread functions</a>]</small>
</h1><!-- doxytag: class="DBusThreadFunctions" -->Functions that must be implemented to make the D-Bus library thread-aware.
<a href="#_details">More...</a>
<p>
<code>#include <<a class="el" href="dbus-threads_8h-source.html">dbus-threads.h</a>></code>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8f1c2a3b3805e2c4034d7a341f7f82f1"></a><!-- doxytag: member="DBusThreadFunctions::mask" ref="8f1c2a3b3805e2c4034d7a341f7f82f1" args="" -->
unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#8f1c2a3b3805e2c4034d7a341f7f82f1">mask</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Mask indicating which functions are present. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="342ba12a619162a5b228903076b46a44"></a><!-- doxytag: member="DBusThreadFunctions::mutex_new" ref="342ba12a619162a5b228903076b46a44" args="" -->
<a class="el" href="group__DBusThreads.html#gb3817e9dc0798e7a519df7ac5431ea25">DBusMutexNewFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#342ba12a619162a5b228903076b46a44">mutex_new</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to create a mutex; optional and deprecated. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="01107266a74895f13af9962af6ad07dd"></a><!-- doxytag: member="DBusThreadFunctions::mutex_free" ref="01107266a74895f13af9962af6ad07dd" args="" -->
<a class="el" href="group__DBusThreads.html#g8c67a631ab136d96e34c44f9837dcfe9">DBusMutexFreeFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#01107266a74895f13af9962af6ad07dd">mutex_free</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to free a mutex; optional and deprecated. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1cc9d20f2ad0296e932951470063f8d0"></a><!-- doxytag: member="DBusThreadFunctions::mutex_lock" ref="1cc9d20f2ad0296e932951470063f8d0" args="" -->
<a class="el" href="group__DBusThreads.html#g0898fbcdb9ce075ad22a4ba62c764e55">DBusMutexLockFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#1cc9d20f2ad0296e932951470063f8d0">mutex_lock</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to lock a mutex; optional and deprecated. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="334d478ec305b04f526537c131cd8e8a"></a><!-- doxytag: member="DBusThreadFunctions::mutex_unlock" ref="334d478ec305b04f526537c131cd8e8a" args="" -->
<a class="el" href="group__DBusThreads.html#g6af259fe33b3abbea037aa5845d52c31">DBusMutexUnlockFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#334d478ec305b04f526537c131cd8e8a">mutex_unlock</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to unlock a mutex; optional and deprecated. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1796b617165734984bc40d38f9600d78"></a><!-- doxytag: member="DBusThreadFunctions::condvar_new" ref="1796b617165734984bc40d38f9600d78" args="" -->
<a class="el" href="group__DBusThreads.html#g3e2c4e12a9ff66463e67a44a35cbed3b">DBusCondVarNewFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#1796b617165734984bc40d38f9600d78">condvar_new</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to create a condition variable. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d302412c382190eddc05736f24d8855c"></a><!-- doxytag: member="DBusThreadFunctions::condvar_free" ref="d302412c382190eddc05736f24d8855c" args="" -->
<a class="el" href="group__DBusThreads.html#g37d922f1c48ac5cc99b8cf8491ed1d77">DBusCondVarFreeFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#d302412c382190eddc05736f24d8855c">condvar_free</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to free a condition variable. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e4cb6e9fe7c0813213561150721f349c"></a><!-- doxytag: member="DBusThreadFunctions::condvar_wait" ref="e4cb6e9fe7c0813213561150721f349c" args="" -->
<a class="el" href="group__DBusThreads.html#g2c1781991e26d8576ee83ea6c0d6e7d2">DBusCondVarWaitFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#e4cb6e9fe7c0813213561150721f349c">condvar_wait</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to wait on a condition. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5e049c7bdf4d83a85ebce31d838d4218"></a><!-- doxytag: member="DBusThreadFunctions::condvar_wait_timeout" ref="5e049c7bdf4d83a85ebce31d838d4218" args="" -->
<a class="el" href="group__DBusThreads.html#ge121475a38fd6572bc30f2a707251bad">DBusCondVarWaitTimeoutFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#5e049c7bdf4d83a85ebce31d838d4218">condvar_wait_timeout</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to wait on a condition with a timeout. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3f1301eacf666381ec6c39100e6787e1"></a><!-- doxytag: member="DBusThreadFunctions::condvar_wake_one" ref="3f1301eacf666381ec6c39100e6787e1" args="" -->
<a class="el" href="group__DBusThreads.html#gfb6fc546a9df8424d5cf374f3927cd41">DBusCondVarWakeOneFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#3f1301eacf666381ec6c39100e6787e1">condvar_wake_one</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to wake one thread waiting on the condition. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="128295c0019a401163d04ea0e291b36c"></a><!-- doxytag: member="DBusThreadFunctions::condvar_wake_all" ref="128295c0019a401163d04ea0e291b36c" args="" -->
<a class="el" href="group__DBusThreads.html#g1e26a5fc7202d27452c1efd9b4abb835">DBusCondVarWakeAllFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#128295c0019a401163d04ea0e291b36c">condvar_wake_all</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to wake all threads waiting on the condition. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fd30fb78a3ca1064bc8c074a6a61361e"></a><!-- doxytag: member="DBusThreadFunctions::recursive_mutex_new" ref="fd30fb78a3ca1064bc8c074a6a61361e" args="" -->
<a class="el" href="group__DBusThreads.html#gefea5db4419f173f3e712ef94e5720b4">DBusRecursiveMutexNewFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#fd30fb78a3ca1064bc8c074a6a61361e">recursive_mutex_new</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to create a recursive mutex. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8be6d85b7f162352efa5bb4a5663f44f"></a><!-- doxytag: member="DBusThreadFunctions::recursive_mutex_free" ref="8be6d85b7f162352efa5bb4a5663f44f" args="" -->
<a class="el" href="group__DBusThreads.html#g1af3cc1f19d1ac9c5626384616f53c00">DBusRecursiveMutexFreeFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#8be6d85b7f162352efa5bb4a5663f44f">recursive_mutex_free</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to free a recursive mutex. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e99179276be65fe4f701de307882dac5"></a><!-- doxytag: member="DBusThreadFunctions::recursive_mutex_lock" ref="e99179276be65fe4f701de307882dac5" args="" -->
<a class="el" href="group__DBusThreads.html#gbe758099d0c00d678df2300ec2fff44f">DBusRecursiveMutexLockFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#e99179276be65fe4f701de307882dac5">recursive_mutex_lock</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to lock a recursive mutex. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0bdb8cd9b263bcde5a0548b16ccd0702"></a><!-- doxytag: member="DBusThreadFunctions::recursive_mutex_unlock" ref="0bdb8cd9b263bcde5a0548b16ccd0702" args="" -->
<a class="el" href="group__DBusThreads.html#g9aeb5599003075dd85eb88cbeac4d904">DBusRecursiveMutexUnlockFunction</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#0bdb8cd9b263bcde5a0548b16ccd0702">recursive_mutex_unlock</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function to unlock a recursive mutex. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b47695687270635c0a1d4bb9b2b1a3b1"></a><!-- doxytag: member="DBusThreadFunctions::padding1" ref="b47695687270635c0a1d4bb9b2b1a3b1" args=")(void)" -->
void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#b47695687270635c0a1d4bb9b2b1a3b1">padding1</a> )(void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Reserved for future expansion. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="49ca2f4d3718c2f0ad4d6172471d28f0"></a><!-- doxytag: member="DBusThreadFunctions::padding2" ref="49ca2f4d3718c2f0ad4d6172471d28f0" args=")(void)" -->
void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#49ca2f4d3718c2f0ad4d6172471d28f0">padding2</a> )(void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Reserved for future expansion. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dabe94ac211fbaedac44d570eb6b17b0"></a><!-- doxytag: member="DBusThreadFunctions::padding3" ref="dabe94ac211fbaedac44d570eb6b17b0" args=")(void)" -->
void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#dabe94ac211fbaedac44d570eb6b17b0">padding3</a> )(void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Reserved for future expansion. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ae49b987ac7d9466fba61cf1fa8f341d"></a><!-- doxytag: member="DBusThreadFunctions::padding4" ref="ae49b987ac7d9466fba61cf1fa8f341d" args=")(void)" -->
void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusThreadFunctions.html#ae49b987ac7d9466fba61cf1fa8f341d">padding4</a> )(void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Reserved for future expansion. <br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Functions that must be implemented to make the D-Bus library thread-aware.
<p>
The recursive mutex functions should be specified rather than the old, deprecated nonrecursive ones.<p>
The condition variable functions have to work with recursive mutexes if you provide those, or with nonrecursive mutexes if you provide those.<p>
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.<p>
Thus with pthreads you probably have to roll your own emulated recursive mutexes, you can't use PTHREAD_MUTEX_RECURSIVE. This is what <a class="el" href="group__DBusThreads.html#gf508fbf3e39435491244b856183a1296">dbus_threads_init_default()</a> does on platforms that use pthreads.
<p>
<p>
Definition at line <a class="el" href="dbus-threads_8h-source.html#l00161">161</a> of file <a class="el" href="dbus-threads_8h-source.html">dbus-threads.h</a>.<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="dbus-threads_8h-source.html">dbus-threads.h</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 14 22:26:15 2009 for D-Bus by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>