Sophie

Sophie

distrib > CentOS > 5 > x86_64 > by-pkgid > 67e32647b06c0323bf90c6b54a6438d1 > files > 631

rpm-apidocs-4.4.2.3-34.el5.x86_64.rpm

<!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&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li id="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="files.html"><span>File&nbsp;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 &quot;<a class="el" href="system_8h-source.html">system.h</a>&quot;</code><br>
<code>#include &lt;signal.h&gt;</code><br>
<code>#include &lt;sys/signal.h&gt;</code><br>
<code>#include &lt;sys/wait.h&gt;</code><br>
<code>#include &lt;search.h&gt;</code><br>
<code>#include &lt;<a class="el" href="rpmsq_8h-source.html">rpmsq.h</a>&gt;</code><br>
<code>#include &quot;<a class="el" href="debug_8h-source.html">debug.h</a>&quot;</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 &nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#739f39288cc3c3a4c2896b2c21e3373f">ADD_REF</a>(__tbl)&nbsp;&nbsp;&nbsp;/*@-noeffect@*/ (0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#0b795c3ba9f19dc35def98757bd7deaa">SUB_REF</a>(__tbl)&nbsp;&nbsp;&nbsp;/*@-noeffect@*/ (0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</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&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#dd299446148c5913ca3106e598cc616c">SAME_THREAD</a>(_a, _b)&nbsp;&nbsp;&nbsp;(42)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#74eca03bdac8cbf220bddff7e8f32a08">ME</a>()&nbsp;&nbsp;&nbsp;(((void *)getpid()))</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#09b78093bc16360838cf96e991d7ab10">_RPMSQ_DEBUG</a>&nbsp;&nbsp;&nbsp;0</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#cc7097e6c17ba437a98cb41a2004c8ac">rpmsigTbl_sigint</a>&nbsp;&nbsp;&nbsp;(&amp;<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[0])</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#219e372a46ac02f2fafe0389e1ad24f4">rpmsigTbl_sigquit</a>&nbsp;&nbsp;&nbsp;(&amp;<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[1])</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#61adef654384ce04240bd18c08824ab4">rpmsigTbl_sigchld</a>&nbsp;&nbsp;&nbsp;(&amp;<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[2])</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#60661ed766dd0b5df9c569bc78c22652">rpmsigTbl_sighup</a>&nbsp;&nbsp;&nbsp;(&amp;<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[3])</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#f9bf4bdbdb7b80f5ea42d5e5218411f0">rpmsigTbl_sigterm</a>&nbsp;&nbsp;&nbsp;(&amp;<a class="el" href="rpmsq_8c.html#166a32a23052abe951fdf1f2c64cb9c1">rpmsigTbl</a>[4])</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#3e7f9a2e5804101a184339fc3c0dce81">rpmsigTbl_sigpipe</a>&nbsp;&nbsp;&nbsp;(&amp;<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&nbsp;</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">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#09357ef0a5e5847e29cbe8cc591c79f0">rpmsqRemove</a> (void *elem)</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</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">&nbsp;</td><td class="mdescRight">Default signal handler.  <a href="#6698fdf84f418b855bf456c27113f5f4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#0798a48224425503fe4cb455dd591b26">rpmsqJoin</a> (void *thread)</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#bc36f3e56d13f903648624882fc1e983">rpmsqThreadEqual</a> (void *thread)</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</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">&nbsp;</td><td class="mdescRight">SIGCHLD cancellation handler.  <a href="#48776525a3c41bc7f160fbb20307071f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</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">&nbsp;</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&nbsp;</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>&nbsp;</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>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="rpmsq_8c.html#b06ae8b0c37fcfa0c999b99c0bf4f91e">rpmsqQueue</a> = &amp;<a class="el" href="rpmsq_8c.html#7c3b5b29e03fad6bc03685e6e41726ae">rpmsqRock</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">sigset_t&nbsp;</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>&nbsp;</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&nbsp;&nbsp;&nbsp;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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;/*@-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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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>
&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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>
&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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>
&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</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>
&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;(((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&nbsp;&nbsp;&nbsp;(&amp;<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&nbsp;&nbsp;&nbsp;(&amp;<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&nbsp;&nbsp;&nbsp;(&amp;<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&nbsp;&nbsp;&nbsp;(&amp;<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&nbsp;&nbsp;&nbsp;(&amp;<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&nbsp;&nbsp;&nbsp;(&amp;<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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;(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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;/*@-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&nbsp;</td>
          <td class="paramname"> <em>signum</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>info</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>context</em></td><td>&nbsp;</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>&nbsp;</td><td>signal number </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>(siginfo_t) signal info </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</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&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>handler</em></td><td>&nbsp;</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>&nbsp;</td><td>signal to enable (or disable if negative) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>handler</em>&nbsp;</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 **&nbsp;</td>
          <td class="paramname"> <em>argv</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>sq</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>elem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>prev</em></td><td>&nbsp;</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>&nbsp;</td><td>node to link </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>prev</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>thread</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>elem</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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)&nbsp;</td>
          <td class="paramname"> <em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>arg</em></td><td>&nbsp;</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>&nbsp;</td><td>function </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arg</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>thread</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>sq</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>sq</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>arg</em>          </td>
          <td>&nbsp;)&nbsp;</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> = &amp;<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&nbsp;
<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>