Sophie

Sophie

distrib > Mandriva > 2007.0 > x86_64 > media > main-release > by-pkgid > 926d2d1e3111287cee1b0a4fad4fb4f6 > files > 76

lib64dbus-1_3-devel-0.92-6mdv2007.0.x86_64.rpm

<!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-gthread.c 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> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<hr><h1>dbus-gthread.c</h1><div class="fragment"><pre>00001 <font class="comment">/* -*- mode: C; c-file-style: "gnu" -*- */</font>
00002 <font class="comment">/* dbus-gthread.c  GThread integration</font>
00003 <font class="comment"> *</font>
00004 <font class="comment"> * Copyright (C) 2002  CodeFactory AB</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 
00024 <font class="preprocessor">#include &lt;glib.h&gt;</font>
00025 <font class="preprocessor">#include &lt;dbus/dbus.h&gt;</font>
00026 <font class="preprocessor">#include "dbus-glib.h"</font>
00027 
00032 <font class="keyword">static</font> DBusMutex * dbus_gmutex_new        (<font class="keywordtype">void</font>);
00033 <font class="keyword">static</font> <font class="keywordtype">void</font>        dbus_gmutex_free       (DBusMutex   *mutex);
00034 <font class="keyword">static</font> dbus_bool_t dbus_gmutex_lock       (DBusMutex   *mutex);
00035 <font class="keyword">static</font> dbus_bool_t dbus_gmutex_unlock     (DBusMutex   *mutex);
00036 
00037 
00038 <font class="keyword">static</font> DBusCondVar* dbus_gcondvar_new          (<font class="keywordtype">void</font>);
00039 <font class="keyword">static</font> <font class="keywordtype">void</font>         dbus_gcondvar_free         (DBusCondVar *cond);
00040 <font class="keyword">static</font> <font class="keywordtype">void</font>         dbus_gcondvar_wait         (DBusCondVar *cond,
00041                                                 DBusMutex   *mutex);
00042 <font class="keyword">static</font> dbus_bool_t  dbus_gcondvar_wait_timeout (DBusCondVar *cond,
00043                                                 DBusMutex   *mutex,
00044                                                 <font class="keywordtype">int</font>          timeout_msec);
00045 <font class="keyword">static</font> <font class="keywordtype">void</font>         dbus_gcondvar_wake_one     (DBusCondVar *cond);
00046 <font class="keyword">static</font> <font class="keywordtype">void</font>         dbus_gcondvar_wake_all     (DBusCondVar *cond);
00047 
00048 
00049 <font class="keyword">static</font> <font class="keyword">const</font> <a class="code" href="structDBusThreadFunctions.html">DBusThreadFunctions</a> functions =
00050 {
00051   DBUS_THREAD_FUNCTIONS_MUTEX_NEW_MASK |
00052   DBUS_THREAD_FUNCTIONS_MUTEX_FREE_MASK |
00053   DBUS_THREAD_FUNCTIONS_MUTEX_LOCK_MASK |
00054   DBUS_THREAD_FUNCTIONS_MUTEX_UNLOCK_MASK |
00055   DBUS_THREAD_FUNCTIONS_CONDVAR_NEW_MASK |
00056   DBUS_THREAD_FUNCTIONS_CONDVAR_FREE_MASK |
00057   DBUS_THREAD_FUNCTIONS_CONDVAR_WAIT_MASK |
00058   DBUS_THREAD_FUNCTIONS_CONDVAR_WAIT_TIMEOUT_MASK |
00059   DBUS_THREAD_FUNCTIONS_CONDVAR_WAKE_ONE_MASK|
00060   DBUS_THREAD_FUNCTIONS_CONDVAR_WAKE_ALL_MASK,
00061   dbus_gmutex_new,
00062   dbus_gmutex_free,
00063   dbus_gmutex_lock,
00064   dbus_gmutex_unlock,
00065   dbus_gcondvar_new,
00066   dbus_gcondvar_free,
00067   dbus_gcondvar_wait,
00068   dbus_gcondvar_wait_timeout,
00069   dbus_gcondvar_wake_one,
00070   dbus_gcondvar_wake_all
00071 };
00072 
00073 <font class="keyword">static</font> DBusMutex *
00074 dbus_gmutex_new (<font class="keywordtype">void</font>)
00075 {
00076   GMutex *mutex;
00077 
00078   mutex = g_mutex_new ();
00079 
00080   <font class="keywordflow">return</font> (DBusMutex *)mutex;
00081 }
00082 
00083 <font class="keyword">static</font> <font class="keywordtype">void</font>
00084 dbus_gmutex_free (DBusMutex *mutex)
00085 {
00086   g_mutex_free ((GMutex *)mutex);
00087 }
00088 
00089 <font class="keyword">static</font> dbus_bool_t
00090 dbus_gmutex_lock (DBusMutex *mutex)
00091 {
00092   g_mutex_lock ((GMutex *)mutex);
00093 
00094   <font class="keywordflow">return</font> TRUE;
00095 }
00096 
00097 <font class="keyword">static</font> dbus_bool_t
00098 dbus_gmutex_unlock (DBusMutex *mutex)
00099 {
00100   g_mutex_unlock ((GMutex *)mutex);
00101 
00102   <font class="keywordflow">return</font> TRUE;
00103 }
00104 
00105 <font class="keyword">static</font> DBusCondVar*
00106 dbus_gcondvar_new (<font class="keywordtype">void</font>)
00107 {
00108   <font class="keywordflow">return</font> (DBusCondVar*)g_cond_new ();
00109 }
00110 
00111 <font class="keyword">static</font> <font class="keywordtype">void</font>
00112 dbus_gcondvar_free (DBusCondVar *cond)
00113 {
00114   g_cond_free ((GCond *)cond);
00115 }
00116 
00117 <font class="keyword">static</font> <font class="keywordtype">void</font>
00118 dbus_gcondvar_wait (DBusCondVar *cond,
00119                     DBusMutex   *mutex)
00120 {
00121   g_cond_wait ((GCond *)cond, (GMutex *)mutex);
00122 }
00123 
00124 <font class="keyword">static</font> dbus_bool_t
00125 dbus_gcondvar_wait_timeout (DBusCondVar *cond,
00126                             DBusMutex   *mutex,
00127                             <font class="keywordtype">int</font>         timeout_msec)
00128 {
00129   GTimeVal now;
00130   
00131   g_get_current_time (&amp;now);
00132 
00133   now.tv_sec += timeout_msec / 1000;
00134   now.tv_usec += (timeout_msec % 1000) * 1000;
00135   <font class="keywordflow">if</font> (now.tv_usec &gt; G_USEC_PER_SEC)
00136     {
00137       now.tv_sec += 1;
00138       now.tv_usec -= G_USEC_PER_SEC;
00139     }
00140   
00141   <font class="keywordflow">return</font> g_cond_timed_wait ((GCond *)cond, (GMutex *)mutex, &amp;now);
00142 }
00143 
00144 <font class="keyword">static</font> <font class="keywordtype">void</font>
00145 dbus_gcondvar_wake_one (DBusCondVar *cond)
00146 {
00147   g_cond_signal ((GCond *)cond);
00148 }
00149 
00150 <font class="keyword">static</font> <font class="keywordtype">void</font>
00151 dbus_gcondvar_wake_all (DBusCondVar *cond)
00152 {
00153   g_cond_broadcast ((GCond *)cond);
00154 }
00155 
00167 <font class="keywordtype">void</font>
<a name="l00168"></a><a class="code" href="group__DBusGLib.html#a11">00168</a> dbus_g_thread_init (<font class="keywordtype">void</font>)
00169 {
00170   <font class="keywordflow">if</font> (!g_thread_supported ())
00171     g_error (<font class="stringliteral">"g_thread_init() must be called before dbus_threads_init()"</font>);
00172     
00173   dbus_threads_init (&amp;functions);
00174 }
00175 
</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>