275 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
			
		
		
	
	
			275 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
| <!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>File Index</title>
 | |
|     <link href="doxygen.css" rel="stylesheet" type="text/css">
 | |
|   </head>
 | |
|   <body>
 | |
| <!-- Generated by Doxygen 1.3.4 -->
 | |
| <div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="classes.html">Alphabetical List</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="globals.html">Globals</a></div>
 | |
| <h1>dmxstat.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
 | |
| <code>#include "<a class="el" href="dmxstat_8h-source.html">dmxstat.h</a>"</code><br>
 | |
| <code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
 | |
| <code>#include "Xos.h"</code><br>
 | |
| <table border=0 cellpadding=0 cellspacing=0>
 | |
| <tr><td></td></tr>
 | |
| <tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
 | |
| <tr><td class="memItemLeft" nowrap align=right valign=top>struct  </td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXStatAvg.html">_DMXStatAvg</a></td></tr>
 | |
| 
 | |
| <tr><td class="memItemLeft" nowrap align=right valign=top>struct  </td><td class="memItemRight" valign=bottom><a class="el" href="struct__DMXStatInfo.html">_DMXStatInfo</a></td></tr>
 | |
| 
 | |
| <tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
 | |
| <tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="struct__DMXStatAvg.html">_DMXStatAvg</a> </td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8c.html#a0">DMXStatAvg</a></td></tr>
 | |
| 
 | |
| <tr><td colspan=2><br><h2>Functions</h2></td></tr>
 | |
| <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8c.html#a6">dmxStatActivate</a> (const  char *interval, const  char *displays)</td></tr>
 | |
| 
 | |
| <tr><td class="memItemLeft" nowrap 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#a7">dmxStatAlloc</a> (void)</td></tr>
 | |
| 
 | |
| <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8c.html#a8">dmxStatFree</a> (<a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a> *pt)</td></tr>
 | |
| 
 | |
| <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8c.html#a10">dmxStatSync</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, struct timeval *stop, struct timeval *start, unsigned long pending)</td></tr>
 | |
| 
 | |
| <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8c.html#a12">dmxStatInit</a> (void)</td></tr>
 | |
| 
 | |
| <tr><td colspan=2><br><h2>Variables</h2></td></tr>
 | |
| <tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="dmxstat_8c.html#a1">dmxStatInterval</a></td></tr>
 | |
| 
 | |
| </table>
 | |
| <hr><a name="_details"></a><h2>Detailed Description</h2>
 | |
| The DMX server code is written to call <a class="el" href="dmxsync_8c.html#a9">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 #dmxsync.c. 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.<hr><h2>Typedef Documentation</h2>
 | |
| <a class="anchor" name="a0" doxytag="dmxstat.c::DMXStatAvg" ></a><p>
 | |
| <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
 | |
|   <tr>
 | |
|     <td class="mdRow">
 | |
|       <table cellpadding="0" cellspacing="0" border="0">
 | |
|         <tr>
 | |
|           <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__DMXStatAvg.html">_DMXStatAvg</a>  <a class="el" href="struct__DMXStatAvg.html">DMXStatAvg</a>
 | |
|       </table>
 | |
|     </td>
 | |
|   </tr>
 | |
| </table>
 | |
| <table cellspacing=5 cellpadding=0 border=0>
 | |
|   <tr>
 | |
|     <td>
 | |
|        
 | |
|     </td>
 | |
|     <td>
 | |
| 
 | |
| <p>
 | |
| Used to compute a running average of value.     </td>
 | |
|   </tr>
 | |
| </table>
 | |
| <hr><h2>Function Documentation</h2>
 | |
| <a class="anchor" name="a6" doxytag="dmxstat.c::dmxStatActivate" ></a><p>
 | |
| <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
 | |
|   <tr>
 | |
|     <td class="mdRow">
 | |
|       <table cellpadding="0" cellspacing="0" border="0">
 | |
|         <tr>
 | |
|           <td class="md" nowrap valign="top"> void dmxStatActivate </td>
 | |
