This file is indexed.

/usr/share/doc/libucommon-dev/a00040.html is in libucommon-doc 3.2.0-0ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>UCommon: ucc::Conditional Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="a00214.html">ucc</a>::<a class="el" href="a00040.html">Conditional</a>
  </div>
</div>
<div class="contents">
<h1>ucc::Conditional Class Reference</h1><!-- doxytag: class="ucc::Conditional" -->
<p>The conditional is a common base for other thread synchronizing classes.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="a00208_source.html">thread.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ucc::Conditional:</div>
<div class="dynsection">
<div class="center"><img src="a00372.png" border="0" usemap="#ucc_1_1_conditional_inherit__map" alt="Inheritance graph"/></div>
<map name="ucc_1_1_conditional_inherit__map" id="ucc_1_1_conditional_inherit__map">
<area shape="rect" id="node3" href="a00032.html" title="A portable implimentation of &quot;barrier&quot; thread sychronization." alt="" coords="213,59,307,88"/><area shape="rect" id="node5" href="a00034.html" title="A thread&#45;safe buffer for serializing and streaming class data." alt="" coords="215,112,305,141"/><area shape="rect" id="node9" href="a00041.html" title="The conditional rw seperates scheduling for optizming behavior or rw locks." alt="" coords="176,165,344,195"/><area shape="rect" id="node19" href="a00109.html" title="Manage a thread&#45;safe queue of objects through reference pointers." alt="" coords="215,219,305,248"/><area shape="rect" id="node23" href="a00112.html" title="Class for resource bound memory pools between threads." alt="" coords="177,272,343,301"/><area shape="rect" id="node37" href="a00114.html" title="Portable recursive exclusive lock." alt="" coords="212,325,308,355"/><area shape="rect" id="node39" href="a00132.html" title="A portable counting semaphore class." alt="" coords="197,379,323,408"/><area shape="rect" id="node41" href="a00155.html" title="Manage a thread&#45;safe stack of objects through reference pointers." alt="" coords="217,432,303,461"/><area shape="rect" id="node7" href="a00035.html" title="A templated typed class for buffering of objects." alt="" coords="399,5,537,35"/><area shape="rect" id="node11" href="a00042.html" title="An optimized and convertable shared lock." alt="" coords="392,59,544,88"/><area shape="rect" id="node13" href="a00115.html" title="A generic and portable implimentation of Read/Write locking." alt="" coords="423,112,513,141"/><area shape="rect" id="node15" href="a00141.html" title="The shared pointer is used to manage a singleton instance of shared object." alt="" coords="397,165,539,195"/><area shape="rect" id="node17" href="a00138.html" title="Templated shared pointer for singleton shared objects of specific type." alt="" coords="593,165,777,195"/><area shape="rect" id="node21" href="a00110.html" title="A templated typed class for thread&#45;safe queue of object pointers." alt="" coords="397,219,539,248"/><area shape="rect" id="node25" href="a00018.html" title="An array of reusable objects." alt="" coords="407,272,529,301"/><area shape="rect" id="node29" href="a00079.html" title="Map a reusable allocator over a named shared memory segment." alt="" coords="397,325,539,355"/><area shape="rect" id="node33" href="a00105.html" title="A mempager source of reusable objects." alt="" coords="405,379,531,408"/><area shape="rect" id="node27" href="a00017.html" title="An array of reusable types." alt="" coords="603,272,768,301"/><area shape="rect" id="node31" href="a00076.html" title="Template class to map typed resusble objects into shared memory heap." alt="" coords="593,325,777,355"/><area shape="rect" id="node35" href="a00101.html" title="A reusable private pool of reusable types." alt="" coords="600,379,771,408"/><area shape="rect" id="node43" href="a00156.html" title="A templated typed class for thread&#45;safe stack of object pointers." alt="" coords="401,432,535,461"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#aff4c078d6e84e0c273eb321e3c5d0cd6">gettimeout</a> (<a class="el" href="a00201.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout, struct timespec *hires)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a millisecond timeout into use for high resolution conditional timers.  <a href="#aff4c078d6e84e0c273eb321e3c5d0cd6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static pthread_condattr_t *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a5428adf9d78903d78d4163d05aa93681">initializer</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Support function for getting conditional attributes for realtime scheduling.  <a href="#a5428adf9d78903d78d4163d05aa93681"></a><br/></td></tr>
<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24b66cad805b3c511d6208c25c740212"></a><!-- doxytag: member="ucc::Conditional::broadcast" ref="a24b66cad805b3c511d6208c25c740212" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a24b66cad805b3c511d6208c25c740212">broadcast</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Signal the conditional to release all waiting threads. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac45bacdcba7952650e2e60b92bb8e591"></a><!-- doxytag: member="ucc::Conditional::Conditional" ref="ac45bacdcba7952650e2e60b92bb8e591" args="()" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#ac45bacdcba7952650e2e60b92bb8e591">Conditional</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize and construct conditional. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c0de58a83ec8e45fc8c1fdff0fc488b"></a><!-- doxytag: member="ucc::Conditional::lock" ref="a0c0de58a83ec8e45fc8c1fdff0fc488b" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a0c0de58a83ec8e45fc8c1fdff0fc488b">lock</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lock the conditional's supporting mutex. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acfa7200ea5fcd5ddaef196c5ab98d0be"></a><!-- doxytag: member="ucc::Conditional::signal" ref="acfa7200ea5fcd5ddaef196c5ab98d0be" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#acfa7200ea5fcd5ddaef196c5ab98d0be">signal</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Signal the conditional to release one waiting thread. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a919ca7b3262f5da264d8398bae7e839a"></a><!-- doxytag: member="ucc::Conditional::unlock" ref="a919ca7b3262f5da264d8398bae7e839a" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a919ca7b3262f5da264d8398bae7e839a">unlock</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unlock the conditional's supporting mutex. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e3df297dbc742f3180bfe8862d166a3"></a><!-- doxytag: member="ucc::Conditional::wait" ref="a6e3df297dbc742f3180bfe8862d166a3" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a6e3df297dbc742f3180bfe8862d166a3">wait</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wait (block) until signalled. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a9698e13d69348e17f8e744c25b7be0fa">wait</a> (struct timespec *timeout)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="a00040.html" title="The conditional is a common base for other thread synchronizing classes.">Conditional</a> wait for signal on timespec timeout.  <a href="#a9698e13d69348e17f8e744c25b7be0fa"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a3f860e115dfe20ff91c89eaa0db4115d">wait</a> (<a class="el" href="a00201.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="a00040.html" title="The conditional is a common base for other thread synchronizing classes.">Conditional</a> wait for signal on millisecond timeout.  <a href="#a3f860e115dfe20ff91c89eaa0db4115d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e6b5cbe36b6ab25e0532618966436e6"></a><!-- doxytag: member="ucc::Conditional::~Conditional" ref="a1e6b5cbe36b6ab25e0532618966436e6" args="()" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#a1e6b5cbe36b6ab25e0532618966436e6">~Conditional</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy conditional, release any blocked threads. <br/></td></tr>
<tr><td colspan="2"><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d41133ad1245e77ceac163329c024f6"></a><!-- doxytag: member="ucc::Conditional::ConditionalAccess" ref="a8d41133ad1245e77ceac163329c024f6" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>ConditionalAccess</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e2baa3e939d2a97c38571681903fb98"></a><!-- doxytag: member="ucc::Conditional::TimedEvent" ref="a0e2baa3e939d2a97c38571681903fb98" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>TimedEvent</b></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>The conditional is a common base for other thread synchronizing classes. </p>
<p>Many of the complex sychronization objects, including barriers, semaphores, and various forms of read/write locks are all built from the conditional. This assures that the minimum functionality to build higher order thread synchronizing objects is a pure conditional, and removes dependencies on what may be optional features or functions that may have different behaviors on different pthread implimentations and platforms. </p>
<dl class="author"><dt><b>Author:</b></dt><dd>David Sugar &lt;<a href="mailto:dyfet@gnutelephony.org">dyfet@gnutelephony.org</a>&gt; </dd></dl>

