<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>dbus-internals.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.2.15 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="modules.html">Modules</a> <a class="qindex" href="annotated.html">Data Structures</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Data Fields</a> <a class="qindex" href="pages.html">Related Pages</a> </center> <hr><h1>dbus-internals.h</h1><div class="fragment"><pre>00001 <font class="comment">/* -*- mode: C; c-file-style: "gnu" -*- */</font> 00002 <font class="comment">/* dbus-internals.h random utility stuff (internal to D-BUS implementation)</font> 00003 <font class="comment"> *</font> 00004 <font class="comment"> * Copyright (C) 2002, 2003 Red Hat, Inc.</font> 00005 <font class="comment"> *</font> 00006 <font class="comment"> * Licensed under the Academic Free License version 2.0</font> 00007 <font class="comment"> * </font> 00008 <font class="comment"> * This program is free software; you can redistribute it and/or modify</font> 00009 <font class="comment"> * it under the terms of the GNU General Public License as published by</font> 00010 <font class="comment"> * the Free Software Foundation; either version 2 of the License, or</font> 00011 <font class="comment"> * (at your option) any later version.</font> 00012 <font class="comment"> *</font> 00013 <font class="comment"> * This program is distributed in the hope that it will be useful,</font> 00014 <font class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</font> 00015 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</font> 00016 <font class="comment"> * GNU General Public License for more details.</font> 00017 <font class="comment"> * </font> 00018 <font class="comment"> * You should have received a copy of the GNU General Public License</font> 00019 <font class="comment"> * along with this program; if not, write to the Free Software</font> 00020 <font class="comment"> * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</font> 00021 <font class="comment"> *</font> 00022 <font class="comment"> */</font> 00023 <font class="preprocessor">#ifdef DBUS_INSIDE_DBUS_H</font> 00024 <font class="preprocessor"></font><font class="preprocessor">#error "You can't include dbus-internals.h in the public header dbus.h"</font> 00025 <font class="preprocessor"></font><font class="preprocessor">#endif</font> 00026 <font class="preprocessor"></font> 00027 <font class="preprocessor">#ifndef DBUS_INTERNALS_H</font> 00028 <font class="preprocessor"></font><font class="preprocessor">#define DBUS_INTERNALS_H</font> 00029 <font class="preprocessor"></font> 00030 <font class="preprocessor">#include <config.h></font> 00031 00032 <font class="preprocessor">#include <dbus/dbus-memory.h></font> 00033 <font class="preprocessor">#include <dbus/dbus-types.h></font> 00034 <font class="preprocessor">#include <dbus/dbus-errors.h></font> 00035 <font class="preprocessor">#include <dbus/dbus-sysdeps.h></font> 00036 <font class="preprocessor">#include <dbus/dbus-threads.h></font> 00037 00038 DBUS_BEGIN_DECLS; 00039 00040 <font class="keywordtype">void</font> _dbus_warn (<font class="keyword">const</font> <font class="keywordtype">char</font> *format, 00041 ...) _DBUS_GNUC_PRINTF (1, 2); 00042 <font class="keywordtype">void</font> _dbus_verbose_real (<font class="keyword">const</font> <font class="keywordtype">char</font> *format, 00043 ...) _DBUS_GNUC_PRINTF (1, 2); 00044 <font class="keywordtype">void</font> _dbus_verbose_reset_real (<font class="keywordtype">void</font>); 00045 00046 <font class="preprocessor">#if defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)</font> 00047 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_FUNCTION_NAME __func__</font> 00048 <font class="preprocessor"></font><font class="preprocessor">#elif defined(__GNUC__)</font> 00049 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_FUNCTION_NAME __FUNCTION__</font> 00050 <font class="preprocessor"></font><font class="preprocessor">#else</font> 00051 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_FUNCTION_NAME "unknown function"</font> 00052 <font class="preprocessor"></font><font class="preprocessor">#endif</font> 00053 <font class="preprocessor"></font> 00054 <font class="comment">/*</font> 00055 <font class="comment"> * (code from GLib)</font> 00056 <font class="comment"> * </font> 00057 <font class="comment"> * The _DBUS_LIKELY and _DBUS_UNLIKELY macros let the programmer give hints to </font> 00058 <font class="comment"> * the compiler about the expected result of an expression. Some compilers</font> 00059 <font class="comment"> * can use this information for optimizations.</font> 00060 <font class="comment"> *</font> 00061 <font class="comment"> * The _DBUS_BOOLEAN_EXPR macro is intended to trigger a gcc warning when</font> 00062 <font class="comment"> * putting assignments in the macro arg</font> 00063 <font class="comment"> */</font> 00064 <font class="preprocessor">#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__)</font> 00065 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_BOOLEAN_EXPR(expr) \</font> 00066 <font class="preprocessor"> __extension__ ({ \</font> 00067 <font class="preprocessor"> int _dbus_boolean_var_; \</font> 00068 <font class="preprocessor"> if (expr) \</font> 00069 <font class="preprocessor"> _dbus_boolean_var_ = 1; \</font> 00070 <font class="preprocessor"> else \</font> 00071 <font class="preprocessor"> _dbus_boolean_var_ = 0; \</font> 00072 <font class="preprocessor"> _dbus_boolean_var_; \</font> 00073 <font class="preprocessor">})</font> 00074 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_LIKELY(expr) (__builtin_expect (_DBUS_BOOLEAN_EXPR(expr), 1))</font> 00075 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_UNLIKELY(expr) (__builtin_expect (_DBUS_BOOLEAN_EXPR(expr), 0))</font> 00076 <font class="preprocessor"></font><font class="preprocessor">#else</font> 00077 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_LIKELY(expr) (expr)</font> 00078 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_UNLIKELY(expr) (expr)</font> 00079 <font class="preprocessor"></font><font class="preprocessor">#endif</font> 00080 <font class="preprocessor"></font> 00081 <font class="preprocessor">#ifdef DBUS_ENABLE_VERBOSE_MODE</font> 00082 <font class="preprocessor"></font><font class="preprocessor"># define _dbus_verbose _dbus_verbose_real</font> 00083 <font class="preprocessor"></font><font class="preprocessor"># define _dbus_verbose_reset _dbus_verbose_reset_real</font> 00084 <font class="preprocessor"></font><font class="preprocessor">#else</font> 00085 <font class="preprocessor"></font><font class="preprocessor"># ifdef HAVE_ISO_VARARGS</font> 00086 <font class="preprocessor"></font><font class="preprocessor"># define _dbus_verbose(...)</font> 00087 <font class="preprocessor"></font><font class="preprocessor"># elif defined (HAVE_GNUC_VARARGS)</font> 00088 <font class="preprocessor"></font><font class="preprocessor"># define _dbus_verbose(format...)</font> 00089 <font class="preprocessor"></font><font class="preprocessor"># else</font> 00090 <font class="preprocessor"></font><font class="preprocessor"># error "This compiler does not support varargs macros and thus verbose mode can't be disabled meaningfully"</font> 00091 <font class="preprocessor"></font><font class="preprocessor"># endif</font> 00092 <font class="preprocessor"></font><font class="preprocessor"># define _dbus_verbose_reset()</font> 00093 <font class="preprocessor"></font><font class="preprocessor">#endif </font><font class="comment">/* !DBUS_ENABLE_VERBOSE_MODE */</font> 00094 00095 <font class="keyword">const</font> <font class="keywordtype">char</font>* _dbus_strerror (<font class="keywordtype">int</font> error_number); 00096 00097 <font class="preprocessor">#ifdef DBUS_DISABLE_ASSERT</font> 00098 <font class="preprocessor"></font><font class="preprocessor">#define _dbus_assert(condition)</font> 00099 <font class="preprocessor"></font><font class="preprocessor">#else</font> 00100 <font class="preprocessor"></font><font class="keywordtype">void</font> _dbus_real_assert (dbus_bool_t condition, 00101 <font class="keyword">const</font> <font class="keywordtype">char</font> *condition_text, 00102 <font class="keyword">const</font> <font class="keywordtype">char</font> *file, 00103 <font class="keywordtype">int</font> line); <a name="l00104"></a><a class="code" href="group__DBusInternalsUtils.html#a131">00104</a> <font class="preprocessor">#define _dbus_assert(condition) \</font> 00105 <font class="preprocessor"> _dbus_real_assert ((condition) != 0, #condition, __FILE__, __LINE__)</font> 00106 <font class="preprocessor"></font><font class="preprocessor">#endif </font><font class="comment">/* !DBUS_DISABLE_ASSERT */</font> 00107 00108 <font class="preprocessor">#ifdef DBUS_DISABLE_ASSERT</font> 00109 <font class="preprocessor"></font><font class="preprocessor">#define _dbus_assert_not_reached(explanation)</font> 00110 <font class="preprocessor"></font><font class="preprocessor">#else</font> 00111 <font class="preprocessor"></font><font class="keywordtype">void</font> _dbus_real_assert_not_reached (<font class="keyword">const</font> <font class="keywordtype">char</font> *explanation, 00112 <font class="keyword">const</font> <font class="keywordtype">char</font> *file, 00113 <font class="keywordtype">int</font> line) _DBUS_GNUC_NORETURN; <a name="l00114"></a><a class="code" href="group__DBusInternalsUtils.html#a132">00114</a> <font class="preprocessor">#define _dbus_assert_not_reached(explanation) \</font> 00115 <font class="preprocessor"> _dbus_real_assert_not_reached (explanation, __FILE__, __LINE__)</font> 00116 <font class="preprocessor"></font><font class="preprocessor">#endif </font><font class="comment">/* !DBUS_DISABLE_ASSERT */</font> 00117 00118 <font class="preprocessor">#ifdef DBUS_DISABLE_CHECKS</font> 00119 <font class="preprocessor"></font><font class="preprocessor">#define _dbus_return_if_fail(condition)</font> 00120 <font class="preprocessor"></font><font class="preprocessor">#define _dbus_return_val_if_fail(condition, val)</font> 00121 <font class="preprocessor"></font><font class="preprocessor">#else</font> <a name="l00122"></a><a class="code" href="group__DBusInternalsUtils.html#a37">00122</a> <font class="preprocessor"></font><font class="keyword">extern</font> <font class="keyword">const</font> <font class="keywordtype">char</font> _dbus_return_if_fail_warning_format[]; 00123 00124 <font class="preprocessor">#define _dbus_return_if_fail(condition) do { \</font> 00125 <font class="preprocessor"> if (!(condition)) { \</font> 00126 <font class="preprocessor"> _dbus_warn (_dbus_return_if_fail_warning_format, \</font> 00127 <font class="preprocessor"> _dbus_getpid (), _DBUS_FUNCTION_NAME, #condition, __FILE__, __LINE__); \</font> 00128 <font class="preprocessor"> return; \</font> 00129 <font class="preprocessor"> } } while (0)</font> 00130 <font class="preprocessor"></font> 00131 <font class="preprocessor">#define _dbus_return_val_if_fail(condition, val) do { \</font> 00132 <font class="preprocessor"> if (!(condition)) { \</font> 00133 <font class="preprocessor"> _dbus_warn (_dbus_return_if_fail_warning_format, \</font> 00134 <font class="preprocessor"> _dbus_getpid (), _DBUS_FUNCTION_NAME, #condition, __FILE__, __LINE__); \</font> 00135 <font class="preprocessor"> return (val); \</font> 00136 <font class="preprocessor"> } } while (0)</font> 00137 <font class="preprocessor"></font> 00138 <font class="preprocessor">#endif </font><font class="comment">/* !DBUS_DISABLE_ASSERT */</font> 00139 <a name="l00140"></a><a class="code" href="group__DBusInternalsUtils.html#a133">00140</a> <font class="preprocessor">#define _DBUS_N_ELEMENTS(array) ((int) (sizeof ((array)) / sizeof ((array)[0])))</font> 00141 <font class="preprocessor"></font> <a name="l00142"></a><a class="code" href="group__DBusInternalsUtils.html#a134">00142</a> <font class="preprocessor">#define _DBUS_POINTER_TO_INT(pointer) ((long)(pointer))</font> <a name="l00143"></a><a class="code" href="group__DBusInternalsUtils.html#a135">00143</a> <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_INT_TO_POINTER(integer) ((void*)((long)(integer)))</font> 00144 <font class="preprocessor"></font> <a name="l00145"></a><a class="code" href="group__DBusInternalsUtils.html#a136">00145</a> <font class="preprocessor">#define _DBUS_ZERO(object) (memset (&(object), '\0', sizeof ((object))))</font> 00146 <font class="preprocessor"></font> 00147 <font class="preprocessor">#define _DBUS_STRUCT_OFFSET(struct_type, member) \</font> 00148 <font class="preprocessor"> ((long) ((unsigned char*) &((struct_type*) 0)->member))</font> 00149 <font class="preprocessor"></font> 00150 <font class="preprocessor">#define _DBUS_ASSERT_ERROR_IS_SET(error) _dbus_assert ((error) == NULL || dbus_error_is_set ((error)))</font> 00151 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_ASSERT_ERROR_IS_CLEAR(error) _dbus_assert ((error) == NULL || !dbus_error_is_set ((error)))</font> 00152 <font class="preprocessor"></font> 00153 <font class="preprocessor">#define _dbus_return_if_error_is_set(error) _dbus_return_if_fail ((error) == NULL || !dbus_error_is_set ((error)))</font> 00154 <font class="preprocessor"></font><font class="preprocessor">#define _dbus_return_val_if_error_is_set(error, val) _dbus_return_val_if_fail ((error) == NULL || !dbus_error_is_set ((error)), (val))</font> 00155 <font class="preprocessor"></font> 00156 <font class="comment">/* This alignment thing is from ORBit2 */</font> 00157 <font class="comment">/* Align a value upward to a boundary, expressed as a number of bytes.</font> 00158 <font class="comment"> * E.g. align to an 8-byte boundary with argument of 8.</font> 00159 <font class="comment"> */</font> 00160 00161 <font class="comment">/*</font> 00162 <font class="comment"> * (this + boundary - 1)</font> 00163 <font class="comment"> * &</font> 00164 <font class="comment"> * ~(boundary - 1)</font> 00165 <font class="comment"> */</font> 00166 00167 <font class="preprocessor">#define _DBUS_ALIGN_VALUE(this, boundary) \</font> 00168 <font class="preprocessor"> (( ((unsigned long)(this)) + (((unsigned long)(boundary)) -1)) & (~(((unsigned long)(boundary))-1)))</font> 00169 <font class="preprocessor"></font> 00170 <font class="preprocessor">#define _DBUS_ALIGN_ADDRESS(this, boundary) \</font> 00171 <font class="preprocessor"> ((void*)_DBUS_ALIGN_VALUE(this, boundary))</font> 00172 <font class="preprocessor"></font> 00173 <font class="keywordtype">char</font>* _dbus_strdup (<font class="keyword">const</font> <font class="keywordtype">char</font> *str); 00174 <font class="keywordtype">void</font>* _dbus_memdup (<font class="keyword">const</font> <font class="keywordtype">void</font> *mem, 00175 size_t n_bytes); 00176 dbus_bool_t _dbus_string_array_contains (<font class="keyword">const</font> <font class="keywordtype">char</font> **array, 00177 <font class="keyword">const</font> <font class="keywordtype">char</font> *str); 00178 <font class="keywordtype">char</font>** _dbus_dup_string_array (<font class="keyword">const</font> <font class="keywordtype">char</font> **array); 00179 <a name="l00180"></a><a class="code" href="group__DBusInternalsUtils.html#a137">00180</a> <font class="preprocessor">#define _DBUS_INT_MIN (-_DBUS_INT_MAX - 1)</font> <a name="l00181"></a><a class="code" href="group__DBusInternalsUtils.html#a138">00181</a> <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_INT_MAX 2147483647</font> 00182 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_UINT_MAX 0xffffffff</font> 00183 <font class="preprocessor"></font><font class="preprocessor">#ifdef DBUS_HAVE_INT64</font> 00184 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_INT64_MAX DBUS_INT64_CONSTANT (9223372036854775807)</font> 00185 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_UINT64_MAX DBUS_UINT64_CONSTANT (0xffffffffffffffff)</font> 00186 <font class="preprocessor"></font><font class="preprocessor">#endif</font> 00187 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_ONE_KILOBYTE 1024</font> 00188 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_ONE_MEGABYTE 1024 * _DBUS_ONE_KILOBYTE</font> 00189 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_ONE_HOUR_IN_MILLISECONDS (1000 * 60 * 60)</font> 00190 <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_USEC_PER_SECOND (1000000)</font> 00191 <font class="preprocessor"></font> 00192 <font class="preprocessor">#undef MAX</font> 00193 <font class="preprocessor"></font><font class="preprocessor">#define MAX(a, b) (((a) > (b)) ? (a) : (b))</font> 00194 <font class="preprocessor"></font> 00195 <font class="preprocessor">#undef MIN</font> 00196 <font class="preprocessor"></font><font class="preprocessor">#define MIN(a, b) (((a) < (b)) ? (a) : (b))</font> 00197 <font class="preprocessor"></font> 00198 <font class="preprocessor">#undef ABS</font> 00199 <font class="preprocessor"></font><font class="preprocessor">#define ABS(a) (((a) < 0) ? -(a) : (a))</font> 00200 <font class="preprocessor"></font> <a name="l00201"></a><a class="code" href="group__DBusInternalsUtils.html#a155">00201</a> <font class="keyword">typedef</font> void (* DBusForeachFunction) (<font class="keywordtype">void</font> *element, 00202 <font class="keywordtype">void</font> *data); 00203 00204 dbus_bool_t _dbus_set_fd_nonblocking (<font class="keywordtype">int</font> fd, 00205 <a class="code" href="structDBusError.html">DBusError</a> *error); 00206 00207 <font class="keywordtype">void</font> _dbus_verbose_bytes (<font class="keyword">const</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> *data, 00208 <font class="keywordtype">int</font> len); 00209 <font class="keywordtype">void</font> _dbus_verbose_bytes_of_string (<font class="keyword">const</font> <a class="code" href="structDBusString.html">DBusString</a> *str, 00210 <font class="keywordtype">int</font> start, 00211 <font class="keywordtype">int</font> len); 00212 00213 00214 <font class="keyword">const</font> <font class="keywordtype">char</font>* _dbus_type_to_string (<font class="keywordtype">int</font> type); 00215 <font class="keyword">const</font> <font class="keywordtype">char</font>* _dbus_header_field_to_string (<font class="keywordtype">int</font> header_field); 00216 <a name="l00217"></a><a class="code" href="group__DBusInternalsUtils.html#a39">00217</a> <font class="keyword">extern</font> <font class="keyword">const</font> <font class="keywordtype">char</font> _dbus_no_memory_message[]; 00218 <font class="preprocessor">#define _DBUS_SET_OOM(error) dbus_set_error ((error), DBUS_ERROR_NO_MEMORY, _dbus_no_memory_message)</font> 00219 <font class="preprocessor"></font> 00220 <font class="preprocessor">#ifdef DBUS_BUILD_TESTS</font> 00221 <font class="preprocessor"></font><font class="comment">/* Memory debugging */</font> 00222 <font class="keywordtype">void</font> _dbus_set_fail_alloc_counter (<font class="keywordtype">int</font> until_next_fail); 00223 <font class="keywordtype">int</font> _dbus_get_fail_alloc_counter (<font class="keywordtype">void</font>); 00224 <font class="keywordtype">void</font> _dbus_set_fail_alloc_failures (<font class="keywordtype">int</font> failures_per_failure); 00225 <font class="keywordtype">int</font> _dbus_get_fail_alloc_failures (<font class="keywordtype">void</font>); 00226 dbus_bool_t _dbus_decrement_fail_alloc_counter (<font class="keywordtype">void</font>); 00227 dbus_bool_t _dbus_disable_mem_pools (<font class="keywordtype">void</font>); 00228 <font class="keywordtype">int</font> _dbus_get_malloc_blocks_outstanding (<font class="keywordtype">void</font>); 00229 00230 <font class="keyword">typedef</font> dbus_bool_t (* DBusTestMemoryFunction) (<font class="keywordtype">void</font> *data); 00231 dbus_bool_t _dbus_test_oom_handling (<font class="keyword">const</font> <font class="keywordtype">char</font> *description, 00232 DBusTestMemoryFunction func, 00233 <font class="keywordtype">void</font> *data); 00234 <font class="preprocessor">#else</font> 00235 <font class="preprocessor"></font><font class="preprocessor">#define _dbus_set_fail_alloc_counter(n)</font> 00236 <font class="preprocessor"></font><font class="preprocessor">#define _dbus_get_fail_alloc_counter _DBUS_INT_MAX</font> 00237 <font class="preprocessor"></font> 00238 <font class="comment">/* These are constant expressions so that blocks</font> 00239 <font class="comment"> * they protect should be optimized away</font> 00240 <font class="comment"> */</font> 00241 <font class="preprocessor">#define _dbus_decrement_fail_alloc_counter() (FALSE)</font> 00242 <font class="preprocessor"></font><font class="preprocessor">#define _dbus_disable_mem_pools() (FALSE)</font> 00243 <font class="preprocessor"></font><font class="preprocessor">#define _dbus_get_malloc_blocks_outstanding (0)</font> 00244 <font class="preprocessor"></font><font class="preprocessor">#endif </font><font class="comment">/* !DBUS_BUILD_TESTS */</font> 00245 00246 <font class="keyword">typedef</font> void (* DBusShutdownFunction) (<font class="keywordtype">void</font> *data); 00247 dbus_bool_t _dbus_register_shutdown_func (DBusShutdownFunction function, 00248 <font class="keywordtype">void</font> *data); 00249 00250 <font class="keyword">extern</font> <font class="keywordtype">int</font> _dbus_current_generation; 00251 00252 <font class="comment">/* Thread initializers */</font> <a name="l00253"></a><a class="code" href="group__DBusInternalsUtils.html#a139">00253</a> <font class="preprocessor">#define _DBUS_LOCK_NAME(name) _dbus_lock_##name</font> <a name="l00254"></a><a class="code" href="group__DBusInternalsUtils.html#a141">00254</a> <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_DECLARE_GLOBAL_LOCK(name) extern DBusMutex *_dbus_lock_##name</font> <a name="l00255"></a><a class="code" href="group__DBusInternalsUtils.html#a140">00255</a> <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_DEFINE_GLOBAL_LOCK(name) DBusMutex *_dbus_lock_##name </font> <a name="l00256"></a><a class="code" href="group__DBusInternalsUtils.html#a142">00256</a> <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_LOCK(name) dbus_mutex_lock (_dbus_lock_##name)</font> <a name="l00257"></a><a class="code" href="group__DBusInternalsUtils.html#a143">00257</a> <font class="preprocessor"></font><font class="preprocessor">#define _DBUS_UNLOCK(name) dbus_mutex_unlock (_dbus_lock_##name)</font> 00258 <font class="preprocessor"></font> 00259 _DBUS_DECLARE_GLOBAL_LOCK (list); 00260 _DBUS_DECLARE_GLOBAL_LOCK (connection_slots); 00261 _DBUS_DECLARE_GLOBAL_LOCK (pending_call_slots); 00262 _DBUS_DECLARE_GLOBAL_LOCK (server_slots); 00263 _DBUS_DECLARE_GLOBAL_LOCK (message_slots); 00264 _DBUS_DECLARE_GLOBAL_LOCK (atomic); 00265 _DBUS_DECLARE_GLOBAL_LOCK (bus); 00266 _DBUS_DECLARE_GLOBAL_LOCK (shutdown_funcs); 00267 _DBUS_DECLARE_GLOBAL_LOCK (system_users); 00268 <font class="preprocessor">#define _DBUS_N_GLOBAL_LOCKS (9)</font> 00269 <font class="preprocessor"></font> 00270 dbus_bool_t _dbus_threads_init_debug (<font class="keywordtype">void</font>); 00271 00272 DBUS_END_DECLS; 00273 00274 <font class="preprocessor">#endif </font><font class="comment">/* DBUS_INTERNALS_H */</font> </pre></div><hr><address align="right"><small>Generated on Wed Jun 9 05:01:25 2004 for D-BUS by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.15 </small></address> </body> </html>