|           <td class="md" valign="top">( </td>
 | |
|           <td class="md" nowrap valign="top">const char * </td>
 | |
|           <td class="mdname" nowrap> <em>interval</em>, </td>
 | |
|         </tr>
 | |
|         <tr>
 | |
|           <td></td>
 | |
|           <td></td>
 | |
|           <td class="md" nowrap>const char * </td>
 | |
|           <td class="mdname" nowrap> <em>displays</em></td>
 | |
|         </tr>
 | |
|         <tr>
 | |
|           <td></td>
 | |
|           <td class="md">) </td>
 | |
|           <td class="md" colspan="2"></td>
 | |
|         </tr>
 | |
| 
 | |
|       </table>
 | |
|     </td>
 | |
|   </tr>
 | |
| </table>
 | |
| <table cellspacing=5 cellpadding=0 border=0>
 | |
|   <tr>
 | |
|     <td>
 | |
|        
 | |
|     </td>
 | |
|     <td>
 | |
| 
 | |
| <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#a40">ddxProcessArgument</a> in #dmxinit.c.     </td>
 | |
|   </tr>
 | |
| </table>
 | |
| <a class="anchor" name="a7" doxytag="dmxstat.c::dmxStatAlloc" ></a><p>
 | |
| <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
 | |
|   <tr>
 | |
|     <td class="mdRow">
 | |
|       <table cellpadding="0" cellspacing="0" border="0">
 | |
|         <tr>
 | |
|           <td class="md" nowrap valign="top"> <a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a>* dmxStatAlloc </td>
 | |
|           <td class="md" valign="top">( </td>
 | |
|           <td class="md" nowrap valign="top">void </td>
 | |
|           <td class="mdname1" valign="top" nowrap>          </td>
 | |
|           <td class="md" valign="top"> ) </td>
 | |
|           <td class="md" nowrap></td>
 | |
|         </tr>
 | |
| 
 | |
|       </table>
 | |
|     </td>
 | |
|   </tr>
 | |
| </table>
 | |
| <table cellspacing=5 cellpadding=0 border=0>
 | |
|   <tr>
 | |
|     <td>
 | |
|        
 | |
|     </td>
 | |
|     <td>
 | |
| 
 | |
| <p>
 | |
| Allocate a <em>DMXStatInfo</em> structure.     </td>
 | |
|   </tr>
 | |
| </table>
 | |
| <a class="anchor" name="a8" doxytag="dmxstat.c::dmxStatFree" ></a><p>
 | |
| <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
 | |
|   <tr>
 | |
|     <td class="mdRow">
 | |
|       <table cellpadding="0" cellspacing="0" border="0">
 | |
|         <tr>
 | |
|           <td class="md" nowrap valign="top"> void dmxStatFree </td>
 | |
|           <td class="md" valign="top">( </td>
 | |
|           <td class="md" nowrap valign="top"><a class="el" href="struct__DMXStatInfo.html">DMXStatInfo</a> * </td>
 | |
|           <td class="mdname1" valign="top" nowrap> <em>pt</em>          </td>
 | |
|           <td class="md" valign="top"> ) </td>
 | |
|           <td class="md" nowrap></td>
 | |
|         </tr>
 | |
| 
 | |
|       </table>
 | |
|     </td>
 | |
|   </tr>
 | |
| </table>
 | |
| <table cellspacing=5 cellpadding=0 border=0>
 | |
|   <tr>
 | |
|     <td>
 | |
|        
 | |
|     </td>
 | |
|     <td>
 | |
| 
 | |
| <p>
 | |
| Free the memory used by a <em>DMXStatInfo</em> structure.     </td>
 | |
|   </tr>
 | |
| </table>
 | |
| <a class="anchor" name="a12" doxytag="dmxstat.c::dmxStatInit" ></a><p>
 | |
| <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
 | |
|   <tr>
 | |
|     <td class="mdRow">
 | |
|       <table cellpadding="0" cellspacing="0" border="0">
 | |
|         <tr>
 | |
|           <td class="md" nowrap valign="top"> void dmxStatInit </td>
 | |
|           <td class="md" valign="top">( </td>
 | |
|           <td class="md" nowrap valign="top">void </td>
 | |
|           <td class="mdname1" valign="top" nowrap>          </td>
 | |
|           <td class="md" valign="top"> ) </td>
 | |
