1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 2<html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> 5 <title>File Index</title> 6 <link href="doxygen.css" rel="stylesheet" type="text/css"> 7 </head> 8 <body> 9<!-- Generated by Doxygen 1.7.4 --> 10 <div id="navrow1" class="tabs"> 11 <ul class="tablist"> 12 <li><a href="index.html"><span>Main Page</span></a></li> 13 <li><a href="annotated.html"><span>Data Structures</span></a></li> 14 <li class="current"><a href="files.html"><span>Files</span></a></li> 15 </ul> 16 </div> 17 <div id="navrow2" class="tabs2"> 18 <ul class="tablist"> 19 <li><a href="files.html"><span>File List</span></a></li> 20 <li><a href="globals.html"><span>Globals</span></a></li> 21 </ul> 22 </div> 23</div> 24<div id="side-nav" class="ui-resizable side-nav-resizable"> 25 <div id="nav-tree"> 26 <div id="nav-tree-contents"> 27 </div> 28 </div> 29 <div id="splitbar" style="-moz-user-select:none;" 30 class="ui-resizable-handle"> 31 </div> 32</div> 33<script type="text/javascript"> 34 initNavTree('dmxstat_8c.html',''); 35</script> 36<div id="doc-content"> 37<div class="header"> 38 <div class="summary"> 39<a href="#nested-classes">Data Structures</a> | 40<a href="#typedef-members">Typedefs</a> | 41<a href="#func-members">Functions</a> | 42<a href="#var-members">Variables</a> </div> 43 <div class="headertitle"> 44<div class="title">dmxstat.c File Reference</div> </div> 45</div> 46<div class="contents"> 47<div class="textblock"><code>#include "<a class="el" href="dmx_8h_source.html">dmx.h</a>"</code><br/> 48<code>#include "<a class="el" href="dmxstat_8h_source.html">dmxstat.h</a>"</code><br/> 49<code>#include "<a class="el" href="dmxlog_8h_source.html">dmxlog.h</a>"</code><br/> 50<code>#include <X11/Xos.h></code><br/> 51</div><table class="memberdecls"> 52<tr><td colspan="2"><h2><a name="nested-classes"></a> 53Data Structures</h2></td></tr> 54<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__DMXStatAvg.html">_DMXStatAvg</a></td></tr> 55<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__DMXStatInfo.html">_DMXStatInfo</a></td></tr> 56<tr><td colspan="2"><h2><a name="typedef-members"></a> 57Typedefs</h2></td></tr> 58<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct__DMXStatAvg.html">_DMXStatAvg</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxstat_8c.html#a75a8942c042ee0a2c387e61a28a59b94">DMXStatAvg</a></td></tr> 59<tr><td colspan="2"><h2><a name="func-members"></a> 60Functions</h2></td></tr> 61<tr><td class="memItemLeft" align="right" valign="top">static unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxstat_8c.html#a1a534cc2274afee02c883ac10ea9435f">usec</a> (struct timeval *stop, struct timeval *start)</td></tr> 62<tr><td class="memItemLeft" align="right" valign="top">static unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxstat_8c.html#aeccae65bbc33f6b7717b2dc1a536d3cd">avg</a> (<a class="el" href="struct__DMXStatAvg.html">DMXStatAvg</a> *data, unsigned long *max)</td></tr> 63<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxstat_8c.html#a3d01ce5487317c131c32e31f05489c58">dmxStatActivate</a> (const char *interval, const char *displays)</td></tr> 64<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxstat_8c.html#a5637440dfb18ba8ccf47bde3037d93aa">dmxStatAlloc</a> (void)</td></tr> 65<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxstat_8c.html#a23687b91d203902bb293ba64c391cee4">dmxStatFree</a> (<a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a> *pt)</td></tr> 66<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxstat_8c.html#ab17f1e926473a1df95e781c6c7a8e940">dmxStatValue</a> (<a class="el" href="struct__DMXStatAvg.html">DMXStatAvg</a> *data, unsigned long value)</td></tr> 67<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxstat_8c.html#a1098a195e40df685aaf2fbc238884027">dmxStatSync</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, struct timeval *stop, struct timeval *start, unsigned long pending)</td></tr> 68<tr><td class="memItemLeft" align="right" valign="top">static CARD32 </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxstat_8c.html#a218b57229dca87bd0564671d8f68f15f">dmxStatCallback</a> (OsTimerPtr timer, CARD32 t, pointer arg)</td></tr> 69<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxstat_8c.html#a48ed41878576dd3ff9212deaecb2cc1f">dmxStatInit</a> (void)</td></tr> 70<tr><td colspan="2"><h2><a name="var-members"></a> 71Variables</h2></td></tr> 72<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxstat_8c.html#abe67369da5135f53f058261d3c173927">dmxStatInterval</a></td></tr> 73<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxstat_8c.html#a9994506527c1e7aac2f30d4ed67ea4a5">dmxStatDisplays</a></td></tr> 74<tr><td class="memItemLeft" align="right" valign="top">static OsTimerPtr </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxstat_8c.html#a4b07a4c989d24e5cad8f85a24d24406c">dmxStatTimer</a></td></tr> 75</table> 76<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> 77<div class="textblock"><p>The DMX server code is written to call <a class="el" href="dmxsync_8c.html#ab848762f4d2e30d31b87d3e8e10c5967">dmxSync()</a> whenever an XSync() might be necessary. However, since XSync() requires a two way communication with the other X server, eliminating unnecessary XSync() calls is a key performance optimization. Support for this optimization is provided in <em><a class="el" href="dmxsync_8c.html">dmxsync.c</a></em>. This file provides routines that evaluate this optimization by counting the number of XSync() calls and monitoring their latency. This functionality can be turned on using the -stat command-line parameter. </p> 78</div><hr/><h2>Typedef Documentation</h2> 79<a class="anchor" id="a75a8942c042ee0a2c387e61a28a59b94"></a><!-- doxytag: member="dmxstat.c::DMXStatAvg" ref="a75a8942c042ee0a2c387e61a28a59b94" args="" --> 80<div class="memitem"> 81<div class="memproto"> 82 <table class="memname"> 83 <tr> 84 <td class="memname">typedef struct <a class="el" href="struct__DMXStatAvg.html">_DMXStatAvg</a> <a class="el" href="struct__DMXStatAvg.html">DMXStatAvg</a></td> 85 </tr> 86 </table> 87</div> 88<div class="memdoc"> 89<p>Used to compute a running average of value. </p> 90 91</div> 92</div> 93<hr/><h2>Function Documentation</h2> 94<a class="anchor" id="aeccae65bbc33f6b7717b2dc1a536d3cd"></a><!-- doxytag: member="dmxstat.c::avg" ref="aeccae65bbc33f6b7717b2dc1a536d3cd" args="(DMXStatAvg *data, unsigned long *max)" --> 95<div class="memitem"> 96<div class="memproto"> 97 <table class="memname"> 98 <tr> 99 <td class="memname">static unsigned long avg </td> 100 <td>(</td> 101 <td class="paramtype"><a class="el" href="struct__DMXStatAvg.html">DMXStatAvg</a> * </td> 102 <td class="paramname"><em>data</em>, </td> 103 </tr> 104 <tr> 105 <td class="paramkey"></td> 106 <td></td> 107 <td class="paramtype">unsigned long * </td> 108 <td class="paramname"><em>max</em> </td> 109 </tr> 110 <tr> 111 <td></td> 112 <td>)</td> 113 <td></td><td><code> [static]</code></td> 114 </tr> 115 </table> 116</div> 117<div class="memdoc"> 118 119<p>References <a class="el" href="struct__DMXStatAvg.html#a361c10829231fd6805e59232321de2fe">_DMXStatAvg::count</a>, and <a class="el" href="struct__DMXStatAvg.html#a621cad02496227c50cc76aca84037b47">_DMXStatAvg::value</a>.</p> 120 121<p>Referenced by <a class="el" href="dmxstat_8c.html#a218b57229dca87bd0564671d8f68f15f">dmxStatCallback()</a>.</p> 122 123</div> 124</div> 125<a class="anchor" id="a3d01ce5487317c131c32e31f05489c58"></a><!-- doxytag: member="dmxstat.c::dmxStatActivate" ref="a3d01ce5487317c131c32e31f05489c58" args="(const char *interval, const char *displays)" --> 126<div class="memitem"> 127<div class="memproto"> 128 <table class="memname"> 129 <tr> 130 <td class="memname">void dmxStatActivate </td> 131 <td>(</td> 132 <td class="paramtype">const char * </td> 133 <td class="paramname"><em>interval</em>, </td> 134 </tr> 135 <tr> 136 <td class="paramkey"></td> 137 <td></td> 138 <td class="paramtype">const char * </td> 139 <td class="paramname"><em>displays</em> </td> 140 </tr> 141 <tr> 142 <td></td> 143 <td>)</td> 144 <td></td><td></td> 145 </tr> 146 </table> 147</div> 148<div class="memdoc"> 149<p>Turn on XSync statistic gathering and printing. Print every <em>interval</em> seconds, with lines for the first <em>displays</em>. If <em>interval</em> is NULL, 1 will be used. If <em>displays</em> is NULL, 0 will be used (meaning a line for every display will be printed). Note that this function takes string arguments because it will usually be called from <a class="el" href="dmxinit_8c.html#a6ed0a235a6d852bfe0cc0250159a5daf">ddxProcessArgument</a> in <em><a class="el" href="dmxinit_8c.html">dmxinit.c</a></em>. </p> 150 151<p>References <a class="el" href="dmxstat_8c.html#a9994506527c1e7aac2f30d4ed67ea4a5">dmxStatDisplays</a>, and <a class="el" href="dmxstat_8c.html#abe67369da5135f53f058261d3c173927">dmxStatInterval</a>.</p> 152 153<p>Referenced by <a class="el" href="dmxinit_8c.html#a6ed0a235a6d852bfe0cc0250159a5daf">ddxProcessArgument()</a>.</p> 154 155</div> 156</div> 157<a class="anchor" id="a5637440dfb18ba8ccf47bde3037d93aa"></a><!-- doxytag: member="dmxstat.c::dmxStatAlloc" ref="a5637440dfb18ba8ccf47bde3037d93aa" args="(void)" --> 158<div class="memitem"> 159<div class="memproto"> 160 <table class="memname"> 161 <tr> 162 <td class="memname"><a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a>* dmxStatAlloc </td> 163 <td>(</td> 164 <td class="paramtype">void </td> 165 <td class="paramname"></td><td>)</td> 166 <td></td> 167 </tr> 168 </table> 169</div> 170<div class="memdoc"> 171<p>Allocate a <em>DMXStatInfo</em> structure. </p> 172 173<p>Referenced by <a class="el" href="dmxconfig_8c.html#a5fa6729153f7f7e5d3037d451291fa64">dmxConfigAddDisplay()</a>.</p> 174 175</div> 176</div> 177<a class="anchor" id="a218b57229dca87bd0564671d8f68f15f"></a><!-- doxytag: member="dmxstat.c::dmxStatCallback" ref="a218b57229dca87bd0564671d8f68f15f" args="(OsTimerPtr timer, CARD32 t, pointer arg)" --> 178<div class="memitem"> 179<div class="memproto"> 180 <table class="memname"> 181 <tr> 182 <td class="memname">static CARD32 dmxStatCallback </td> 183 <td>(</td> 184 <td class="paramtype">OsTimerPtr </td> 185 <td class="paramname"><em>timer</em>, </td> 186 </tr> 187 <tr> 188 <td class="paramkey"></td> 189 <td></td> 190 <td class="paramtype">CARD32 </td> 191 <td class="paramname"><em>t</em>, </td> 192 </tr> 193 <tr> 194 <td class="paramkey"></td> 195 <td></td> 196 <td class="paramtype">pointer </td> 197 <td class="paramname"><em>arg</em> </td> 198 </tr> 199 <tr> 200 <td></td> 201 <td>)</td> 202 <td></td><td><code> [static]</code></td> 203 </tr> 204 </table> 205</div> 206<div class="memdoc"> 207 208<p>References <a class="el" href="dmxstat_8c.html#aeccae65bbc33f6b7717b2dc1a536d3cd">avg()</a>, <a class="el" href="struct__DMXStatInfo.html#a948f8674bc28129ad022a7678d81b38a">_DMXStatInfo::bins</a>, <a class="el" href="dmxstat_8h.html#aac0caef45e7427ea05d5425da659ac56">DMX_STAT_BINS</a>, <a class="el" href="dmxstat_8h.html#a4cb43c9c7db58a10d8834a6b95a5c180">DMX_STAT_INTERVAL</a>, <a class="el" href="dmxlog_8h.html#aeed612a5c0be196e23bd6b71b76b917fa55e322963608341d32ebb8a0b9d936fe">dmxDebug</a>, <a class="el" href="dmxlog_8c.html#ab6259430a57c3cffdfc9f6259df0ad23">dmxLog()</a>, <a class="el" href="dmxlog_8c.html#a661111d53827a1a15c715b7b32f05a0e">dmxLogCont()</a>, <a class="el" href="dmx_8h.html#a5a881109fe1e32c74cda4a280b09a7c4">dmxNumScreens</a>, <a class="el" href="dmx_8h.html#a3e242a6818df05e547a4776919e3827f">dmxScreens</a>, <a class="el" href="dmxstat_8c.html#a9994506527c1e7aac2f30d4ed67ea4a5">dmxStatDisplays</a>, <a class="el" href="dmxstat_8c.html#abe67369da5135f53f058261d3c173927">dmxStatInterval</a>, <a class="el" href="struct__DMXStatInfo.html#a06c2832f03e95a2139099bbec7bd4794">_DMXStatInfo::oldSyncCount</a>, <a class="el" href="struct__DMXStatInfo.html#a316b8214c93a5762b6dbd06a7617ef3c">_DMXStatInfo::pending</a>, <a class="el" href="struct__DMXScreenInfo.html#a31fd04698ffcb2b53ffee82468cc2862">_DMXScreenInfo::stat</a>, <a class="el" href="struct__DMXStatInfo.html#aa08d83f9455dcc98919fbc0085483aea">_DMXStatInfo::syncCount</a>, and <a class="el" href="struct__DMXStatInfo.html#a4ed02fb0dd6e7e5ac3af88019331a895">_DMXStatInfo::usec</a>.</p> 209 210<p>Referenced by <a class="el" href="dmxstat_8h.html#a48ed41878576dd3ff9212deaecb2cc1f">dmxStatInit()</a>.</p> 211 212</div> 213</div> 214<a class="anchor" id="a23687b91d203902bb293ba64c391cee4"></a><!-- doxytag: member="dmxstat.c::dmxStatFree" ref="a23687b91d203902bb293ba64c391cee4" args="(DMXStatInfo *pt)" --> 215<div class="memitem"> 216<div class="memproto"> 217 <table class="memname"> 218 <tr> 219 <td class="memname">void dmxStatFree </td> 220 <td>(</td> 221 <td class="paramtype"><a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a> * </td> 222 <td class="paramname"><em>pt</em></td><td>)</td> 223 <td></td> 224 </tr> 225 </table> 226</div> 227<div class="memdoc"> 228<p>Free the memory used by a <em>DMXStatInfo</em> structure. </p> 229 230<p>Referenced by <a class="el" href="dmxinit_8c.html#a51c195c51f4f09e981384a4215f82321">InitOutput()</a>.</p> 231 232</div> 233</div> 234<a class="anchor" id="a48ed41878576dd3ff9212deaecb2cc1f"></a><!-- doxytag: member="dmxstat.c::dmxStatInit" ref="a48ed41878576dd3ff9212deaecb2cc1f" args="(void)" --> 235<div class="memitem"> 236<div class="memproto"> 237 <table class="memname"> 238 <tr> 239 <td class="memname">void dmxStatInit </td> 240 <td>(</td> 241 <td class="paramtype">void </td> 242 <td class="paramname"></td><td>)</td> 243 <td></td> 244 </tr> 245 </table> 246</div> 247<div class="memdoc"> 248<p>Try to initialize the statistic gathering and printing routines. Initialization only takes place if <a class="el" href="dmxstat_8h.html#a3d01ce5487317c131c32e31f05489c58">dmxStatActivate</a> has already been called. We don't need the same generation protection that we used in dmxSyncInit because our timer is always on a queue -- hence, server generation will always free it. </p> 249 250<p>References <a class="el" href="dmxstat_8c.html#a218b57229dca87bd0564671d8f68f15f">dmxStatCallback()</a>, <a class="el" href="dmxstat_8c.html#abe67369da5135f53f058261d3c173927">dmxStatInterval</a>, and <a class="el" href="dmxstat_8c.html#a4b07a4c989d24e5cad8f85a24d24406c">dmxStatTimer</a>.</p> 251 252<p>Referenced by <a class="el" href="dmxinit_8c.html#a51c195c51f4f09e981384a4215f82321">InitOutput()</a>.</p> 253 254</div> 255</div> 256<a class="anchor" id="a1098a195e40df685aaf2fbc238884027"></a><!-- doxytag: member="dmxstat.c::dmxStatSync" ref="a1098a195e40df685aaf2fbc238884027" args="(DMXScreenInfo *dmxScreen, struct timeval *stop, struct timeval *start, unsigned long pending)" --> 257<div class="memitem"> 258<div class="memproto"> 259 <table class="memname"> 260 <tr> 261 <td class="memname">void dmxStatSync </td> 262 <td>(</td> 263 <td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> * </td> 264 <td class="paramname"><em>dmxScreen</em>, </td> 265 </tr> 266 <tr> 267 <td class="paramkey"></td> 268 <td></td> 269 <td class="paramtype">struct timeval * </td> 270 <td class="paramname"><em>stop</em>, </td> 271 </tr> 272 <tr> 273 <td class="paramkey"></td> 274 <td></td> 275 <td class="paramtype">struct timeval * </td> 276 <td class="paramname"><em>start</em>, </td> 277 </tr> 278 <tr> 279 <td class="paramkey"></td> 280 <td></td> 281 <td class="paramtype">unsigned long </td> 282 <td class="paramname"><em>pending</em> </td> 283 </tr> 284 <tr> 285 <td></td> 286 <td>)</td> 287 <td></td><td></td> 288 </tr> 289 </table> 290</div> 291<div class="memdoc"> 292<p>Note that a XSync() was just done on <em>dmxScreen</em> with the <em>start</em> and <em>stop</em> times (from gettimeofday()) and the number of pending-but-not-yet-processed XSync requests. This routine is called from <a class="el" href="dmxsync_8c.html#a3f47aabdd830525720f7a01acbac91ef">dmxDoSync</a> in <em><a class="el" href="dmxsync_8c.html">dmxsync.c</a></em> </p> 293 294<p>References <a class="el" href="struct__DMXStatInfo.html#a948f8674bc28129ad022a7678d81b38a">_DMXStatInfo::bins</a>, <a class="el" href="dmxstat_8h.html#a8757af3ae82fef58d05e31523454065f">DMX_STAT_BIN0</a>, <a class="el" href="dmxstat_8h.html#a9c3e64f7fc0b5305bb6798b298ae6283">DMX_STAT_BINMULT</a>, <a class="el" href="dmxstat_8h.html#aac0caef45e7427ea05d5425da659ac56">DMX_STAT_BINS</a>, <a class="el" href="dmxstat_8c.html#ab17f1e926473a1df95e781c6c7a8e940">dmxStatValue()</a>, <a class="el" href="struct__DMXStatInfo.html#a316b8214c93a5762b6dbd06a7617ef3c">_DMXStatInfo::pending</a>, <a class="el" href="struct__DMXScreenInfo.html#a31fd04698ffcb2b53ffee82468cc2862">_DMXScreenInfo::stat</a>, <a class="el" href="struct__DMXStatInfo.html#aa08d83f9455dcc98919fbc0085483aea">_DMXStatInfo::syncCount</a>, <a class="el" href="struct__DMXStatInfo.html#a4ed02fb0dd6e7e5ac3af88019331a895">_DMXStatInfo::usec</a>, and <a class="el" href="dmxstat_8c.html#a1a534cc2274afee02c883ac10ea9435f">usec()</a>.</p> 295 296<p>Referenced by <a class="el" href="dmxsync_8c.html#a3f47aabdd830525720f7a01acbac91ef">dmxDoSync()</a>.</p> 297 298</div> 299</div> 300<a class="anchor" id="ab17f1e926473a1df95e781c6c7a8e940"></a><!-- doxytag: member="dmxstat.c::dmxStatValue" ref="ab17f1e926473a1df95e781c6c7a8e940" args="(DMXStatAvg *data, unsigned long value)" --> 301<div class="memitem"> 302<div class="memproto"> 303 <table class="memname"> 304 <tr> 305 <td class="memname">static void dmxStatValue </td> 306 <td>(</td> 307 <td class="paramtype"><a class="el" href="struct__DMXStatAvg.html">DMXStatAvg</a> * </td> 308 <td class="paramname"><em>data</em>, </td> 309 </tr> 310 <tr> 311 <td class="paramkey"></td> 312 <td></td> 313 <td class="paramtype">unsigned long </td> 314 <td class="paramname"><em>value</em> </td> 315 </tr> 316 <tr> 317 <td></td> 318 <td>)</td> 319 <td></td><td><code> [static]</code></td> 320 </tr> 321 </table> 322</div> 323<div class="memdoc"> 324 325<p>References <a class="el" href="struct__DMXStatAvg.html#a361c10829231fd6805e59232321de2fe">_DMXStatAvg::count</a>, <a class="el" href="dmxstat_8h.html#ad38ec0be743fab83c032d231034d4d49">DMX_STAT_LENGTH</a>, <a class="el" href="struct__DMXStatAvg.html#a4ee50be7c55ef55ea0e8ca9edaf2ac52">_DMXStatAvg::pos</a>, and <a class="el" href="struct__DMXStatAvg.html#a621cad02496227c50cc76aca84037b47">_DMXStatAvg::value</a>.</p> 326 327<p>Referenced by <a class="el" href="dmxstat_8h.html#a1098a195e40df685aaf2fbc238884027">dmxStatSync()</a>.</p> 328 329</div> 330</div> 331<a class="anchor" id="a1a534cc2274afee02c883ac10ea9435f"></a><!-- doxytag: member="dmxstat.c::usec" ref="a1a534cc2274afee02c883ac10ea9435f" args="(struct timeval *stop, struct timeval *start)" --> 332<div class="memitem"> 333<div class="memproto"> 334 <table class="memname"> 335 <tr> 336 <td class="memname">static unsigned long usec </td> 337 <td>(</td> 338 <td class="paramtype">struct timeval * </td> 339 <td class="paramname"><em>stop</em>, </td> 340 </tr> 341 <tr> 342 <td class="paramkey"></td> 343 <td></td> 344 <td class="paramtype">struct timeval * </td> 345 <td class="paramname"><em>start</em> </td> 346 </tr> 347 <tr> 348 <td></td> 349 <td>)</td> 350 <td></td><td><code> [static]</code></td> 351 </tr> 352 </table> 353</div> 354<div class="memdoc"> 355<p>Return the number of microseconds as an unsigned long. Unfortunately, this is only useful for intervals < about 4 sec. </p> 356 357<p>Referenced by <a class="el" href="dmxstat_8h.html#a1098a195e40df685aaf2fbc238884027">dmxStatSync()</a>.</p> 358 359</div> 360</div> 361<hr/><h2>Variable Documentation</h2> 362<a class="anchor" id="a9994506527c1e7aac2f30d4ed67ea4a5"></a><!-- doxytag: member="dmxstat.c::dmxStatDisplays" ref="a9994506527c1e7aac2f30d4ed67ea4a5" args="" --> 363<div class="memitem"> 364<div class="memproto"> 365 <table class="memname"> 366 <tr> 367 <td class="memname">int <a class="el" href="dmxstat_8c.html#a9994506527c1e7aac2f30d4ed67ea4a5">dmxStatDisplays</a><code> [static]</code></td> 368 </tr> 369 </table> 370</div> 371<div class="memdoc"> 372 373<p>Referenced by <a class="el" href="dmxstat_8h.html#a3d01ce5487317c131c32e31f05489c58">dmxStatActivate()</a>, and <a class="el" href="dmxstat_8c.html#a218b57229dca87bd0564671d8f68f15f">dmxStatCallback()</a>.</p> 374 375</div> 376</div> 377<a class="anchor" id="abe67369da5135f53f058261d3c173927"></a><!-- doxytag: member="dmxstat.c::dmxStatInterval" ref="abe67369da5135f53f058261d3c173927" args="" --> 378<div class="memitem"> 379<div class="memproto"> 380 <table class="memname"> 381 <tr> 382 <td class="memname">int <a class="el" href="dmxstat_8h.html#abe67369da5135f53f058261d3c173927">dmxStatInterval</a></td> 383 </tr> 384 </table> 385</div> 386<div class="memdoc"> 387<p>Only for <a class="el" href="dmxstat_8c.html">dmxstat.c</a> and <a class="el" href="dmxsync_8c.html">dmxsync.c</a> </p> 388 389<p>Referenced by <a class="el" href="dmxsync_8c.html#a3f47aabdd830525720f7a01acbac91ef">dmxDoSync()</a>, <a class="el" href="dmxstat_8h.html#a3d01ce5487317c131c32e31f05489c58">dmxStatActivate()</a>, <a class="el" href="dmxstat_8c.html#a218b57229dca87bd0564671d8f68f15f">dmxStatCallback()</a>, and <a class="el" href="dmxstat_8h.html#a48ed41878576dd3ff9212deaecb2cc1f">dmxStatInit()</a>.</p> 390 391</div> 392</div> 393<a class="anchor" id="a4b07a4c989d24e5cad8f85a24d24406c"></a><!-- doxytag: member="dmxstat.c::dmxStatTimer" ref="a4b07a4c989d24e5cad8f85a24d24406c" args="" --> 394<div class="memitem"> 395<div class="memproto"> 396 <table class="memname"> 397 <tr> 398 <td class="memname">OsTimerPtr <a class="el" href="dmxstat_8c.html#a4b07a4c989d24e5cad8f85a24d24406c">dmxStatTimer</a><code> [static]</code></td> 399 </tr> 400 </table> 401</div> 402<div class="memdoc"> 403 404<p>Referenced by <a class="el" href="dmxstat_8h.html#a48ed41878576dd3ff9212deaecb2cc1f">dmxStatInit()</a>.</p> 405 406</div> 407</div> 408</div> 409</div> 410 <div id="nav-path" class="navpath"> 411 <ul> 412 <li class="navelem"><a class="el" href="dmxstat_8c.html">dmxstat.c</a> </li> 413 <hr> 414 <address> 415 <small> 416 Generated June 29, 2004 for <a 417 href="http://dmx.sourceforge.net">Distributed Multihead X</a> by 418 <a href="http://www.doxygen.org/index.html">doxygen</a> 419 1.3.4. 420 </small> 421 </addres> 422 </hr> 423 </body> 424</html> 425