<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>rpm: rpmio/rpmsq.c File Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.4.7 --> <div class="tabs"> <ul> <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 id="current"><a href="files.html"><span>Files</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> </ul></div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul></div> <h1>rpmio/rpmsq.c File Reference</h1><code>#include "<a class="el" href="system_8h-source.html">system.h</a>"</code><br> <code>#include <signal.h></code><br> <code>#include <sys/signal.h></code><br> <code>#include <sys/wait.h></code><br> <code>#include <search.h></code><br> <code>#include <<a class="el" href="rpmsq_8h-source.html">rpmsq.h</a>></code><br> <code>#include "<a class="el" href="debug_8h-source.html">debug.h</a>"</code><br> <p> <a href="rpmsq_8c-source.html">Go to the source code of this file.</a><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="structrpmsig__s.html">rpmsig_s</a></td></tr> <tr><td colspan="2"><br><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#707fd6e9d8f797bde46fd679fecc19f2">DO_LOCK</a>()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#0d1939f0946f51ef9c8d4a3ad97935ab">DO_UNLOCK</a>()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#b63be76d0a4a58d53c66c88bd353fe25">INIT_LOCK</a>()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#739f39288cc3c3a4c2896b2c21e3373f">ADD_REF</a>(__tbl) /*@-noeffect@*/ (0)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#0b795c3ba9f19dc35def98757bd7deaa">SUB_REF</a>(__tbl) /*@-noeffect@*/ (0)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#719d9b8f4152d18f88d56908185a5fa1">CLEANUP_HANDLER</a>(__handler, __arg, __oldtypeptr)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#ba43c05e591e8fd1fa2e584f497fba10">CLEANUP_RESET</a>(__execute, __oldtype)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#dd299446148c5913ca3106e598cc616c">SAME_THREAD</a>(_a, _b) (42)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#74eca03bdac8cbf220bddff7e8f32a08">ME</a>() (((void *)getpid()))</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#09b78093bc16360838cf96e991d7ab10">_RPMSQ_DEBUG</a> 0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#cc7097e6c17ba437a98cb41a2004c8ac">rpmsigTbl_sigint</a> (&<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[0])</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#219e372a46ac02f2fafe0389e1ad24f4">rpmsigTbl_sigquit</a> (&<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[1])</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#61adef654384ce04240bd18c08824ab4">rpmsigTbl_sigchld</a> (&<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[2])</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#60661ed766dd0b5df9c569bc78c22652">rpmsigTbl_sighup</a> (&<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[3])</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#f9bf4bdbdb7b80f5ea42d5e5218411f0">rpmsigTbl_sigterm</a> (&<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[4])</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#3e7f9a2e5804101a184339fc3c0dce81">rpmsigTbl_sigpipe</a> (&<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[5])</td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#7689e2d4e7d3ab32987c4c2e7d44b411">rpmsqInsert</a> (void *elem, void *prev)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Insert node into from queue. <a href="#7689e2d4e7d3ab32987c4c2e7d44b411"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#09357ef0a5e5847e29cbe8cc591c79f0">rpmsqRemove</a> (void *elem)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Remove node from queue. <a href="#09357ef0a5e5847e29cbe8cc591c79f0"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#6698fdf84f418b855bf456c27113f5f4">rpmsqAction</a> (int signum, void *info, void *context)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Default signal handler. <a href="#6698fdf84f418b855bf456c27113f5f4"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#d9549ed43cbb708e506288cb1e33d009">rpmsqEnable</a> (int signum, <a class="el" href="rpmsq_8h.html#8053bb3dd637781bf41e5998f74c2c35">rpmsqAction_t</a> handler)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Enable or disable a signal handler. <a href="#d9549ed43cbb708e506288cb1e33d009"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">pid_t </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#b13d7b8025bdd175c80fea8ea9f066fb">rpmsqFork</a> (<a class="el" href="structrpmsqElem.html">rpmsq</a> sq)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Fork a child process. <a href="#b13d7b8025bdd175c80fea8ea9f066fb"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#72785fc54bf96181de5479ad64af0361">rpmsqWaitUnregister</a> (<a class="el" href="structrpmsqElem.html">rpmsq</a> sq)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Wait for child process to be reaped, and unregister SIGCHLD handler. <a href="#72785fc54bf96181de5479ad64af0361"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">pid_t </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#be449b3b92e2c98d46fb4bbc6cefc58e">rpmsqWait</a> (<a class="el" href="structrpmsqElem.html">rpmsq</a> sq)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Wait for child process to be reaped. <a href="#be449b3b92e2c98d46fb4bbc6cefc58e"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#a3aa2ebbfde186cb9c5687bdbeea4ad0">rpmsqThread</a> (void *(*start)(void *arg), void *arg)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Call a function in a thread. <a href="#a3aa2ebbfde186cb9c5687bdbeea4ad0"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#0798a48224425503fe4cb455dd591b26">rpmsqJoin</a> (void *thread)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Wait for thread to terminate. <a href="#0798a48224425503fe4cb455dd591b26"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#bc36f3e56d13f903648624882fc1e983">rpmsqThreadEqual</a> (void *thread)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Compare thread with current thread. <a href="#bc36f3e56d13f903648624882fc1e983"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#48776525a3c41bc7f160fbb20307071f">sigchld_cancel</a> (void *arg)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">SIGCHLD cancellation handler. <a href="#48776525a3c41bc7f160fbb20307071f"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#e221999e9f873dd6c118384fc151716b">rpmsqExecve</a> (const char **<a class="el" href="compress_8c.html#b233d58a2d9af13ae09ea8fd82556856">argv</a>)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Execute a command, returning its status. <a href="#e221999e9f873dd6c118384fc151716b"></a><br></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="rpmsq_8c.html#9a254c1bbc1ff71759916077c8647d4b">_rpmsq_debug</a> = 0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structrpmsqElem.html">rpmsqElem</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#7c3b5b29e03fad6bc03685e6e41726ae">rpmsqRock</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structrpmsqElem.html">rpmsq</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#b06ae8b0c37fcfa0c999b99c0bf4f91e">rpmsqQueue</a> = &<a class="el" href="rpmsq_8c.html#7c3b5b29e03fad6bc03685e6e41726ae">rpmsqRock</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">sigset_t </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#4657013ced6d8faf0f3466badbf13638">rpmsqCaught</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structrpmsig__s.html">rpmsig_s</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a> []</td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> <p> Definition in file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>.<hr><h2>Define Documentation</h2> <a class="anchor" name="09b78093bc16360838cf96e991d7ab10"></a><!-- doxytag: member="rpmsq.c::_RPMSQ_DEBUG" ref="09b78093bc16360838cf96e991d7ab10" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define _RPMSQ_DEBUG 0 </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00187">187</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. </div> </div><p> <a class="anchor" name="739f39288cc3c3a4c2896b2c21e3373f"></a><!-- doxytag: member="rpmsq.c::ADD_REF" ref="739f39288cc3c3a4c2896b2c21e3373f" args="(__tbl)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ADD_REF </td> <td>(</td> <td class="paramtype">__tbl </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> /*@-noeffect@*/ (0)</td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00172">172</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00346">rpmsqEnable()</a>, and <a class="el" href="rpmsq_8c-source.html#l00636">rpmsqExecve()</a>. </div> </div><p> <a class="anchor" name="719d9b8f4152d18f88d56908185a5fa1"></a><!-- doxytag: member="rpmsq.c::CLEANUP_HANDLER" ref="719d9b8f4152d18f88d56908185a5fa1" args="(__handler, __arg, __oldtypeptr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CLEANUP_HANDLER </td> <td>(</td> <td class="paramtype">__handler, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">__arg, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">__oldtypeptr </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00174">174</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00636">rpmsqExecve()</a>. </div> </div><p> <a class="anchor" name="ba43c05e591e8fd1fa2e584f497fba10"></a><!-- doxytag: member="rpmsq.c::CLEANUP_RESET" ref="ba43c05e591e8fd1fa2e584f497fba10" args="(__execute, __oldtype)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CLEANUP_RESET </td> <td>(</td> <td class="paramtype">__execute, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">__oldtype </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00175">175</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00636">rpmsqExecve()</a>. </div> </div><p> <a class="anchor" name="707fd6e9d8f797bde46fd679fecc19f2"></a><!-- doxytag: member="rpmsq.c::DO_LOCK" ref="707fd6e9d8f797bde46fd679fecc19f2" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define DO_LOCK </td> <td>(</td> </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00169">169</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00346">rpmsqEnable()</a>, <a class="el" href="rpmsq_8c-source.html#l00636">rpmsqExecve()</a>, and <a class="el" href="rpmsq_8c-source.html#l00611">sigchld_cancel()</a>. </div> </div><p> <a class="anchor" name="0d1939f0946f51ef9c8d4a3ad97935ab"></a><!-- doxytag: member="rpmsq.c::DO_UNLOCK" ref="0d1939f0946f51ef9c8d4a3ad97935ab" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define DO_UNLOCK </td> <td>(</td> </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00170">170</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00636">rpmsqExecve()</a>, and <a class="el" href="rpmsq_8c-source.html#l00611">sigchld_cancel()</a>. </div> </div><p> <a class="anchor" name="b63be76d0a4a58d53c66c88bd353fe25"></a><!-- doxytag: member="rpmsq.c::INIT_LOCK" ref="b63be76d0a4a58d53c66c88bd353fe25" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define INIT_LOCK </td> <td>(</td> </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00171">171</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00636">rpmsqExecve()</a>. </div> </div><p> <a class="anchor" name="74eca03bdac8cbf220bddff7e8f32a08"></a><!-- doxytag: member="rpmsq.c::ME" ref="74eca03bdac8cbf220bddff7e8f32a08" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ME </td> <td>(</td> </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> (((void *)getpid()))</td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00179">179</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00346">rpmsqEnable()</a>, <a class="el" href="rpmsq_8c-source.html#l00401">rpmsqFork()</a>, <a class="el" href="rpmsq_8c-source.html#l00199">rpmsqInsert()</a>, <a class="el" href="rpmsq_8c-source.html#l00228">rpmsqRemove()</a>, <a class="el" href="rpmsq_8c-source.html#l00551">rpmsqWait()</a>, and <a class="el" href="rpmsq_8c-source.html#l00485">rpmsqWaitUnregister()</a>. </div> </div><p> <a class="anchor" name="61adef654384ce04240bd18c08824ab4"></a><!-- doxytag: member="rpmsq.c::rpmsigTbl_sigchld" ref="61adef654384ce04240bd18c08824ab4" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define rpmsigTbl_sigchld (&<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[2]) </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00636">rpmsqExecve()</a>, and <a class="el" href="rpmsq_8c-source.html#l00611">sigchld_cancel()</a>. </div> </div><p> <a class="anchor" name="60661ed766dd0b5df9c569bc78c22652"></a><!-- doxytag: member="rpmsq.c::rpmsigTbl_sighup" ref="60661ed766dd0b5df9c569bc78c22652" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define rpmsigTbl_sighup (&<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[3]) </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="cc7097e6c17ba437a98cb41a2004c8ac"></a><!-- doxytag: member="rpmsq.c::rpmsigTbl_sigint" ref="cc7097e6c17ba437a98cb41a2004c8ac" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define rpmsigTbl_sigint (&<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[0]) </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00636">rpmsqExecve()</a>. </div> </div><p> <a class="anchor" name="3e7f9a2e5804101a184339fc3c0dce81"></a><!-- doxytag: member="rpmsq.c::rpmsigTbl_sigpipe" ref="3e7f9a2e5804101a184339fc3c0dce81" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define rpmsigTbl_sigpipe (&<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[5]) </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="219e372a46ac02f2fafe0389e1ad24f4"></a><!-- doxytag: member="rpmsq.c::rpmsigTbl_sigquit" ref="219e372a46ac02f2fafe0389e1ad24f4" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define rpmsigTbl_sigquit (&<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[1]) </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00636">rpmsqExecve()</a>. </div> </div><p> <a class="anchor" name="f9bf4bdbdb7b80f5ea42d5e5218411f0"></a><!-- doxytag: member="rpmsq.c::rpmsigTbl_sigterm" ref="f9bf4bdbdb7b80f5ea42d5e5218411f0" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define rpmsigTbl_sigterm (&<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[4]) </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="dd299446148c5913ca3106e598cc616c"></a><!-- doxytag: member="rpmsq.c::SAME_THREAD" ref="dd299446148c5913ca3106e598cc616c" args="(_a, _b)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define SAME_THREAD </td> <td>(</td> <td class="paramtype">_a, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">_b </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> (42)</td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00177">177</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. </div> </div><p> <a class="anchor" name="0b795c3ba9f19dc35def98757bd7deaa"></a><!-- doxytag: member="rpmsq.c::SUB_REF" ref="0b795c3ba9f19dc35def98757bd7deaa" args="(__tbl)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define SUB_REF </td> <td>(</td> <td class="paramtype">__tbl </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> /*@-noeffect@*/ (0)</td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00173">173</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00346">rpmsqEnable()</a>, <a class="el" href="rpmsq_8c-source.html#l00636">rpmsqExecve()</a>, and <a class="el" href="rpmsq_8c-source.html#l00611">sigchld_cancel()</a>. </div> </div><p> <hr><h2>Function Documentation</h2> <a class="anchor" name="6698fdf84f418b855bf456c27113f5f4"></a><!-- doxytag: member="rpmsq.c::rpmsqAction" ref="6698fdf84f418b855bf456c27113f5f4" args="(int signum, void *info, void *context)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void rpmsqAction </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>signum</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>info</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>context</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Default signal handler. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>signum</em> </td><td>signal number </td></tr> <tr><td valign="top"></td><td valign="top"><em>info</em> </td><td>(siginfo_t) signal info </td></tr> <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>signal context </td></tr> </table> </dl> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00292">292</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> References <a class="el" href="system_8h.html#d65a8842cc674e3ddf69355898c0ecbf">errno</a>, <a class="el" href="rpmsq_8h-source.html#l00037">rpmsqElem::q_forw</a>, <a class="el" href="rpmsq_8c-source.html#l00196">rpmsqQueue</a>, <a class="el" href="llex_8c-source.html#l00163">save</a>, and <a class="el" href="rpmsq_8c-source.html#l00271">rpmsig_s::signum</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00346">rpmsqEnable()</a>. </div> </div><p> <a class="anchor" name="d9549ed43cbb708e506288cb1e33d009"></a><!-- doxytag: member="rpmsq.c::rpmsqEnable" ref="d9549ed43cbb708e506288cb1e33d009" args="(int signum, rpmsqAction_t handler)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int rpmsqEnable </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>signum</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="rpmsq_8h.html#8053bb3dd637781bf41e5998f74c2c35">rpmsqAction_t</a> </td> <td class="paramname"> <em>handler</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Enable or disable a signal handler. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>signum</em> </td><td>signal to enable (or disable if negative) </td></tr> <tr><td valign="top"></td><td valign="top"><em>handler</em> </td><td>sa_sigaction handler (or NULL to use rpmsqHandler()) </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>no. of refs, -1 on error </dd></dl> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00346">346</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> References <a class="el" href="rpmsq_8c-source.html#l00172">ADD_REF</a>, <a class="el" href="rpmsq_8c-source.html#l00169">DO_LOCK</a>, <a class="el" href="rpmsq_8h-source.html#l00047">rpmsqElem::id</a>, <a class="el" href="rpmsq_8c-source.html#l00179">ME</a>, <a class="el" href="rpmsq_8c-source.html#l00292">rpmsqAction()</a>, <a class="el" href="rpmsq_8c-source.html#l00196">rpmsqQueue</a>, and <a class="el" href="rpmsq_8c-source.html#l00173">SUB_REF</a>. <p> Referenced by <a class="el" href="rpmdb_8c-source.html#l01034">openDatabase()</a>, <a class="el" href="rpmdb_8c-source.html#l00886">rpmdbClose()</a>, <a class="el" href="rpmsq_8c-source.html#l00636">rpmsqExecve()</a>, <a class="el" href="rpmsq_8c-source.html#l00401">rpmsqFork()</a>, <a class="el" href="rpmsq_8c-source.html#l00485">rpmsqWaitUnregister()</a>, and <a class="el" href="rpmsq_8c-source.html#l00611">sigchld_cancel()</a>. </div> </div><p> <a class="anchor" name="e221999e9f873dd6c118384fc151716b"></a><!-- doxytag: member="rpmsq.c::rpmsqExecve" ref="e221999e9f873dd6c118384fc151716b" args="(const char **argv)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int rpmsqExecve </td> <td>(</td> <td class="paramtype">const char ** </td> <td class="paramname"> <em>argv</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Execute a command, returning its status. <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00636">636</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> References <a class="el" href="rpmsq_8c-source.html#l00172">ADD_REF</a>, <a class="el" href="system_8h.html#eb1df3e83fb069eaa2eb66ace3a0ea52">alloca()</a>, <a class="el" href="rpmsq_8c-source.html#l00174">CLEANUP_HANDLER</a>, <a class="el" href="rpmsq_8c-source.html#l00175">CLEANUP_RESET</a>, <a class="el" href="rpmsq_8c-source.html#l00169">DO_LOCK</a>, <a class="el" href="rpmsq_8c-source.html#l00170">DO_UNLOCK</a>, <a class="el" href="signature_8c-source.html#l00030">environ</a>, <a class="el" href="system_8h.html#d65a8842cc674e3ddf69355898c0ecbf">errno</a>, <a class="el" href="rpmsq_8c-source.html#l00171">INIT_LOCK</a>, <a class="el" href="rpmsq_8c.html#61adef654384ce04240bd18c08824ab4">rpmsigTbl_sigchld</a>, <a class="el" href="rpmsq_8c.html#cc7097e6c17ba437a98cb41a2004c8ac">rpmsigTbl_sigint</a>, <a class="el" href="rpmsq_8c.html#219e372a46ac02f2fafe0389e1ad24f4">rpmsigTbl_sigquit</a>, <a class="el" href="rpmsq_8c-source.html#l00346">rpmsqEnable()</a>, <a class="el" href="rpmsq_8c-source.html#l00611">sigchld_cancel()</a>, and <a class="el" href="rpmsq_8c-source.html#l00173">SUB_REF</a>. </div> </div><p> <a class="anchor" name="b13d7b8025bdd175c80fea8ea9f066fb"></a><!-- doxytag: member="rpmsq.c::rpmsqFork" ref="b13d7b8025bdd175c80fea8ea9f066fb" args="(rpmsq sq)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">pid_t rpmsqFork </td> <td>(</td> <td class="paramtype"><a class="el" href="structrpmsqElem.html">rpmsq</a> </td> <td class="paramname"> <em>sq</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Fork a child process. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sq</em> </td><td>scriptlet queue element </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>fork(2) pid </dd></dl> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00401">401</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> References <a class="el" href="rpmsq_8h-source.html#l00039">rpmsqElem::child</a>, <a class="el" href="rpmsq_8c-source.html#l00179">ME</a>, <a class="el" href="rpmsq_8h-source.html#l00048">rpmsqElem::mutex</a>, <a class="el" href="rpmsq_8h-source.html#l00045">rpmsqElem::pipes</a>, <a class="el" href="rpmsq_8h-source.html#l00044">rpmsqElem::reaper</a>, <a class="el" href="rpmsq_8c-source.html#l00346">rpmsqEnable()</a>, and <a class="el" href="rpmsq_8c-source.html#l00199">rpmsqInsert()</a>. <p> Referenced by <a class="el" href="psm_8c-source.html#l00625">runScript()</a>. </div> </div><p> <a class="anchor" name="7689e2d4e7d3ab32987c4c2e7d44b411"></a><!-- doxytag: member="rpmsq.c::rpmsqInsert" ref="7689e2d4e7d3ab32987c4c2e7d44b411" args="(void *elem, void *prev)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int rpmsqInsert </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"> <em>elem</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>prev</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Insert node into from queue. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>elem</em> </td><td>node to link </td></tr> <tr><td valign="top"></td><td valign="top"><em>prev</em> </td><td>previous node from queue </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>0 on success </dd></dl> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00199">199</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> References <a class="el" href="rpmsq_8h-source.html#l00039">rpmsqElem::child</a>, <a class="el" href="rpmsq_8h-source.html#l00047">rpmsqElem::id</a>, <a class="el" href="rpmsq_8c-source.html#l00179">ME</a>, <a class="el" href="rpmsq_8h-source.html#l00048">rpmsqElem::mutex</a>, <a class="el" href="rpmsq_8h-source.html#l00045">rpmsqElem::pipes</a>, <a class="el" href="rpmsq_8h-source.html#l00040">rpmsqElem::reaped</a>, <a class="el" href="rpmsq_8h-source.html#l00044">rpmsqElem::reaper</a>, <a class="el" href="rpmsq_8c-source.html#l00196">rpmsqQueue</a>, and <a class="el" href="rpmsq_8h-source.html#l00041">rpmsqElem::status</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00401">rpmsqFork()</a>. </div> </div><p> <a class="anchor" name="0798a48224425503fe4cb455dd591b26"></a><!-- doxytag: member="rpmsq.c::rpmsqJoin" ref="0798a48224425503fe4cb455dd591b26" args="(void *thread)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int rpmsqJoin </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"> <em>thread</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Wait for thread to terminate. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>thread</em> </td><td>thread </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>0 on success </dd></dl> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00592">592</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> Referenced by <a class="el" href="fsm_8c-source.html#l00406">fsmNext()</a>, and <a class="el" href="psm_8c-source.html#l01368">rpmpsmNext()</a>. </div> </div><p> <a class="anchor" name="09357ef0a5e5847e29cbe8cc591c79f0"></a><!-- doxytag: member="rpmsq.c::rpmsqRemove" ref="09357ef0a5e5847e29cbe8cc591c79f0" args="(void *elem)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int rpmsqRemove </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"> <em>elem</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Remove node from queue. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>elem</em> </td><td>node to link </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>0 on success </dd></dl> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00228">228</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> References <a class="el" href="rpmsq_8h-source.html#l00039">rpmsqElem::child</a>, <a class="el" href="rpmsq_8h-source.html#l00047">rpmsqElem::id</a>, <a class="el" href="rpmsq_8c-source.html#l00179">ME</a>, <a class="el" href="rpmsq_8h-source.html#l00048">rpmsqElem::mutex</a>, <a class="el" href="rpmsq_8h-source.html#l00045">rpmsqElem::pipes</a>, <a class="el" href="rpmsq_8h-source.html#l00040">rpmsqElem::reaped</a>, <a class="el" href="rpmsq_8h-source.html#l00044">rpmsqElem::reaper</a>, and <a class="el" href="rpmsq_8h-source.html#l00041">rpmsqElem::status</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00485">rpmsqWaitUnregister()</a>. </div> </div><p> <a class="anchor" name="a3aa2ebbfde186cb9c5687bdbeea4ad0"></a><!-- doxytag: member="rpmsq.c::rpmsqThread" ref="a3aa2ebbfde186cb9c5687bdbeea4ad0" args="(void *(*start)(void *arg), void *arg)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* rpmsqThread </td> <td>(</td> <td class="paramtype">void *(*)(void *arg) </td> <td class="paramname"> <em>start</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>arg</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Call a function in a thread. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>function </td></tr> <tr><td valign="top"></td><td valign="top"><em>arg</em> </td><td>function argument </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>thread pointer (NULL on error) </dd></dl> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00583">583</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> Referenced by <a class="el" href="fsm_8c-source.html#l00406">fsmNext()</a>, and <a class="el" href="psm_8c-source.html#l01368">rpmpsmNext()</a>. </div> </div><p> <a class="anchor" name="bc36f3e56d13f903648624882fc1e983"></a><!-- doxytag: member="rpmsq.c::rpmsqThreadEqual" ref="bc36f3e56d13f903648624882fc1e983" args="(void *thread)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int rpmsqThreadEqual </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"> <em>thread</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Compare thread with current thread. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>thread</em> </td><td>thread </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>0 if not equal </dd></dl> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00600">600</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. </div> </div><p> <a class="anchor" name="be449b3b92e2c98d46fb4bbc6cefc58e"></a><!-- doxytag: member="rpmsq.c::rpmsqWait" ref="be449b3b92e2c98d46fb4bbc6cefc58e" args="(rpmsq sq)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">pid_t rpmsqWait </td> <td>(</td> <td class="paramtype"><a class="el" href="structrpmsqElem.html">rpmsq</a> </td> <td class="paramname"> <em>sq</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Wait for child process to be reaped. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sq</em> </td><td>scriptlet queue element </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>reaped child pid </dd></dl> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00551">551</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> References <a class="el" href="rpmsq_8h-source.html#l00039">rpmsqElem::child</a>, <a class="el" href="rpmsq_8c-source.html#l00179">ME</a>, <a class="el" href="rpmsq_8h-source.html#l00040">rpmsqElem::reaped</a>, <a class="el" href="rpmsq_8h-source.html#l00044">rpmsqElem::reaper</a>, <a class="el" href="rpmsq_8c-source.html#l00485">rpmsqWaitUnregister()</a>, and <a class="el" href="rpmsq_8h-source.html#l00041">rpmsqElem::status</a>. <p> Referenced by <a class="el" href="psm_8c-source.html#l00477">psmWait()</a>. </div> </div><p> <a class="anchor" name="72785fc54bf96181de5479ad64af0361"></a><!-- doxytag: member="rpmsq.c::rpmsqWaitUnregister" ref="72785fc54bf96181de5479ad64af0361" args="(rpmsq sq)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int rpmsqWaitUnregister </td> <td>(</td> <td class="paramtype"><a class="el" href="structrpmsqElem.html">rpmsq</a> </td> <td class="paramname"> <em>sq</em> </td> <td> ) </td> <td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Wait for child process to be reaped, and unregister SIGCHLD handler. <p> <dl compact><dt><b><a class="el" href="todo.html#_todo000113">Todo:</a></b></dt><dd>Rewrite to use waitpid on helper thread. </dd></dl> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sq</em> </td><td>scriptlet queue element </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>0 on success </dd></dl> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00485">485</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> References <a class="el" href="rpmsq_8h-source.html#l00039">rpmsqElem::child</a>, <a class="el" href="rpmsq_8c-source.html#l00179">ME</a>, <a class="el" href="rpmsq_8h-source.html#l00043">rpmsqElem::ms_scriptlets</a>, <a class="el" href="rpmsq_8h-source.html#l00048">rpmsqElem::mutex</a>, <a class="el" href="rpmsq_8h-source.html#l00042">rpmsqElem::op</a>, <a class="el" href="rpmsq_8h-source.html#l00045">rpmsqElem::pipes</a>, <a class="el" href="rpmsq_8h-source.html#l00040">rpmsqElem::reaped</a>, <a class="el" href="rpmsq_8h-source.html#l00044">rpmsqElem::reaper</a>, <a class="el" href="rpmsq_8c-source.html#l00346">rpmsqEnable()</a>, <a class="el" href="rpmsq_8c-source.html#l00228">rpmsqRemove()</a>, <a class="el" href="rpmsw_8c-source.html#l00101">rpmswEnter()</a>, and <a class="el" href="rpmsw_8c-source.html#l00117">rpmswExit()</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00551">rpmsqWait()</a>. </div> </div><p> <a class="anchor" name="48776525a3c41bc7f160fbb20307071f"></a><!-- doxytag: member="rpmsq.c::sigchld_cancel" ref="48776525a3c41bc7f160fbb20307071f" args="(void *arg)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void sigchld_cancel </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"> <em>arg</em> </td> <td> ) </td> <td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> SIGCHLD cancellation handler. <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00611">611</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> References <a class="el" href="rpmsq_8c-source.html#l00169">DO_LOCK</a>, <a class="el" href="rpmsq_8c-source.html#l00170">DO_UNLOCK</a>, <a class="el" href="system_8h.html#d65a8842cc674e3ddf69355898c0ecbf">errno</a>, <a class="el" href="rpmsq_8c.html#61adef654384ce04240bd18c08824ab4">rpmsigTbl_sigchld</a>, <a class="el" href="rpmsq_8c-source.html#l00346">rpmsqEnable()</a>, and <a class="el" href="rpmsq_8c-source.html#l00173">SUB_REF</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00636">rpmsqExecve()</a>. </div> </div><p> <hr><h2>Variable Documentation</h2> <a class="anchor" name="9a254c1bbc1ff71759916077c8647d4b"></a><!-- doxytag: member="rpmsq.c::_rpmsq_debug" ref="9a254c1bbc1ff71759916077c8647d4b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="rpmsq_8h.html#9a254c1bbc1ff71759916077c8647d4b">_rpmsq_debug</a> = 0 </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00189">189</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. </div> </div><p> <a class="anchor" name="166a32a23052abe951fdf1f2c64cb9c1"></a><!-- doxytag: member="rpmsq.c::rpmsigTbl" ref="166a32a23052abe951fdf1f2c64cb9c1" args="[]" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structrpmsig__s.html">rpmsig_s</a> <a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[]<code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="4657013ced6d8faf0f3466badbf13638"></a><!-- doxytag: member="rpmsq.c::rpmsqCaught" ref="4657013ced6d8faf0f3466badbf13638" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">sigset_t <a class="el" href="rpmsq_8h.html#4657013ced6d8faf0f3466badbf13638">rpmsqCaught</a> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00266">266</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> Referenced by <a class="el" href="rpmdb_8c-source.html#l00764">rpmdbCheckSignals()</a>, <a class="el" href="rpmdb_8c-source.html#l00720">rpmdbCheckTerminate()</a>, and <a class="el" href="rpmmodule_8c-source.html#l00075">signalsCaught()</a>. </div> </div><p> <a class="anchor" name="b06ae8b0c37fcfa0c999b99c0bf4f91e"></a><!-- doxytag: member="rpmsq.c::rpmsqQueue" ref="b06ae8b0c37fcfa0c999b99c0bf4f91e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structrpmsqElem.html">rpmsq</a> <a class="el" href="rpmsq_8h.html#b06ae8b0c37fcfa0c999b99c0bf4f91e">rpmsqQueue</a> = &<a class="el" href="rpmsq_8c.html#7c3b5b29e03fad6bc03685e6e41726ae">rpmsqRock</a> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00196">196</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. <p> Referenced by <a class="el" href="rpmsq_8c-source.html#l00292">rpmsqAction()</a>, <a class="el" href="rpmsq_8c-source.html#l00346">rpmsqEnable()</a>, and <a class="el" href="rpmsq_8c-source.html#l00199">rpmsqInsert()</a>. </div> </div><p> <a class="anchor" name="7c3b5b29e03fad6bc03685e6e41726ae"></a><!-- doxytag: member="rpmsq.c::rpmsqRock" ref="7c3b5b29e03fad6bc03685e6e41726ae" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structrpmsqElem.html">rpmsqElem</a> <a class="el" href="rpmsq_8c.html#7c3b5b29e03fad6bc03685e6e41726ae">rpmsqRock</a><code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="rpmsq_8c-source.html#l00192">192</a> of file <a class="el" href="rpmsq_8c-source.html">rpmsq.c</a>. </div> </div><p> <hr size="1"><address style="align: right;"><small>Generated on 1 Oct 2013 for rpm by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address> </body> </html>