<p>Definition at line <a class="el" href="a00208_source.html#l00086">86</a> of file <a class="el" href="a00208_source.html">thread.h</a>.</p>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="aff4c078d6e84e0c273eb321e3c5d0cd6"></a><!-- doxytag: member="ucc::Conditional::gettimeout" ref="aff4c078d6e84e0c273eb321e3c5d0cd6" args="(timeout_t timeout, struct timespec *hires)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucc::Conditional::gettimeout </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00201.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>&nbsp;</td>
          <td class="paramname"> <em>timeout</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct timespec *&nbsp;</td>
          <td class="paramname"> <em>hires</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert a millisecond timeout into use for high resolution conditional timers. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>to convert. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>hires</em>&nbsp;</td><td>timespec representation to fill. </td></tr>
  </table>
  </dd>
</dl>

<p>Reimplemented in <a class="el" href="a00041.html#a0312dd3986d22cbba971f0e265f43206">ucc::ConditionalAccess</a>.</p>

</div>
</div>
<a class="anchor" id="a5428adf9d78903d78d4163d05aa93681"></a><!-- doxytag: member="ucc::Conditional::initializer" ref="a5428adf9d78903d78d4163d05aa93681" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static pthread_condattr_t* ucc::Conditional::initializer </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Support function for getting conditional attributes for realtime scheduling. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>attributes to use for creating realtime conditionals. </dd></dl>

<p>Definition at line <a class="el" href="a00208_source.html#l00190">190</a> of file <a class="el" href="a00208_source.html">thread.h</a>.</p>

</div>
</div>
<a class="anchor" id="a9698e13d69348e17f8e744c25b7be0fa"></a><!-- doxytag: member="ucc::Conditional::wait" ref="a9698e13d69348e17f8e744c25b7be0fa" args="(struct timespec *timeout)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucc::Conditional::wait </td>
          <td>(</td>
          <td class="paramtype">struct timespec *&nbsp;</td>
          <td class="paramname"> <em>timeout</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="a00040.html" title="The conditional is a common base for other thread synchronizing classes.">Conditional</a> wait for signal on timespec timeout. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>as a high resolution timespec. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if signalled, false if timer expired. </dd></dl>

</div>
</div>
<a class="anchor" id="a3f860e115dfe20ff91c89eaa0db4115d"></a><!-- doxytag: member="ucc::Conditional::wait" ref="a3f860e115dfe20ff91c89eaa0db4115d" args="(timeout_t timeout)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucc::Conditional::wait </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00201.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>&nbsp;</td>
          <td class="paramname"> <em>timeout</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="a00040.html" title="The conditional is a common base for other thread synchronizing classes.">Conditional</a> wait for signal on millisecond timeout. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>in milliseconds. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if signalled, false if timer expired. </dd></dl>

<p>Reimplemented in <a class="el" href="a00032.html#afa3a86dd56317a9f602fa62f15fbf958">ucc::barrier</a>, and <a class="el" href="a00132.html#a82518fcd87edc0f6610ac59cbd8c8dbc">ucc::semaphore</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>ucommon/<a class="el" href="a00208_source.html">thread.h</a></li>
</ul>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Tue Jul 6 08:22:27 2010 for UCommon by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>