<!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>pcsc-lite: eventhandler.c File 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.7.3 --> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">pcsc-lite <span id="projectnumber">1.7.2</span></div> </td> </tr> </tbody> </table> </div> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_7a4553ee0c3b13d0e595a5d1659110a6.html">src</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#func-members">Functions</a> | <a href="#var-members">Variables</a> </div> <div class="headertitle"> <h1>eventhandler.c File Reference</h1> </div> </div> <div class="contents"> <p>This keeps track of card insertion/removal events and updates ATR, protocol, and status information. <a href="#_details">More...</a></p> <div class="textblock"><code>#include "config.h"</code><br/> <code>#include <sys/types.h></code><br/> <code>#include <sys/stat.h></code><br/> <code>#include <errno.h></code><br/> <code>#include <fcntl.h></code><br/> <code>#include <string.h></code><br/> <code>#include <stdlib.h></code><br/> <code>#include <pthread.h></code><br/> <code>#include "misc.h"</code><br/> <code>#include "<a class="el" href="pcscd_8h_source.html">pcscd.h</a>"</code><br/> <code>#include "debuglog.h"</code><br/> <code>#include "<a class="el" href="readerfactory_8h_source.html">readerfactory.h</a>"</code><br/> <code>#include "<a class="el" href="eventhandler_8h_source.html">eventhandler.h</a>"</code><br/> <code>#include "<a class="el" href="dyn__generic_8h_source.html">dyn_generic.h</a>"</code><br/> <code>#include "<a class="el" href="sys__generic_8h_source.html">sys_generic.h</a>"</code><br/> <code>#include "<a class="el" href="ifdwrapper_8h_source.html">ifdwrapper.h</a>"</code><br/> <code>#include "<a class="el" href="prothandler_8h_source.html">prothandler.h</a>"</code><br/> <code>#include "<a class="el" href="strlcpycat_8h_source.html">strlcpycat.h</a>"</code><br/> <code>#include "utils.h"</code><br/> <code>#include "<a class="el" href="winscard__svc_8h_source.html">winscard_svc.h</a>"</code><br/> <code>#include "simclist.h"</code><br/> </div><div class="textblock"><div class="dynheader"> Include dependency graph for eventhandler.c:</div> <div class="dyncontent"> <div class="center"><img src="eventhandler_8c__incl.png" border="0" usemap="#eventhandler_8c" alt=""/></div> <map name="eventhandler_8c" id="eventhandler_8c"> <area shape="rect" id="node19" href="misc_8h_source.html" title="misc.h" alt="" coords="1077,83,1139,112"/><area shape="rect" id="node21" href="pcscd_8h.html" title="This keeps a list of defines for pcsc-lite." alt="" coords="611,237,677,267"/><area shape="rect" id="node25" href="readerfactory_8h.html" title="This keeps track of a list of currently available reader structures." alt="" coords="408,160,517,189"/><area shape="rect" id="node33" href="simclist_8h_source.html" title="simclist.h" alt="" coords="248,237,325,267"/><area shape="rect" id="node38" href="eventhandler_8h.html" title="This handles card insertion/removal events, updates ATR, protocol, and status information." alt="" coords="1272,83,1379,112"/><area shape="rect" id="node42" href="dyn__generic_8h.html" title="This abstracts dynamic library loading functions." alt="" coords="1403,83,1504,112"/><area shape="rect" id="node44" href="sys__generic_8h.html" title="This handles abstract system level calls." alt="" coords="693,83,795,112"/><area shape="rect" id="node49" href="ifdwrapper_8h.html" title="This wraps the dynamic ifdhandler functions." alt="" coords="1528,83,1621,112"/><area shape="rect" id="node51" href="prothandler_8h.html" title="This handles protocol defaults, PTS, etc." alt="" coords="1645,83,1741,112"/><area shape="rect" id="node53" href="strlcpycat_8h.html" title="prototypes of strlcpy()/strlcat() imported from OpenBSD" alt="" coords="1765,83,1856,112"/><area shape="rect" id="node55" href="utils_8h_source.html" title="utils.h" alt="" coords="269,83,325,112"/><area shape="rect" id="node61" href="winscard__svc_8h.html" title="This demarshalls functions over the message queue and keeps track of clients and their handles..." alt="" coords="1880,83,1992,112"/></map> </div> </div> <p><a href="eventhandler_8c_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="func-members"></a> Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9678e82f081429fffb1a5359b747c8cf"></a><!-- doxytag: member="eventhandler.c::EHStatusHandlerThread" ref="a9678e82f081429fffb1a5359b747c8cf" args="(READER_CONTEXT *)" --> static void </td><td class="memItemRight" valign="bottom"><b>EHStatusHandlerThread</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adb9062cbc4606269cc4ee80a190e6a7c"></a><!-- doxytag: member="eventhandler.c::EHRegisterClientForEvent" ref="adb9062cbc4606269cc4ee80a190e6a7c" args="(int32_t filedes)" --> LONG </td><td class="memItemRight" valign="bottom"><b>EHRegisterClientForEvent</b> (int32_t filedes)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37ebfbc3287ee2ea69a60e87fead19e4"></a><!-- doxytag: member="eventhandler.c::EHTryToUnregisterClientForEvent" ref="a37ebfbc3287ee2ea69a60e87fead19e4" args="(int32_t filedes)" --> LONG </td><td class="memItemRight" valign="bottom"><a class="el" href="eventhandler_8c.html#a37ebfbc3287ee2ea69a60e87fead19e4">EHTryToUnregisterClientForEvent</a> (int32_t filedes)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Try to unregisted a client If no client is found then do not log an error. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1391089c844599baf0cb4c95f8b0f75"></a><!-- doxytag: member="eventhandler.c::EHUnregisterClientForEvent" ref="aa1391089c844599baf0cb4c95f8b0f75" args="(int32_t filedes)" --> LONG </td><td class="memItemRight" valign="bottom"><a class="el" href="eventhandler_8c.html#aa1391089c844599baf0cb4c95f8b0f75">EHUnregisterClientForEvent</a> (int32_t filedes)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Unregister a client and log an error if the client is not found. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af758bdf0f8f42781f0b24a042fda65c9"></a><!-- doxytag: member="eventhandler.c::EHSignalEventToClients" ref="af758bdf0f8f42781f0b24a042fda65c9" args="(void)" --> LONG </td><td class="memItemRight" valign="bottom"><a class="el" href="eventhandler_8c.html#af758bdf0f8f42781f0b24a042fda65c9">EHSignalEventToClients</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sends an asynchronous event to any waiting client. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7099b1830dee344217729a286968252"></a><!-- doxytag: member="eventhandler.c::EHInitializeEventStructures" ref="aa7099b1830dee344217729a286968252" args="(void)" --> LONG </td><td class="memItemRight" valign="bottom"><b>EHInitializeEventStructures</b> (void)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9d466066c2b259cb542f2a0bed95216a"></a><!-- doxytag: member="eventhandler.c::EHDestroyEventHandler" ref="a9d466066c2b259cb542f2a0bed95216a" args="(READER_CONTEXT *rContext)" --> LONG </td><td class="memItemRight" valign="bottom"><b>EHDestroyEventHandler</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ff3f91edfe6032ad48c462c96a117d7"></a><!-- doxytag: member="eventhandler.c::EHSpawnEventHandler" ref="a7ff3f91edfe6032ad48c462c96a117d7" args="(READER_CONTEXT *rContext)" --> LONG </td><td class="memItemRight" valign="bottom"><b>EHSpawnEventHandler</b> (<a class="el" href="structReaderContext.html">READER_CONTEXT</a> *rContext)</td></tr> <tr><td colspan="2"><h2><a name="var-members"></a> Variables</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a337175c6345dfa8f40f0d459c50664b8"></a><!-- doxytag: member="eventhandler.c::ClientsWaitingForEvent" ref="a337175c6345dfa8f40f0d459c50664b8" args="" --> static <a class="el" href="structlist__t.html">list_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="eventhandler_8c.html#a337175c6345dfa8f40f0d459c50664b8">ClientsWaitingForEvent</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">list of client file descriptors <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70bd81b80fa11826029c70144319f869"></a><!-- doxytag: member="eventhandler.c::ClientsWaitingForEvent_lock" ref="a70bd81b80fa11826029c70144319f869" args="" --> pthread_mutex_t </td><td class="memItemRight" valign="bottom"><a class="el" href="eventhandler_8c.html#a70bd81b80fa11826029c70144319f869">ClientsWaitingForEvent_lock</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">lock for the above list <br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <div class="textblock"><p>This keeps track of card insertion/removal events and updates ATR, protocol, and status information. </p> <p>Definition in file <a class="el" href="eventhandler_8c_source.html">eventhandler.c</a>.</p> </div></div> <hr class="footer"/><address class="footer"><small>Generated on Thu Mar 31 2011 for pcsc-lite by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address> </body> </html>