You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ge...@apache.org on 2005/12/01 07:04:00 UTC

svn commit: r350181 [41/198] - in /incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core: ./ depends/ depends/files/ depends/jars/ depends/libs/ depends/libs/linux.IA32/ depends/libs/win.IA32/ depends/oss/ depends/oss/linux.IA32/ depends/oss/win.I...

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/doc/vm_doc/html/hyshsem_8c.html
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/doc/vm_doc/html/hyshsem_8c.html?rev=350181&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/doc/vm_doc/html/hyshsem_8c.html (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/doc/vm_doc/html/hyshsem_8c.html Wed Nov 30 21:29:27 2005
@@ -0,0 +1,552 @@
+<!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>Harmony Class Library Porting: native-src/win.IA32/port/hyshsem.c File Reference</title>
+<link href="hydoxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">native-src</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">win.IA32</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000007.html">port</a></div>
+<h1>hyshsem.c File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
+Shared Semaphores. 
+<p>
+
+<p>
+<code>#include &lt;Windows.h&gt;</code><br>
+<code>#include &quot;<a class="el" href="hyport_8h.html">hyport.h</a>&quot;</code><br>
+<code>#include &quot;portpriv.h&quot;</code><br>
+<code>#include &quot;ut_hyprt.h&quot;</code><br>
+<code>#include &quot;hyshsem.h&quot;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">IDATA VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hyshsem_8c.html#a26">hyshsem_open</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary, struct hyshsem_handle **handle, const char *semname, int setSize, int permission)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open an existing semaphore set, or create a new one if it does not exist.  <a href="#a26"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">IDATA VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hyshsem_8c.html#a27">hyshsem_post</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary, struct hyshsem_handle *handle, UDATA semset, UDATA flag)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">post operation increments the counter in the semaphore by 1 if there is no one in wait for the semaphore.  <a href="#a27"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">IDATA VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hyshsem_8c.html#a28">hyshsem_wait</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary, struct hyshsem_handle *handle, UDATA semset, UDATA flag)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wait operation decrements the counter in the semaphore set if the counter &gt; 0 if counter == 0 then the caller will be suspended.  <a href="#a28"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">IDATA VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hyshsem_8c.html#a29">hyshsem_getVal</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary, struct hyshsem_handle *handle, UDATA semset)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">reading the value of the semaphore in the set.  <a href="#a29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">IDATA VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hyshsem_8c.html#a30">hyshsem_setVal</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary, struct hyshsem_handle *handle, UDATA semset, IDATA value)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">setting the value of the semaphore specified in semset.  <a href="#a30"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hyshsem_8c.html#a31">hyshsem_close</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary, struct hyshsem_handle **handle)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Release the resources allocated for the semaphore handles.  <a href="#a31"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">IDATA VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hyshsem_8c.html#a32">hyshsem_destroy</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary, struct hyshsem_handle **handle)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy the semaphore and release the resources allocated for the semaphore handles.  <a href="#a32"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">I_32 VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hyshsem_8c.html#a33">hyshsem_startup</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PortLibrary startup.  <a href="#a33"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hyshsem_8c.html#a34">hyshsem_shutdown</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PortLibrary shutdown.  <a href="#a34"></a><br></td></tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a31"></a><!-- doxytag: member="hyshsem.c::hyshsem_close" ref="a31" args="(struct HyPortLibrary *portLibrary, struct hyshsem_handle **handle)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">void VMCALL hyshsem_close           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname" nowrap> <em>portLibrary</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>struct hyshsem_handle **&nbsp;</td>
+          <td class="mdname" nowrap> <em>handle</em></td>
+        </tr>
+        <tr>
+          <td class="md"></td>
+          <td class="md">)&nbsp;</td>
+          <td class="md" colspan="2"></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+Release the resources allocated for the semaphore handles. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port library. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>handle</em>&nbsp;</td><td>Semaphore set handle.</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Note:</b></dt><dd>The actual semaphore is not destroyed. Once the close operation has been performed on the semaphore handle, it is no longer valid and user needs to reissue <a class="el" href="hyshsem_8c.html#a26">hyshsem_open</a> call.</dd></dl>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="a32"></a><!-- doxytag: member="hyshsem.c::hyshsem_destroy" ref="a32" args="(struct HyPortLibrary *portLibrary, struct hyshsem_handle **handle)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">IDATA VMCALL hyshsem_destroy           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname" nowrap> <em>portLibrary</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>struct hyshsem_handle **&nbsp;</td>
+          <td class="mdname" nowrap> <em>handle</em></td>
+        </tr>
+        <tr>
+          <td class="md"></td>
+          <td class="md">)&nbsp;</td>
+          <td class="md" colspan="2"></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+Destroy the semaphore and release the resources allocated for the semaphore handles. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port library. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>handle</em>&nbsp;</td><td>Semaphore set handle.</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. </dd></dl>
+<dl compact><dt><b>Note:</b></dt><dd>Due to operating system restriction we may not be able to destroy the semaphore</dd></dl>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="a29"></a><!-- doxytag: member="hyshsem.c::hyshsem_getVal" ref="a29" args="(struct HyPortLibrary *portLibrary, struct hyshsem_handle *handle, UDATA semset)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">IDATA VMCALL hyshsem_getVal           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname" nowrap> <em>portLibrary</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>struct hyshsem_handle *&nbsp;</td>
+          <td class="mdname" nowrap> <em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>UDATA&nbsp;</td>
+          <td class="mdname" nowrap> <em>semset</em></td>
+        </tr>
+        <tr>
+          <td class="md"></td>
+          <td class="md">)&nbsp;</td>
+          <td class="md" colspan="2"></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+reading the value of the semaphore in the set. 
+<p>
+This function uses no synchronisation prmitives<p>
+<dl compact><dt><b>Precondition:</b></dt><dd>caller has to deal with synchronisation issue.</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port library. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>handle</em>&nbsp;</td><td>Semaphore set handle. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>semset</em>&nbsp;</td><td>The number of semaphore in the semaphore set that you want to post.</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>-1 on failure, the value of the semaphore on success</dd></dl>
+<dl compact><dt><b>Warning:</b></dt><dd>: The user will need to make sure locking is done correctly when accessing semaphore values. This is because getValue simply reads the semaphore value without stopping the access to the semaphore. Therefore the value of the semaphore can change before the function returns.</dd></dl>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="a26"></a><!-- doxytag: member="hyshsem.c::hyshsem_open" ref="a26" args="(struct HyPortLibrary *portLibrary, struct hyshsem_handle **handle, const char *semname, int setSize, int permission)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">IDATA VMCALL hyshsem_open           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname" nowrap> <em>portLibrary</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>struct hyshsem_handle **&nbsp;</td>
+          <td class="mdname" nowrap> <em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>const char *&nbsp;</td>
+          <td class="mdname" nowrap> <em>semname</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>int&nbsp;</td>
+          <td class="mdname" nowrap> <em>setSize</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>int&nbsp;</td>
+          <td class="mdname" nowrap> <em>permission</em></td>
+        </tr>
+        <tr>
+          <td class="md"></td>
+          <td class="md">)&nbsp;</td>
+          <td class="md" colspan="2"></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+Open an existing semaphore set, or create a new one if it does not exist. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port library. </td></tr>
+    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>handle</em>&nbsp;</td><td>A semaphore handle is allocated and initialised for use with further calls, NULL on failure. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>semname</em>&nbsp;</td><td>Unique identifier of the semaphore. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>setSize</em>&nbsp;</td><td>Size of the semaphore set. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>permission</em>&nbsp;</td><td>Permission to the semaphore set.</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd><ul>
+<li>HYPORT_ERROR_SHSEM_OPFAILED Failure - Error opening the semaphore </li>
+<li>HYPORT_INFO_SHSEM_CREATED Success - Semaphore has been created </li>
+<li>HYPORT_INFO_SHSEM_OPENED Success - Existing semaphore has been opened </li>
+<li>HYPORT_INFO_SHSEM_SEMID_DIFF Success - Existing semaphore opened, but OS Semaphore key is different</li>
+</ul>
+</dd></dl>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="a27"></a><!-- doxytag: member="hyshsem.c::hyshsem_post" ref="a27" args="(struct HyPortLibrary *portLibrary, struct hyshsem_handle *handle, UDATA semset, UDATA flag)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">IDATA VMCALL hyshsem_post           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname" nowrap> <em>portLibrary</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>struct hyshsem_handle *&nbsp;</td>
+          <td class="mdname" nowrap> <em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>UDATA&nbsp;</td>
+          <td class="mdname" nowrap> <em>semset</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>UDATA&nbsp;</td>
+          <td class="mdname" nowrap> <em>flag</em></td>
+        </tr>
+        <tr>
+          <td class="md"></td>
+          <td class="md">)&nbsp;</td>
+          <td class="md" colspan="2"></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+post operation increments the counter in the semaphore by 1 if there is no one in wait for the semaphore. 
+<p>
+if there are other processes suspended by wait then one of them will become runnable and the counter remains the same.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port library. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>handle</em>&nbsp;</td><td>Semaphore set handle. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>semset</em>&nbsp;</td><td>The no of semaphore in the semaphore set that you want to post. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>flag</em>&nbsp;</td><td>The semaphore operation flag: <ul>
+<li>HYPORT_SHSEM_MODE_DEFAULT The default operation flag, same as 0 </li>
+<li>HYPORT_SHSEM_MODE_UNDO The changes made to the semaphore will be undone when this process finishes.</li>
+</ul>
+</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure.</dd></dl>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="a30"></a><!-- doxytag: member="hyshsem.c::hyshsem_setVal" ref="a30" args="(struct HyPortLibrary *portLibrary, struct hyshsem_handle *handle, UDATA semset, IDATA value)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">IDATA VMCALL hyshsem_setVal           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname" nowrap> <em>portLibrary</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>struct hyshsem_handle *&nbsp;</td>
+          <td class="mdname" nowrap> <em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>UDATA&nbsp;</td>
+          <td class="mdname" nowrap> <em>semset</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>IDATA&nbsp;</td>
+          <td class="mdname" nowrap> <em>value</em></td>
+        </tr>
+        <tr>
+          <td class="md"></td>
+          <td class="md">)&nbsp;</td>
+          <td class="md" colspan="2"></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+setting the value of the semaphore specified in semset. 
+<p>
+This function uses no synchronisation prmitives<p>
+<dl compact><dt><b>Precondition:</b></dt><dd>Caller has to deal with synchronisation issue.</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port Library. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>handle</em>&nbsp;</td><td>Semaphore set handle. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>semset</em>&nbsp;</td><td>The no of semaphore in the semaphore set that you want to post. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>value</em>&nbsp;</td><td>The value that you want to set the semaphore to</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Warning:</b></dt><dd>The user will need to make sure locking is done correctly when accessing semaphore values. This is because setValue simply set the semaphore value without stopping the access to the semaphore. Therefore the value of the semaphore can change before the function returns.</dd></dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure.</dd></dl>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="a34"></a><!-- doxytag: member="hyshsem.c::hyshsem_shutdown" ref="a34" args="(struct HyPortLibrary *portLibrary)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">void VMCALL hyshsem_shutdown           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap> <em>portLibrary</em>          </td>
+          <td class="md" valign="top">&nbsp;)&nbsp;</td>
+          <td class="md" nowrap></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+PortLibrary shutdown. 
+<p>
+This function is called during shutdown of the portLibrary. Any resources that were created by <a class="el" href="hyshsem_8c.html#a33">hyshsem_startup</a> should be destroyed here.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port library.</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Note:</b></dt><dd>Most implementations will be empty.</dd></dl>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="a33"></a><!-- doxytag: member="hyshsem.c::hyshsem_startup" ref="a33" args="(struct HyPortLibrary *portLibrary)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">I_32 VMCALL hyshsem_startup           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap> <em>portLibrary</em>          </td>
+          <td class="md" valign="top">&nbsp;)&nbsp;</td>
+          <td class="md" nowrap></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+PortLibrary startup. 
+<p>
+This function is called during startup of the portLibrary. Any resources that are required for the file operations may be created here. All resources created here should be destroyed in <a class="el" href="hyshsem_8c.html#a34">hyshsem_shutdown</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port library.</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on success, negative error code on failure. Error code values returned are <ul>
+<li>HYPORT_ERROR_STARTUP_SHSEM</li>
+</ul>
+</dd></dl>
+<dl compact><dt><b>Note:</b></dt><dd>Most implementations will simply return success.</dd></dl>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="a28"></a><!-- doxytag: member="hyshsem.c::hyshsem_wait" ref="a28" args="(struct HyPortLibrary *portLibrary, struct hyshsem_handle *handle, UDATA semset, UDATA flag)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">IDATA VMCALL hyshsem_wait           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname" nowrap> <em>portLibrary</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>struct hyshsem_handle *&nbsp;</td>
+          <td class="mdname" nowrap> <em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>UDATA&nbsp;</td>
+          <td class="mdname" nowrap> <em>semset</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>UDATA&nbsp;</td>
+          <td class="mdname" nowrap> <em>flag</em></td>
+        </tr>
+        <tr>
+          <td class="md"></td>
+          <td class="md">)&nbsp;</td>
+          <td class="md" colspan="2"></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+Wait operation decrements the counter in the semaphore set if the counter &gt; 0 if counter == 0 then the caller will be suspended. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port library. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>handle</em>&nbsp;</td><td>Semaphore set handle. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>semset</em>&nbsp;</td><td>The no of semaphore in the semaphore set that you want to post. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>flag</em>&nbsp;</td><td>The semaphore operation flag: <ul>
+<li>HYPORT_SHSEM_MODE_DEFAULT The default operation flag, same as 0 </li>
+<li>HYPORT_SHSEM_MODE_UNDO The changes made to the semaphore will be undone when this process finishes. </li>
+<li>HYPORT_SHSEM_MODE_NOWAIT The caller will not be suspended if sem == 0, a -1 is returned instead.</li>
+</ul>
+</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure.</dd></dl>
+    </td>
+  </tr>
+</table>
+<hr size="1">
+<address style="text-align: center;">
+  <small>
+    (c) Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+  </small>
+</address>
+</body>
+</html>