|           <td class="md" nowrap></td>
 | |
|         </tr>
 | |
| 
 | |
|       </table>
 | |
|     </td>
 | |
|   </tr>
 | |
| </table>
 | |
| <table cellspacing=5 cellpadding=0 border=0>
 | |
|   <tr>
 | |
|     <td>
 | |
|        
 | |
|     </td>
 | |
|     <td>
 | |
| 
 | |
| <p>
 | |
| Try to initialize the statistic gathering and printing routines. Initialization only takes place if <a class="el" href="dmxstat_8h.html#a6">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.     </td>
 | |
|   </tr>
 | |
| </table>
 | |
| <a class="anchor" name="a10" doxytag="dmxstat.c::dmxStatSync" ></a><p>
 | |
| <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
 | |
|   <tr>
 | |
|     <td class="mdRow">
 | |
|       <table cellpadding="0" cellspacing="0" border="0">
 | |
|         <tr>
 | |
|           <td class="md" nowrap valign="top"> void dmxStatSync </td>
 | |
|           <td class="md" valign="top">( </td>
 | |
|           <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> * </td>
 | |
|           <td class="mdname" nowrap> <em>dmxScreen</em>, </td>
 | |
|         </tr>
 | |
|         <tr>
 | |
|           <td></td>
 | |
|           <td></td>
 | |
|           <td class="md" nowrap>struct timeval * </td>
 | |
|           <td class="mdname" nowrap> <em>stop</em>, </td>
 | |
|         </tr>
 | |
|         <tr>
 | |
|           <td></td>
 | |
|           <td></td>
 | |
|           <td class="md" nowrap>struct timeval * </td>
 | |
|           <td class="mdname" nowrap> <em>start</em>, </td>
 | |
|         </tr>
 | |
|         <tr>
 | |
|           <td></td>
 | |
|           <td></td>
 | |
|           <td class="md" nowrap>unsigned long </td>
 | |
|           <td class="mdname" nowrap> <em>pending</em></td>
 | |
|         </tr>
 | |
|         <tr>
 | |
|           <td></td>
 | |
|           <td class="md">) </td>
 | |
|           <td class="md" colspan="2"></td>
 | |
|         </tr>
 | |
| 
 | |
|       </table>
 | |
|     </td>
 | |
|   </tr>
 | |
| </table>
 | |
| <table cellspacing=5 cellpadding=0 border=0>
 | |
|   <tr>
 | |
|     <td>
 | |
|        
 | |
|     </td>
 | |
|     <td>
 | |
| 
 | |
| <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 #dmxDoSync in #dmxsync.c     </td>
 | |
|   </tr>
 | |
| </table>
 | |
| <hr><h2>Variable Documentation</h2>
 | |
| <a class="anchor" name="a1" doxytag="dmxstat.c::dmxStatInterval" ></a><p>
 | |
| <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
 | |
|   <tr>
 | |
|     <td class="mdRow">
 | |
|       <table cellpadding="0" cellspacing="0" border="0">
 | |
|         <tr>
 | |
|           <td class="md" nowrap valign="top"> int <a class="el" href="dmxstat_8h.html#a5">dmxStatInterval</a>
 | |
|       </table>
 | |
|     </td>
 | |
|   </tr>
 | |
| </table>
 | |
| <table cellspacing=5 cellpadding=0 border=0>
 | |
|   <tr>
 | |
|     <td>
 | |
|        
 | |
|     </td>
 | |
|     <td>
 | |
| 
 | |
| <p>
 | |
| Only for <a class="el" href="dmxstat_8c.html">dmxstat.c</a> and <a class="el" href="dmxsync_8c.html">dmxsync.c</a>     </td>
 | |
|   </tr>
 | |
| </table>
 | |
|     <hr>
 | |
|     <address>
 | |
|       <small>
 | |
|         Generated June 29, 2004 for <a
 | |
|         href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
 | |
|         <a href="http://www.doxygen.org/index.html">doxygen</a>
 | |
|         1.3.4.
 | |
|       </small>
 | |
|     </addres>
 | |
|     </hr>
 | |
|   </body>
 | |
| </html>
 |