Added: incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/doc/vm_doc/html/hysl_8c.html
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/doc/vm_doc/html/hysl_8c.html?rev=350181&view=auto
==============================================================================
--- incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/doc/vm_doc/html/hysl_8c.html (added)
+++ incubator/harmony/enhanced/trunk/sandbox/contribs/ibm_core/doc/vm_doc/html/hysl_8c.html Wed Nov 30 21:29:27 2005
@@ -0,0 +1,306 @@
+<!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>Harmony Class Library Porting: native-src/win.IA32/port/hysl.c File Reference</title>
+<link href="hydoxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="nav">
+<a class="el" href="dir_000000.html">native-src</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000001.html">win.IA32</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_000007.html">port</a></div>
+<h1>hysl.c File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
+shared library 
+<p>
+
+<p>
+<code>#include &lt;windows.h&gt;</code><br>
+<code>#include &quot;<a class="el" href="hyport_8h.html">hyport.h</a>&quot;</code><br>
+<code>#include &lt;stdio.h&gt;</code><br>
+<code>#include &lt;stdlib.h&gt;</code><br>
+<code>#include &lt;malloc.h&gt;</code><br>
+<code>#include &quot;hylib.h&quot;</code><br>
+<code>#include &quot;portnls.h&quot;</code><br>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">UDATA VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hysl_8c.html#a10">hysl_open_shared_library</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary, char *name, UDATA *descriptor, BOOLEAN decorate)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Opens a shared library.  <a href="#a10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">UDATA VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hysl_8c.html#a11">hysl_close_shared_library</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary, UDATA descriptor)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close a shared library.  <a href="#a11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">UDATA VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hysl_8c.html#a12">hysl_lookup_name</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary, UDATA descriptor, char *name, UDATA *func, const char *argSignature)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Search for a function named 'name' taking argCount in the shared library 'descriptor'.  <a href="#a12"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hysl_8c.html#a13">hysl_shutdown</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PortLibrary shutdown.  <a href="#a13"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">I_32 VMCALL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="hysl_8c.html#a14">hysl_startup</a> (struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *portLibrary)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PortLibrary startup.  <a href="#a14"></a><br></td></tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a11"></a><!-- doxytag: member="hysl.c::hysl_close_shared_library" ref="a11" args="(struct HyPortLibrary *portLibrary, UDATA descriptor)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">UDATA VMCALL hysl_close_shared_library           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname" nowrap> <em>portLibrary</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>UDATA&nbsp;</td>
+          <td class="mdname" nowrap> <em>descriptor</em></td>
+        </tr>
+        <tr>
+          <td class="md"></td>
+          <td class="md">)&nbsp;</td>
+          <td class="md" colspan="2"></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+Close a shared library. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port library. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>descriptor</em>&nbsp;</td><td>Shared library handle to close.</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on success, any other value on failure.</dd></dl>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="a12"></a><!-- doxytag: member="hysl.c::hysl_lookup_name" ref="a12" args="(struct HyPortLibrary *portLibrary, UDATA descriptor, char *name, UDATA *func, const char *argSignature)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">UDATA VMCALL hysl_lookup_name           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname" nowrap> <em>portLibrary</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>UDATA&nbsp;</td>
+          <td class="mdname" nowrap> <em>descriptor</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>char *&nbsp;</td>
+          <td class="mdname" nowrap> <em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>UDATA *&nbsp;</td>
+          <td class="mdname" nowrap> <em>func</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>const char *&nbsp;</td>
+          <td class="mdname" nowrap> <em>argSignature</em></td>
+        </tr>
+        <tr>
+          <td class="md"></td>
+          <td class="md">)&nbsp;</td>
+          <td class="md" colspan="2"></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+Search for a function named 'name' taking argCount in the shared library 'descriptor'. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port library. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>descriptor</em>&nbsp;</td><td>Shared library to search. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>name</em>&nbsp;</td><td>Function to look up. </td></tr>
+    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>func</em>&nbsp;</td><td>Pointer to the function. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>argSignature</em>&nbsp;</td><td>Argument signature.</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on success, any other value on failure.</dd></dl>
+argSignature is a C (ie: NUL-terminated) string with the following possible values for each character:<p>
+V - void Z - boolean B - byte C - char (16 bits) I - integer (32 bits) J - long (64 bits) F - float (32 bits) D - double (64 bits) L - object / pointer (32 or 64, depending on platform) P - pointer-width platform data. (in this context an IDATA)<p>
+Lower case signature characters imply unsigned value. Upper case signature characters imply signed values. If it doesn't make sense to be signed/unsigned (eg: V, L, F, D Z) the character is upper case.<p>
+argList[0] is the return type from the function. The argument list is as it appears in english: list is left (1) to right (argCount)<p>
+<dl compact><dt><b>Note:</b></dt><dd>contents of func are undefined on failure.</dd></dl>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="a10"></a><!-- doxytag: member="hysl.c::hysl_open_shared_library" ref="a10" args="(struct HyPortLibrary *portLibrary, char *name, UDATA *descriptor, BOOLEAN decorate)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">UDATA VMCALL hysl_open_shared_library           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname" nowrap> <em>portLibrary</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>char *&nbsp;</td>
+          <td class="mdname" nowrap> <em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>UDATA *&nbsp;</td>
+          <td class="mdname" nowrap> <em>descriptor</em>, </td>
+        </tr>
+        <tr>
+          <td class="md" nowrap align="right"></td>
+          <td class="md"></td>
+          <td class="md" nowrap>BOOLEAN&nbsp;</td>
+          <td class="mdname" nowrap> <em>decorate</em></td>
+        </tr>
+        <tr>
+          <td class="md"></td>
+          <td class="md">)&nbsp;</td>
+          <td class="md" colspan="2"></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+Opens a shared library. 
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port library. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>name</em>&nbsp;</td><td>path Null-terminated string containing the shared library. </td></tr>
+    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>descriptor</em>&nbsp;</td><td>Pointer to memory which is filled in with shared-library handle on success. </td></tr>
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>decorate</em>&nbsp;</td><td>Boolean value indicates whether name should be decorated if it contains path information and cannot be found.</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on success, any other value on failure.</dd></dl>
+<dl compact><dt><b>Note:</b></dt><dd>contents of descriptor are undefined on failure.</dd></dl>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="a13"></a><!-- doxytag: member="hysl.c::hysl_shutdown" ref="a13" args="(struct HyPortLibrary *portLibrary)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">void VMCALL hysl_shutdown           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap> <em>portLibrary</em>          </td>
+          <td class="md" valign="top">&nbsp;)&nbsp;</td>
+          <td class="md" nowrap></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+PortLibrary shutdown. 
+<p>
+This function is called during shutdown of the portLibrary. Any resources that were created by <a class="el" href="hysl_8c.html#a14">hysl_startup</a> should be destroyed here.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port library.</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Note:</b></dt><dd>Most implementations will be empty.</dd></dl>
+    </td>
+  </tr>
+</table>
+<a class="anchor" name="a14"></a><!-- doxytag: member="hysl.c::hysl_startup" ref="a14" args="(struct HyPortLibrary *portLibrary)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+  <tr>
+    <td class="mdRow">
+      <table cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="md" nowrap valign="top">I_32 VMCALL hysl_startup           </td>
+          <td class="md" valign="top">(&nbsp;</td>
+          <td class="md" nowrap valign="top">struct <a class="el" href="structHyPortLibrary.html">HyPortLibrary</a> *&nbsp;</td>
+          <td class="mdname1" valign="top" nowrap> <em>portLibrary</em>          </td>
+          <td class="md" valign="top">&nbsp;)&nbsp;</td>
+          <td class="md" nowrap></td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+  <tr>
+    <td>
+      &nbsp;
+    </td>
+    <td>
+
+<p>
+PortLibrary startup. 
+<p>
+This function is called during startup of the portLibrary. Any resources that are required for the shared library operations may be created here. All resources created here should be destroyed in <a class="el" href="hysl_8c.html#a13">hysl_shutdown</a>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>portLibrary</em>&nbsp;</td><td>The port library.</td></tr>
+  </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>0 on success, negative error code on failure. Error code values returned are <ul>
+<li>HYPORT_ERROR_STARTUP_SL</li>
+</ul>
+</dd></dl>
+<dl compact><dt><b>Note:</b></dt><dd>Most implementations will simply return success.</dd></dl>
+    </td>
+  </tr>
+</table>
+<hr size="1">
+<address style="text-align: center;">
+  <small>
+    (c) Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+  </small>
+</address>
+</body>
+</html>