]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
[DOCS] add html files generated by robodoc from ibal/complib headers files
authorsleybo <sleybo@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Sun, 16 Apr 2006 14:43:39 +0000 (14:43 +0000)
committersleybo <sleybo@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Sun, 16 Apr 2006 14:43:39 +0000 (14:43 +0000)
git-svn-id: svn://openib.tc.cornell.edu/gen1@310 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

55 files changed:
trunk/docs/complib/cl_async_proc_h.html [new file with mode: 0644]
trunk/docs/complib/cl_atomic_h.html [new file with mode: 0644]
trunk/docs/complib/cl_byteswap_h.html [new file with mode: 0644]
trunk/docs/complib/cl_comppool_h.html [new file with mode: 0644]
trunk/docs/complib/cl_debug_h.html [new file with mode: 0644]
trunk/docs/complib/cl_event_h.html [new file with mode: 0644]
trunk/docs/complib/cl_fleximap_h.html [new file with mode: 0644]
trunk/docs/complib/cl_ioctl_h.html [new file with mode: 0644]
trunk/docs/complib/cl_irqlock_h.html [new file with mode: 0644]
trunk/docs/complib/cl_list_h.html [new file with mode: 0644]
trunk/docs/complib/cl_log_h.html [new file with mode: 0644]
trunk/docs/complib/cl_map_h.html [new file with mode: 0644]
trunk/docs/complib/cl_math_h.html [new file with mode: 0644]
trunk/docs/complib/cl_memory_h.html [new file with mode: 0644]
trunk/docs/complib/cl_mutex_h.html [new file with mode: 0644]
trunk/docs/complib/cl_obj_h.html [new file with mode: 0644]
trunk/docs/complib/cl_passivelock_h.html [new file with mode: 0644]
trunk/docs/complib/cl_perf_h.html [new file with mode: 0644]
trunk/docs/complib/cl_pool_h.html [new file with mode: 0644]
trunk/docs/complib/cl_ptr_vector_h.html [new file with mode: 0644]
trunk/docs/complib/cl_qcomppool_h.html [new file with mode: 0644]
trunk/docs/complib/cl_qlist_h.html [new file with mode: 0644]
trunk/docs/complib/cl_qlockpool_h.html [new file with mode: 0644]
trunk/docs/complib/cl_qmap_h.html [new file with mode: 0644]
trunk/docs/complib/cl_qpool_h.html [new file with mode: 0644]
trunk/docs/complib/cl_rbmap_h.html [new file with mode: 0644]
trunk/docs/complib/cl_reqmgr_h.html [new file with mode: 0644]
trunk/docs/complib/cl_spinlock_h.html [new file with mode: 0644]
trunk/docs/complib/cl_syscallback_h.html [new file with mode: 0644]
trunk/docs/complib/cl_thread_h.html [new file with mode: 0644]
trunk/docs/complib/cl_threadpool_h.html [new file with mode: 0644]
trunk/docs/complib/cl_timer_h.html [new file with mode: 0644]
trunk/docs/complib/cl_types_h.html [new file with mode: 0644]
trunk/docs/complib/cl_vector_h.html [new file with mode: 0644]
trunk/docs/complib/cl_waitobj_h.html [new file with mode: 0644]
trunk/docs/complib/comp_lib_h.html [new file with mode: 0644]
trunk/docs/iba/ib_al_h.html [new file with mode: 0644]
trunk/docs/iba/ib_al_ioctl_h.html [new file with mode: 0644]
trunk/docs/iba/ib_ci_h.html [new file with mode: 0644]
trunk/docs/iba/ib_types_h.html [new file with mode: 0644]
trunk/docs/kernel/complib/cl_bus_ifc_h.html [new file with mode: 0644]
trunk/docs/kernel/complib/cl_pnp_po_h.html [new file with mode: 0644]
trunk/docs/kernel/iba/ib_al_ifc_h.html [new file with mode: 0644]
trunk/docs/kernel/iba/ib_ci_ifc_h.html [new file with mode: 0644]
trunk/docs/kernel/iba/ioc_ifc_h.html [new file with mode: 0644]
trunk/docs/kernel/iba/iou_ifc_h.html [new file with mode: 0644]
trunk/docs/kernel/iba/ipoib_ifc_h.html [new file with mode: 0644]
trunk/docs/masterindex.html [new file with mode: 0644]
trunk/docs/robo_definitions.html [new file with mode: 0644]
trunk/docs/robo_functions.html [new file with mode: 0644]
trunk/docs/robo_modules.html [new file with mode: 0644]
trunk/docs/robo_sourcefiles.html [new file with mode: 0644]
trunk/docs/robo_strutures.html [new file with mode: 0644]
trunk/docs/robodoc.css [new file with mode: 0644]
trunk/docs/user/iba/ib_uvp_h.html [new file with mode: 0644]

diff --git a/trunk/docs/complib/cl_async_proc_h.html b/trunk/docs/complib/cl_async_proc_h.html
new file mode 100644 (file)
index 0000000..933285a
--- /dev/null
@@ -0,0 +1,309 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_async_proc_h.html</title>\r
+<!-- Source: ./inc/complib/cl_async_proc.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_async_proc.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo6">[Modules]<a name="Component20Library2fAsynchronous20Processor">\r
+Component Library/Asynchronous Processor</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Asynchronous Processor\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The asynchronous processor provides threads for executing queued callbacks.\r
+\r
+       The threads in the asynchronous processor wait for callbacks to be queued.\r
+\r
+       The asynchronous processor functions operate on a <a href="#robo271">cl_async_proc_t</a> structure\r
+       which should be treated as opaque and manipulated only through the provided\r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo271">cl_async_proc_t</a>, <a href="#robo269">cl_async_proc_item_t</a>\r
+\r
+       Initialization:\r
+               <a href="#robo266">cl_async_proc_construct</a>, <a href="#robo268">cl_async_proc_init</a>, <a href="#robo267">cl_async_proc_destroy</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo270">cl_async_proc_queue</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo266">[Functions]<a name="Component20Library3a20Asynchronous20Processor2fcl5fasync5fproc5fconstruct">\r
+Component Library: Asynchronous Processor/cl_async_proc_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_async_proc_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_async_proc_construct</strong> function initializes the state of a\r
+       thread pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_async_proc_construct</strong>(\r
+        IN      <a href="#robo271">cl_async_proc_t</a>* const  p_async_proc );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_async_proc\r
+               [in] Pointer to an asynchronous processor structure.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo267">cl_async_proc_destroy</a> without first calling\r
+       <a href="#robo268">cl_async_proc_init</a>.\r
+\r
+       Calling <strong>cl_async_proc_construct</strong> is a prerequisite to calling any other\r
+       thread pool function except <a href="#robo268">cl_async_proc_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Asynchronous Processor, <a href="#robo268">cl_async_proc_init</a>, <a href="#robo267">cl_async_proc_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo267">[Functions]<a name="Component20Library3a20Asynchronous20Processor2fcl5fasync5fproc5fdestroy">\r
+Component Library: Asynchronous Processor/cl_async_proc_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_async_proc_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_async_proc_destroy</strong> function performs any necessary cleanup\r
+       for a thread pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_async_proc_destroy</strong>(\r
+        IN      <a href="#robo271">cl_async_proc_t</a>* const  p_async_proc );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_async_proc\r
+               [in] Pointer to an asynchronous processor structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function blocks until all threads exit, and must therefore not\r
+       be called from any of the asynchronous processor's threads. Because of\r
+       its blocking nature, callers of <strong>cl_async_proc_destroy</strong> must ensure that\r
+       entering a wait state is valid from the calling thread context.\r
+\r
+       This function should only be called after a call to\r
+       <a href="#robo266">cl_async_proc_construct</a> or <a href="#robo268">cl_async_proc_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Asynchronous Processor, <a href="#robo266">cl_async_proc_construct</a>, <a href="#robo268">cl_async_proc_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo268">[Functions]<a name="Component20Library3a20Asynchronous20Processor2fcl5fasync5fproc5finit">\r
+Component Library: Asynchronous Processor/cl_async_proc_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_async_proc_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_async_proc_init</strong> function initialized an asynchronous processor\r
+       for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_async_proc_init</strong>(\r
+        IN      <a href="#robo271">cl_async_proc_t</a>* const  p_async_proc,\r
+        IN      const uint32_t                  thread_count,\r
+        IN      const char* const               name );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_async_proc\r
+               [in] Pointer to an asynchronous processor structure to initialize.\r
+\r
+       thread_count\r
+               [in] Number of threads to be managed by the asynchronous processor.\r
+\r
+       name\r
+               [in] Name to associate with the threads.  The name may be up to 16\r
+               characters, including a terminating null character.  All threads\r
+               created in the asynchronous processor have the same name.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the asynchronous processor creation succeeded.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to inititalize\r
+       the asynchronous processor.\r
+\r
+       CL_ERROR if the threads could not be created.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_async_proc_init</strong> creates and starts the specified number of threads.\r
+       If thread_count is zero, the asynchronous processor creates as many\r
+       threads as there are processors in the system.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Asynchronous Processor, <a href="#robo266">cl_async_proc_construct</a>, <a href="#robo267">cl_async_proc_destroy</a>,\r
+       <a href="#robo270">cl_async_proc_queue</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo269">[Structures]<a name="Component20Library3a20Asynchronous20Processor2fcl5fasync5fproc5fitem5ft">\r
+Component Library: Asynchronous Processor/cl_async_proc_item_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_async_proc_item_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Asynchronous processor item structure passed to the <a href="#robo270">cl_async_proc_queue</a>\r
+       function to queue a callback for execution.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_async_proc_item\r
+{\r
+        <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>                  pool_item;\r
+        <a href="#robo272">cl_pfn_async_proc_cb_t</a>  pfn_callback;\r
+\r
+} <strong>cl_async_proc_item_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pool_item\r
+               <a href="./cl_pool_h.html#robo24">Pool</a> item for queuing the item to be invoked by the asynchronous\r
+               processor's threads.  This field is defined as a pool item to\r
+               allow items to be managed by a pool.\r
+\r
+       pfn_callback\r
+               Pointer to a callback function to invoke when the item is dequeued.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Asynchronous Processor, <a href="#robo270">cl_async_proc_queue</a>, <a href="#robo272">cl_pfn_async_proc_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo270">[Functions]<a name="Component20Library3a20Asynchronous20Processor2fcl5fasync5fproc5fqueue">\r
+Component Library: Asynchronous Processor/cl_async_proc_queue</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_async_proc_queue</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_async_proc_queue</strong> function queues a callback to an asynchronous\r
+       processor.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_async_proc_queue</strong>(\r
+        IN      <a href="#robo271">cl_async_proc_t</a>* const          p_async_proc,\r
+        IN      <a href="#robo269">cl_async_proc_item_t</a>* const     p_item );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_async_proc\r
+               [in] Pointer to an asynchronous processor structure to initialize.\r
+\r
+       p_item\r
+               [in] Pointer to an asynchronous processor item to queue for execution.\r
+               The callback and context fields of the item must be valid.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Asynchronous Processor, <a href="#robo268">cl_async_proc_init</a>, <a href="#robo272">cl_pfn_async_proc_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo271">[Structures]<a name="Component20Library3a20Asynchronous20Processor2fcl5fasync5fproc5ft">\r
+Component Library: Asynchronous Processor/cl_async_proc_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_async_proc_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Asynchronous processor structure.\r
+\r
+       The <strong>cl_async_proc_t</strong> structure should be treated as opaque, and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_async_proc\r
+{\r
+        <a href="./cl_threadpool_h.html#robo662">cl_thread_pool_t</a>        thread_pool;\r
+        <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a>                      item_queue;\r
+        cl_spinlock_t           lock;\r
+        cl_state_t                      state;\r
+\r
+} <strong>cl_async_proc_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       item_pool\r
+               <a href="./cl_pool_h.html#robo24">Pool</a> of items storing the callback function and contexts to be invoked\r
+               by the asynchronous processor's threads.\r
+\r
+       thread_pool\r
+               Thread pool that will invoke the callbacks.\r
+\r
+       item_queue\r
+               Queue of items that the threads should process.\r
+\r
+       lock\r
+               Lock used to synchronize access to the item pool and queue.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Asynchronous Processor\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo272">[Definitions]<a name="Component20Library3a20Asynchronous20Processor2fcl5fpfn5fasync5fproc5fcb5ft">\r
+Component Library: Asynchronous Processor/cl_pfn_async_proc_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_async_proc_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_async_proc_cb_t</strong> function type defines the prototype for\r
+       callbacks queued to and invoked by the asynchronous processor.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_async_proc_cb_t</strong>)(\r
+        IN      struct _cl_async_proc_item      *p_item );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               Pointer to the <a href="#robo269">cl_async_proc_item_t</a> structure that was queued in\r
+               a call to <a href="#robo270">cl_async_proc_queue</a>.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for the\r
+       function provided by users as a parameter to the <a href="#robo270">cl_async_proc_queue</a>\r
+       function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Asynchronous Processor, <a href="#robo269">cl_async_proc_item_t</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_atomic_h.html b/trunk/docs/complib/cl_atomic_h.html
new file mode 100644 (file)
index 0000000..eaf891f
--- /dev/null
@@ -0,0 +1,272 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_atomic_h.html</title>\r
+<!-- Source: ./inc/complib/cl_atomic.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_atomic.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo7">[Modules]<a name="Component20Library2fAtomic20Operations">\r
+Component Library/Atomic Operations</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Atomic Operations\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The Atomic Operations functions allow callers to operate on\r
+       32-bit signed integers in an atomic fashion.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo273">[Functions]<a name="Component20Library3a20Atomic20Operations2fcl5fatomic5fadd">\r
+Component Library: Atomic Operations/cl_atomic_add</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_atomic_add</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_atomic_add</strong> function atomically adds a value to a\r
+       32-bit signed integer and returns the resulting value.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT int32_t CL_API\r
+<strong>cl_atomic_add</strong>(\r
+        IN      atomic32_t* const       p_value,\r
+        IN      const int32_t           increment );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_value\r
+               [in] Pointer to a 32-bit integer that will be added to.\r
+\r
+       increment\r
+               [in] Value by which to increment the integer pointed to by p_value.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the value pointed to by p_value after the addition.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The provided increment is added to the value and the result returned in\r
+       one atomic operation.\r
+\r
+       <strong>cl_atomic_add</strong> maintains data consistency without requiring additional\r
+       synchronization mechanisms in multi-threaded environments.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Atomic Operations, <a href="#robo276">cl_atomic_inc</a>, <a href="#robo275">cl_atomic_dec</a>, <a href="#robo277">cl_atomic_sub</a>,\r
+       <a href="#robo278">cl_atomic_xchg</a>, <a href="#robo274">cl_atomic_comp_xchg</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo274">[Functions]<a name="Component20Library3a20Atomic20Operations2fcl5fatomic5fcomp5fxchg">\r
+Component Library: Atomic Operations/cl_atomic_comp_xchg</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_atomic_comp_xchg</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_atomic_comp_xchg</strong> function atomically compares a 32-bit signed\r
+       integer to a desired value, sets that integer to the\r
+       specified value if equal, and returns the initial value.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT int32_t CL_API\r
+<strong>cl_atomic_comp_xchg</strong>(\r
+        IN      atomic32_t* const       p_value,\r
+        IN      const int32_t           compare,\r
+        IN      const int32_t           new_value );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_value\r
+               [in] Pointer to a 32-bit integer to exchange with new_value.\r
+\r
+       compare\r
+               [in] Value to compare to the value pointed to by p_value.\r
+\r
+       new_value\r
+               [in] Value to assign if the value pointed to by p_value is equal to\r
+               the value specified by the compare parameter.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the initial value of the variable pointed to by p_value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The value pointed to by p_value is compared to the value specified by the\r
+       compare parameter.  If the two values are equal, the p_value variable is\r
+       set to new_value.  The initial value pointed to by p_value is returned.\r
+\r
+       <strong>cl_atomic_comp_xchg</strong> maintains data consistency without requiring additional\r
+       synchronization mechanisms in multi-threaded environments.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Atomic Operations, <a href="#robo276">cl_atomic_inc</a>, <a href="#robo275">cl_atomic_dec</a>, <a href="#robo273">cl_atomic_add</a>,\r
+       <a href="#robo277">cl_atomic_sub</a>, <a href="#robo278">cl_atomic_xchg</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo275">[Functions]<a name="Component20Library3a20Atomic20Operations2fcl5fatomic5fdec">\r
+Component Library: Atomic Operations/cl_atomic_dec</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_atomic_dec</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_atomic_dec</strong> function atomically decrements a 32-bit signed\r
+       integer and returns the decremented value.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT int32_t CL_API\r
+<strong>cl_atomic_dec</strong>(\r
+        IN      atomic32_t* const       p_value );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_value\r
+               [in] Pointer to a 32-bit integer to decrement.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the decremented value pointed to by p_value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The provided value is decremented and its value returned in one atomic\r
+       operation.\r
+\r
+       <strong>cl_atomic_dec</strong> maintains data consistency without requiring additional\r
+       synchronization mechanisms in multi-threaded environments.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Atomic Operations, <a href="#robo276">cl_atomic_inc</a>, <a href="#robo273">cl_atomic_add</a>, <a href="#robo277">cl_atomic_sub</a>,\r
+       <a href="#robo278">cl_atomic_xchg</a>, <a href="#robo274">cl_atomic_comp_xchg</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo276">[Functions]<a name="Component20Library3a20Atomic20Operations2fcl5fatomic5finc">\r
+Component Library: Atomic Operations/cl_atomic_inc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_atomic_inc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_atomic_inc</strong> function atomically increments a 32-bit signed\r
+       integer and returns the incremented value.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT int32_t CL_API\r
+<strong>cl_atomic_inc</strong>(\r
+        IN      atomic32_t* const       p_value );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_value\r
+               [in] Pointer to a 32-bit integer to increment.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the incremented value pointed to by p_value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The provided value is incremented and its value returned in one atomic\r
+       operation.\r
+\r
+       <strong>cl_atomic_inc</strong> maintains data consistency without requiring additional\r
+       synchronization mechanisms in multi-threaded environments.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Atomic Operations, <a href="#robo275">cl_atomic_dec</a>, <a href="#robo273">cl_atomic_add</a>, <a href="#robo277">cl_atomic_sub</a>,\r
+       <a href="#robo278">cl_atomic_xchg</a>, <a href="#robo274">cl_atomic_comp_xchg</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo277">[Functions]<a name="Component20Library3a20Atomic20Operations2fcl5fatomic5fsub">\r
+Component Library: Atomic Operations/cl_atomic_sub</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_atomic_sub</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_atomic_sub</strong> function atomically subtracts a value from a\r
+       32-bit signed integer and returns the resulting value.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT int32_t CL_API\r
+<strong>cl_atomic_sub</strong>(\r
+        IN      atomic32_t* const       p_value,\r
+        IN      const int32_t           decrement );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_value\r
+               [in] Pointer to a 32-bit integer that will be subtracted from.\r
+\r
+       decrement\r
+               [in] Value by which to decrement the integer pointed to by p_value.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the value pointed to by p_value after the subtraction.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The provided decrement is subtracted from the value and the result\r
+       returned in one atomic operation.\r
+\r
+       <strong>cl_atomic_sub</strong> maintains data consistency without requiring additional\r
+       synchronization mechanisms in multi-threaded environments.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Atomic Operations, <a href="#robo276">cl_atomic_inc</a>, <a href="#robo275">cl_atomic_dec</a>, <a href="#robo273">cl_atomic_add</a>,\r
+       <a href="#robo278">cl_atomic_xchg</a>, <a href="#robo274">cl_atomic_comp_xchg</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo278">[Functions]<a name="Component20Library3a20Atomic20Operations2fcl5fatomic5fxchg">\r
+Component Library: Atomic Operations/cl_atomic_xchg</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_atomic_xchg</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_atomic_xchg</strong> function atomically sets a value of a\r
+       32-bit signed integer and returns the initial value.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT int32_t CL_API\r
+<strong>cl_atomic_xchg</strong>(\r
+        IN      atomic32_t* const       p_value,\r
+        IN      const int32_t           new_value );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_value\r
+               [in] Pointer to a 32-bit integer to exchange with new_value.\r
+\r
+       new_value\r
+               [in] Value to assign.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the initial value pointed to by p_value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The provided value is exchanged with new_value and its initial value\r
+       returned in one atomic operation.\r
+\r
+       <strong>cl_atomic_xchg</strong> maintains data consistency without requiring additional\r
+       synchronization mechanisms in multi-threaded environments.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Atomic Operations, <a href="#robo276">cl_atomic_inc</a>, <a href="#robo275">cl_atomic_dec</a>, <a href="#robo273">cl_atomic_add</a>,\r
+       <a href="#robo277">cl_atomic_sub</a>, <a href="#robo274">cl_atomic_comp_xchg</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_byteswap_h.html b/trunk/docs/complib/cl_byteswap_h.html
new file mode 100644 (file)
index 0000000..8a6bab8
--- /dev/null
@@ -0,0 +1,500 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_byteswap_h.html</title>\r
+<!-- Source: ./inc/complib/cl_byteswap.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_byteswap.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo8">[Modules]<a name="Component20Library2fByte20Swapping">\r
+Component Library/Byte Swapping</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Byte Swapping\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The byte swapping functions and macros allow swapping bytes from network\r
+       byte order to host byte order.\r
+\r
+       All data transmitted between systems should be in network byte order.\r
+       In order to utilize such data, it must be converted to host byte order\r
+       before use.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Functions:\r
+               <a href="#robo287">cl_ntoh16</a>, <a href="#robo280">cl_hton16</a>, <a href="#robo288">cl_ntoh32</a>, <a href="#robo281">cl_hton32</a>, <a href="#robo291">cl_ntoh64</a>, <a href="#robo284">cl_hton64</a>,\r
+               <a href="#robo285">cl_ntoh</a>\r
+\r
+       Macros:\r
+               <a href="#robo286">CL_NTOH16</a>, <a href="#robo279">CL_HTON16</a>, <a href="#robo289">CL_NTOH32</a>, <a href="#robo282">CL_HTON32</a>, <a href="#robo290">CL_NTOH64</a>, <a href="#robo283">CL_HTON64</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo279">[Definitions]<a name="Component20Library3a20Byte20Swapping2fCL5fHTON16">\r
+Component Library: Byte Swapping/CL_HTON16</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>CL_HTON16</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>CL_HTON16</strong> macro converts a 16-bit value from host byte order to\r
+       network byte order.  The <strong>CL_HTON16</strong> macro will cause constant values to be\r
+       swapped by the pre-processor.  For variables, <strong>CL_HTON16</strong> is less efficient\r
+       than the <a href="#robo280">cl_hton16</a> function.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>CL_HTON16</strong>( val );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       val\r
+               [in] 16-bit value to swap from host byte order to network byte order.\r
+</pre>\r
+</span><p><strong>RESULT</strong></p>\r
+<span class="RESULT"><pre>       Value of val converted to network byte order.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This macro is analogous to <a href="#robo286">CL_NTOH16</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Byte Swapping, <a href="#robo286">CL_NTOH16</a>, <a href="#robo282">CL_HTON32</a>, <a href="#robo283">CL_HTON64</a>,\r
+       <a href="#robo280">cl_hton16</a>, <a href="#robo281">cl_hton32</a>, <a href="#robo284">cl_hton64</a>, <a href="#robo285">cl_ntoh</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo280">[Functions]<a name="Component20Library3a20Byte20Swapping2fcl5fhton16">\r
+Component Library: Byte Swapping/cl_hton16</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_hton16</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_hton16</strong> function converts a 16-bit value from host byte order to\r
+       network byte order.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       uint16_t\r
+*       <strong>cl_hton16</strong>(\r
+*               IN      const uint16_t  val );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       val\r
+               [in] Value to swap from host byte order to network byte order .\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Value of val converted to network byte order.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is analogous to <a href="#robo287">cl_ntoh16</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Byte Swapping, <a href="#robo287">cl_ntoh16</a>, <a href="#robo281">cl_hton32</a>, <a href="#robo284">cl_hton64</a>, <a href="#robo285">cl_ntoh</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo282">[Definitions]<a name="Component20Library3a20Byte20Swapping2fCL5fHTON32">\r
+Component Library: Byte Swapping/CL_HTON32</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>CL_HTON32</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>CL_HTON32</strong> macro converts a 32-bit value from host byte order to\r
+       network byte order.  The <strong>CL_HTON32</strong> macro will cause constant values to be\r
+       swapped by the pre-processor.  For variables, <strong>CL_HTON32</strong> is less efficient\r
+       than the <a href="#robo281">cl_hton32</a> function.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>CL_HTON32</strong>( val );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       val\r
+               [in] 32-bit value to swap from host byte order to network byte order.\r
+</pre>\r
+</span><p><strong>RESULT</strong></p>\r
+<span class="RESULT"><pre>       Value of val converted to network byte order.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This macro is analogous to <a href="#robo289">CL_NTOH32</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Byte Swapping, <a href="#robo289">CL_NTOH32</a>, <a href="#robo279">CL_HTON16</a>, <a href="#robo283">CL_HTON64</a>,\r
+       <a href="#robo280">cl_hton16</a>, <a href="#robo281">cl_hton32</a>, <a href="#robo284">cl_hton64</a>, <a href="#robo285">cl_ntoh</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo281">[Functions]<a name="Component20Library3a20Byte20Swapping2fcl5fhton32">\r
+Component Library: Byte Swapping/cl_hton32</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_hton32</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_hton32</strong> function converts a 32-bit value from host byte order to\r
+       network byte order.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       uint32_t\r
+*       <strong>cl_hton32</strong>(\r
+*               IN      const uint32_t  val );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       val\r
+               [in] Value to swap from host byte order to network byte order .\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Value of val converted to network byte order.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is analogous to <a href="#robo288">cl_ntoh32</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Byte Swapping, <a href="#robo288">cl_ntoh32</a>, <a href="#robo280">cl_hton16</a>, <a href="#robo284">cl_hton64</a>, <a href="#robo285">cl_ntoh</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo283">[Definitions]<a name="Component20Library3a20Byte20Swapping2fCL5fHTON64">\r
+Component Library: Byte Swapping/CL_HTON64</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>CL_HTON64</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>CL_HTON64</strong> macro converts a 64-bit value from host byte order to\r
+       network byte order.  The <strong>CL_HTON64</strong> macro will cause constant values to be\r
+       swapped by the pre-processor.  For variables, <strong>CL_HTON64</strong> is less efficient\r
+       than the <a href="#robo284">cl_hton64</a> function.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>CL_HTON64</strong>( val );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       val\r
+               [in] 64-bit value to swap from host byte order to network byte order.\r
+</pre>\r
+</span><p><strong>RESULT</strong></p>\r
+<span class="RESULT"><pre>       Value of val converted to network byte order.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This macro is analogous to <a href="#robo290">CL_NTOH64</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Byte Swapping, <a href="#robo290">CL_NTOH64</a>, <a href="#robo279">CL_HTON16</a>, <a href="#robo282">CL_HTON32</a>,\r
+       <a href="#robo280">cl_hton16</a>, <a href="#robo281">cl_hton32</a>, <a href="#robo284">cl_hton64</a>, <a href="#robo285">cl_ntoh</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo284">[Functions]<a name="Component20Library3a20Byte20Swapping2fcl5fhton64">\r
+Component Library: Byte Swapping/cl_hton64</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_hton64</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_hton64</strong> function converts a 64-bit value from host byte order to\r
+       network byte order.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       uint64_t\r
+*       <strong>cl_hton64</strong>(\r
+*               IN      const uint64_t  val );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       val\r
+               [in] Value to swap from host byte order to network byte order .\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Value of val converted to network byte order.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is analogous to <a href="#robo291">cl_ntoh64</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Byte Swapping, <a href="#robo291">cl_ntoh64</a>, <a href="#robo280">cl_hton16</a>, <a href="#robo281">cl_hton32</a>, <a href="#robo285">cl_ntoh</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo285">[Functions]<a name="Component20Library3a20Byte20Swapping2fcl5fntoh">\r
+Component Library: Byte Swapping/cl_ntoh</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ntoh</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ntoh</strong> function converts a value from network byte order to\r
+       host byte order.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_ntoh</strong>(\r
+        OUT     char* const                     p_dest,\r
+        IN      const char* const       p_src,\r
+        IN      const uint8_t           size )\r
+{\r
+#if CPU_LE\r
+        uint8_t i;\r
+        char    temp;\r
+\r
+        if( p_src == p_dest )\r
+        {\r
+                /* Swap in place if source and destination are the same. */\r
+                for( i = 0; i &lt; size / 2; i++ )\r
+                {\r
+                        temp = p_dest[i];\r
+                        p_dest[i] = p_src[size - 1 - i];\r
+                        p_dest[size - 1 - i] = temp;\r
+                }\r
+        }\r
+        else\r
+        {\r
+                for( i = 0; i &lt; size; i++ )\r
+                        p_dest[i] = p_src[size - 1 - i];\r
+        }\r
+#else\r
+        /*\r
+         * If the source and destination are not the same, copy the source to\r
+         * the destination.\r
+         */\r
+        if( p_src != p_dest )\r
+                <a href="./cl_memory_h.html#robo431">cl_memcpy</a>( p_dest, p_src, size );\r
+#endif\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dest\r
+               [in] Pointer to a byte array to contain the converted value of p_src.\r
+\r
+       p_src\r
+               [in] Pointer to a byte array to be converted from network byte\r
+               ordering.\r
+\r
+       size\r
+               [in] Number of bytes to swap.p_dest\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_ntoh</strong> can perform in place swapping if both p_src and p_dest point to\r
+       the same buffer.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Byte Swapping, <a href="#robo287">cl_ntoh16</a>, <a href="#robo288">cl_ntoh32</a>, <a href="#robo291">cl_ntoh64</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo286">[Definitions]<a name="Component20Library3a20Byte20Swapping2fCL5fNTOH16">\r
+Component Library: Byte Swapping/CL_NTOH16</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>CL_NTOH16</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>CL_NTOH16</strong> macro converts a 16-bit value from network byte order to\r
+       host byte order.  The <strong>CL_NTOH16</strong> macro will cause constant values to be\r
+       swapped by the pre-processor.  For variables, <strong>CL_NTOH16</strong> is less efficient\r
+       than the <a href="#robo287">cl_ntoh16</a> function.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>CL_NTOH16</strong>( val );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       val\r
+               [in] 16-bit value to swap from network byte order to host byte order.\r
+</pre>\r
+</span><p><strong>RESULT</strong></p>\r
+<span class="RESULT"><pre>       Value of val converted to host byte order.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This macro is analogous to <a href="#robo279">CL_HTON16</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Byte Swapping, <a href="#robo279">CL_HTON16</a>, <a href="#robo289">CL_NTOH32</a>, <a href="#robo290">CL_NTOH64</a>,\r
+       <a href="#robo287">cl_ntoh16</a>, <a href="#robo288">cl_ntoh32</a>, <a href="#robo291">cl_ntoh64</a>, <a href="#robo285">cl_ntoh</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo287">[Functions]<a name="Component20Library3a20Byte20Swapping2fcl5fntoh16">\r
+Component Library: Byte Swapping/cl_ntoh16</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ntoh16</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ntoh16</strong> function converts a 16-bit value from network byte order to\r
+       host byte order.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       uint16_t\r
+*       <strong>cl_ntoh16</strong>(\r
+*               IN      const uint16_t  val );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       val\r
+               [in] Value to swap from network byte order to host byte order.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Value of val converted to host byte order.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is analogous to <a href="#robo280">cl_hton16</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Byte Swapping, <a href="#robo280">cl_hton16</a>, <a href="#robo288">cl_ntoh32</a>, <a href="#robo291">cl_ntoh64</a>, <a href="#robo285">cl_ntoh</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo288">[Functions]<a name="Component20Library3a20Byte20Swapping2fcl5fntoh32">\r
+Component Library: Byte Swapping/cl_ntoh32</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ntoh32</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ntoh32</strong> function converts a 32-bit value from network byte order to\r
+       host byte order.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       uint32_t\r
+*       <strong>cl_ntoh32</strong>(\r
+*               IN      const uint32_t  val );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       val\r
+               [in] Value to swap from network byte order to host byte order.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Value of val converted in host byte order.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is analogous to <a href="#robo281">cl_hton32</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Byte Swapping, <a href="#robo281">cl_hton32</a>, <a href="#robo287">cl_ntoh16</a>, <a href="#robo291">cl_ntoh64</a>, <a href="#robo285">cl_ntoh</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo289">[Definitions]<a name="Component20Library3a20Byte20Swapping2fCL5fNTOH32">\r
+Component Library: Byte Swapping/CL_NTOH32</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>CL_NTOH32</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>CL_NTOH32</strong> macro converts a 32-bit value from network byte order to\r
+       host byte order.  The <strong>CL_NTOH32</strong> macro will cause constant values to be\r
+       swapped by the pre-processor.  For variables, <strong>CL_NTOH32</strong> is less efficient\r
+       than the <a href="#robo288">cl_ntoh32</a> function.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>CL_NTOH32</strong>( val );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       val\r
+               [in] 32-bit value to swap from network byte order to host byte order.\r
+</pre>\r
+</span><p><strong>RESULT</strong></p>\r
+<span class="RESULT"><pre>       Value of val converted to host byte order.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This macro is analogous to <a href="#robo282">CL_HTON32</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Byte Swapping, <a href="#robo282">CL_HTON32</a>, <a href="#robo286">CL_NTOH16</a>, <a href="#robo290">CL_NTOH64</a>,\r
+       <a href="#robo287">cl_ntoh16</a>, <a href="#robo288">cl_ntoh32</a>, <a href="#robo291">cl_ntoh64</a>, <a href="#robo285">cl_ntoh</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo290">[Definitions]<a name="Component20Library3a20Byte20Swapping2fCL5fNTOH64">\r
+Component Library: Byte Swapping/CL_NTOH64</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>CL_NTOH64</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>CL_NTOH64</strong> macro converts a 64-bit value from network byte order to\r
+       host byte order.  The <strong>CL_NTOH64</strong> macro will cause constant values to be\r
+       swapped by the pre-processor.  For variables, <strong>CL_NTOH64</strong> is less efficient\r
+       than the <a href="#robo291">cl_ntoh64</a> function.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>CL_NTOH64</strong>( val );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       val\r
+               [in] 64-bit value to swap from network byte order to host byte order.\r
+</pre>\r
+</span><p><strong>RESULT</strong></p>\r
+<span class="RESULT"><pre>       Value of val converted to host byte order.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This macro is analogous to <a href="#robo283">CL_HTON64</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Byte Swapping, <a href="#robo283">CL_HTON64</a>, <a href="#robo286">CL_NTOH16</a>, <a href="#robo289">CL_NTOH32</a>,\r
+       <a href="#robo287">cl_ntoh16</a>, <a href="#robo288">cl_ntoh32</a>, <a href="#robo291">cl_ntoh64</a>, <a href="#robo285">cl_ntoh</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo291">[Functions]<a name="Component20Library3a20Byte20Swapping2fcl5fntoh64">\r
+Component Library: Byte Swapping/cl_ntoh64</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ntoh64</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ntoh64</strong> function converts a 64-bit value from network byte order to\r
+       host byte order.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       uint64_t\r
+*       <strong>cl_ntoh64</strong>(\r
+*               IN      const uint64_t  val );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       val\r
+               [in] Value to swap from network byte order to host byte order.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Value of val converted in host byte order.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is analogous to <a href="#robo284">cl_hton64</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Byte Swapping, <a href="#robo284">cl_hton64</a>, <a href="#robo287">cl_ntoh16</a>, <a href="#robo288">cl_ntoh32</a>, <a href="#robo285">cl_ntoh</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_comppool_h.html b/trunk/docs/complib/cl_comppool_h.html
new file mode 100644 (file)
index 0000000..976452f
--- /dev/null
@@ -0,0 +1,604 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_comppool_h.html</title>\r
+<!-- Source: ./inc/complib/cl_comppool.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_comppool.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo9">[Modules]<a name="Component20Library2fComposite20Pool">\r
+Component Library/Composite Pool</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Composite <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The Composite <a href="./cl_pool_h.html#robo24">Pool</a> provides a self-contained and self-sustaining pool of\r
+       user defined composite objects.\r
+\r
+       A composite object is an object that is composed of one or more\r
+       sub-objects, each of which needs to be treated separately for\r
+       initialization. Objects can be retrieved from the pool as long as there\r
+       is memory in the system.\r
+\r
+       To aid in object oriented design, the composite pool provides the user\r
+       the ability to specify callbacks that are invoked for each object for\r
+       construction, initialization, and destruction. Constructor and destructor\r
+       callback functions may not fail.\r
+\r
+       A composite pool does not return memory to the system as the user returns\r
+       objects to the pool. The only method of returning memory to the system is\r
+       to destroy the pool.\r
+\r
+       The composite pool functions operates on a <a href="#robo299">cl_cpool_t</a> structure which\r
+       should be treated as opaque and should be manipulated only through the\r
+       provided functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo299">cl_cpool_t</a>\r
+\r
+       Callbacks:\r
+               <a href="#robo302">cl_pfn_cpool_init_t</a>, <a href="#robo301">cl_pfn_cpool_dtor_t</a>\r
+\r
+       Initialization/Destruction:\r
+               <a href="#robo292">cl_cpool_construct</a>, <a href="#robo297">cl_cpool_init</a>, <a href="#robo294">cl_cpool_destroy</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo295">cl_cpool_get</a>, <a href="#robo298">cl_cpool_put</a>, <a href="#robo296">cl_cpool_grow</a>\r
+\r
+       Attributes:\r
+               <a href="#robo300">cl_is_cpool_inited</a>, <a href="#robo293">cl_cpool_count</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo292">[Functions]<a name="Component20Library3a20Composite20Pool2fcl5fcpool5fconstruct">\r
+Component Library: Composite Pool/cl_cpool_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_cpool_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_cpool_construct</strong> function constructs a composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_cpool_construct</strong>(\r
+        IN      <a href="#robo299">cl_cpool_t</a>* const       p_pool );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo299">cl_cpool_t</a> structure whose state to initialize.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="./cl_pool_h.html#robo536">cl_pool_init</a>, <a href="#robo294">cl_cpool_destroy</a>, <a href="#robo300">cl_is_cpool_inited</a>.\r
+\r
+       Calling <strong>cl_cpool_construct</strong> is a prerequisite to calling any other\r
+       composite pool function except <a href="#robo297">cl_cpool_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Composite <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo297">cl_cpool_init</a>, <a href="#robo294">cl_cpool_destroy</a>, <a href="#robo300">cl_is_cpool_inited</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo293">[Functions]<a name="Component20Library3a20Composite20Pool2fcl5fcpool5fcount">\r
+Component Library: Composite Pool/cl_cpool_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_cpool_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_cpool_count</strong> function returns the number of available objects\r
+       in a composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_cpool_count</strong>(\r
+        IN      <a href="#robo299">cl_cpool_t</a>* const       p_pool )\r
+{\r
+        CL_ASSERT( p_pool );\r
+        return( <a href="./cl_qcomppool_h.html#robo544">cl_qcpool_count</a>( &amp;p_pool-&gt;qcpool ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo299">cl_cpool_t</a> structure for which the number of\r
+               available objects is requested.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the number of objects available in the specified\r
+       composite pool.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Composite <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo294">[Functions]<a name="Component20Library3a20Composite20Pool2fcl5fcpool5fdestroy">\r
+Component Library: Composite Pool/cl_cpool_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_cpool_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_cpool_destroy</strong> function destroys a composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_cpool_destroy</strong>(\r
+        IN      <a href="#robo299">cl_cpool_t</a>* const       p_pool )\r
+{\r
+        CL_ASSERT( p_pool );\r
+\r
+        <a href="./cl_qcomppool_h.html#robo545">cl_qcpool_destroy</a>( &amp;p_pool-&gt;qcpool );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo299">cl_cpool_t</a> structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       All memory allocated for composite objects is freed. The destructor\r
+       callback, if any, will be invoked for every allocated object. Further\r
+       operations on the composite pool should not be attempted after\r
+       <strong>cl_cpool_destroy</strong> is invoked.\r
+\r
+       This function should only be called after a call to <a href="#robo292">cl_cpool_construct</a>.\r
+\r
+       In a debug build, <strong>cl_cpool_destroy</strong> asserts that all objects are in\r
+       the pool.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Composite <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo292">cl_cpool_construct</a>, <a href="#robo297">cl_cpool_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo295">[Functions]<a name="Component20Library3a20Composite20Pool2fcl5fcpool5fget">\r
+Component Library: Composite Pool/cl_cpool_get</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_cpool_get</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_cpool_get</strong> function retrieves an object from a\r
+       composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void* CL_API\r
+<strong>cl_cpool_get</strong>(\r
+        IN      <a href="#robo299">cl_cpool_t</a>* const       p_pool )\r
+{\r
+        cl_pool_obj_t   *p_pool_obj;\r
+\r
+        CL_ASSERT( p_pool );\r
+\r
+        p_pool_obj = (cl_pool_obj_t*)<a href="./cl_qcomppool_h.html#robo546">cl_qcpool_get</a>( &amp;p_pool-&gt;qcpool );\r
+        if( !p_pool_obj )\r
+                return( NULL );\r
+\r
+        CL_ASSERT( p_pool_obj-&gt;list_obj.p_object );\r
+        return( (void*)p_pool_obj-&gt;list_obj.p_object );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo299">cl_cpool_t</a> structure from which to retrieve\r
+               an object.\r
+\r
+ RETURN VALUES\r
+       Returns a pointer to the first component of a composite object.\r
+\r
+       Returns NULL if the pool is empty and can not be grown automatically.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_cpool_get</strong> returns the object at the head of the pool. If the pool is\r
+       empty, it is automatically grown to accommodate this request unless the\r
+       grow_size parameter passed to the <a href="#robo297">cl_cpool_init</a> function was zero.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Composite <a href="./cl_pool_h.html#robo24">Pool</a>, cl_cpool_get_tail, <a href="#robo298">cl_cpool_put</a>, <a href="#robo296">cl_cpool_grow</a>,\r
+       <a href="#robo293">cl_cpool_count</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo296">[Functions]<a name="Component20Library3a20Composite20Pool2fcl5fcpool5fgrow">\r
+Component Library: Composite Pool/cl_cpool_grow</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_cpool_grow</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_cpool_grow</strong> function grows a composite pool by\r
+       the specified number of objects.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_cpool_grow</strong>(\r
+        IN      <a href="#robo299">cl_cpool_t</a>* const       p_pool,\r
+        IN      const size_t            obj_count )\r
+{\r
+        CL_ASSERT( p_pool );\r
+        return( <a href="./cl_qcomppool_h.html#robo547">cl_qcpool_grow</a>( &amp;p_pool-&gt;qcpool, obj_count ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo299">cl_cpool_t</a> structure whose capacity to grow.\r
+\r
+       obj_count\r
+               [in] Number of objects by which to grow the pool.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the composite pool grew successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to grow the\r
+       composite pool.\r
+\r
+       <a href="./cl_types_h.html#robo304">cl_status_t</a> value returned by optional initialization callback function\r
+       specified by the pfn_initializer parameter passed to the\r
+       <a href="#robo297">cl_cpool_init</a> function.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       It is not necessary to call <strong>cl_cpool_grow</strong> if the pool is\r
+       configured to grow automatically.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Composite <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo297">[Functions]<a name="Component20Library3a20Composite20Pool2fcl5fcpool5finit">\r
+Component Library: Composite Pool/cl_cpool_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_cpool_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_cpool_init</strong> function initializes a composite pool for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_cpool_init</strong>(\r
+        IN      <a href="#robo299">cl_cpool_t</a>* const               p_pool,\r
+        IN      const size_t                    min_size,\r
+        IN      const size_t                    max_size,\r
+        IN      const size_t                    grow_size,\r
+        IN      size_t* const                   component_sizes,\r
+        IN      const uint32_t                  num_components,\r
+        IN      <a href="#robo302">cl_pfn_cpool_init_t</a>             pfn_initializer OPTIONAL,\r
+        IN      <a href="#robo301">cl_pfn_cpool_dtor_t</a>             pfn_destructor OPTIONAL,\r
+        IN      const void* const               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo299">cl_cpool_t</a> structure to initialize.\r
+\r
+       min_size\r
+               [in] Minimum number of objects that the pool should support. All\r
+               necessary allocations to allow storing the minimum number of items\r
+               are performed at initialization time, and all necessary callbacks\r
+               successfully invoked.\r
+\r
+       max_size\r
+               [in] Maximum number of objects to which the pool is allowed to grow.\r
+               A value of zero specifies no maximum.\r
+\r
+       grow_size\r
+               [in] Number of objects to allocate when incrementally growing the pool.\r
+               A value of zero disables automatic growth.\r
+\r
+       component_sizes\r
+               [in] Pointer to the first entry in an array of sizes describing,\r
+               in order, the sizes of the components that make up a composite object.\r
+\r
+       num_components\r
+               [in] Number of components that make up a composite object.\r
+\r
+       pfn_initializer\r
+               [in] Initialization callback to invoke for every new object when\r
+               growing the pool. This parameter may be NULL only if the objects\r
+               stored in the composite pool consist of only one component.\r
+               See the cl_pfn_cpool_init function type declaration for details\r
+               about the callback function.\r
+\r
+       pfn_destructor\r
+               [in] Destructor callback to invoke for every object before memory for\r
+               that object is freed. This parameter is optional and may be NULL.\r
+               See the cl_pfn_cpool_dtor function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the composite pool was initialized successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize the\r
+       composite pool.\r
+\r
+       CL_INVALID_SETTING if a NULL constructor was provided for composite objects\r
+       consisting of more than one component.  Also returns CL_INVALID_SETTING if\r
+       the maximum size is non-zero and less than the minimum size.\r
+\r
+       Other <a href="./cl_types_h.html#robo304">cl_status_t</a> value returned by optional initialization callback function\r
+       specified by the pfn_initializer parameter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_cpool_init</strong> initializes, and if necessary, grows the pool to\r
+       the capacity desired.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Composite <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo292">cl_cpool_construct</a>, <a href="#robo294">cl_cpool_destroy</a>,\r
+       <a href="#robo295">cl_cpool_get</a>, <a href="#robo298">cl_cpool_put</a>, <a href="#robo296">cl_cpool_grow</a>,\r
+       <a href="#robo293">cl_cpool_count</a>, cl_pfn_cpool_ctor_t, <a href="#robo302">cl_pfn_cpool_init_t</a>,\r
+       <a href="#robo301">cl_pfn_cpool_dtor_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo298">[Functions]<a name="Component20Library3a20Composite20Pool2fcl5fcpool5fput">\r
+Component Library: Composite Pool/cl_cpool_put</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_cpool_put</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_cpool_put</strong> function returns an object to a composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_cpool_put</strong>(\r
+        IN      <a href="#robo299">cl_cpool_t</a>* const       p_pool,\r
+        IN      void* const                     p_object )\r
+{\r
+        cl_pool_obj_t   *p_pool_obj;\r
+\r
+        CL_ASSERT( p_pool );\r
+        CL_ASSERT( p_object );\r
+\r
+        /* Calculate the offset to the list object representing this object. */\r
+        p_pool_obj = (cl_pool_obj_t*)\r
+                (((uint8_t*)p_object) - sizeof(cl_pool_obj_t));\r
+\r
+        /* good sanity check */\r
+        CL_ASSERT( p_pool_obj-&gt;list_obj.p_object == p_object );\r
+\r
+        <a href="./cl_qcomppool_h.html#robo549">cl_qcpool_put</a>( &amp;p_pool-&gt;qcpool, (<a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>*)p_pool_obj );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo299">cl_cpool_t</a> structure to which to return\r
+               an object.\r
+\r
+       p_object\r
+               [in] Pointer to the first component of an object to return to the pool.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_cpool_put</strong> places the returned object at the head of the pool.\r
+\r
+       The object specified by the p_object parameter must have been\r
+       retrieved from the pool by a previous call to <a href="#robo295">cl_cpool_get</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Composite <a href="./cl_pool_h.html#robo24">Pool</a>, cl_cpool_put_tail, <a href="#robo295">cl_cpool_get</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo299">[Structures]<a name="Component20Library3a20Composite20Pool2fcl5fcpool5ft">\r
+Component Library: Composite Pool/cl_cpool_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_cpool_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Composite pool structure.\r
+\r
+       The <strong>cl_cpool_t</strong> structure should be treated as opaque and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_cpool\r
+{\r
+        <a href="./cl_qcomppool_h.html#robo551">cl_qcpool_t</a>                             qcpool;\r
+        <a href="#robo302">cl_pfn_cpool_init_t</a>             pfn_init;\r
+        <a href="#robo301">cl_pfn_cpool_dtor_t</a>             pfn_dtor;\r
+        const void                              *context;\r
+\r
+} <strong>cl_cpool_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       qcpool\r
+               Quick composite pool that manages all objects.\r
+\r
+       pfn_init\r
+               Pointer to the user's initializer callback, used by the pool\r
+               to translate the quick composite pool's initializer callback to\r
+               a composite pool initializer callback.\r
+\r
+       pfn_dtor\r
+               Pointer to the user's destructor callback, used by the pool\r
+               to translate the quick composite pool's destructor callback to\r
+               a composite pool destructor callback.\r
+\r
+       context\r
+               User's provided context for callback functions, used by the pool\r
+               to when invoking callbacks.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Composite <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo300">[Functions]<a name="Component20Library3a20Composite20Pool2fcl5fis5fcpool5finited">\r
+Component Library: Composite Pool/cl_is_cpool_inited</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_cpool_inited</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_cpool_inited</strong> function returns whether a composite pool was\r
+       successfully initialized.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE boolean_t CL_API\r
+<strong>cl_is_cpool_inited</strong>(\r
+        IN      const <a href="#robo299">cl_cpool_t</a>* const p_pool )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_pool );\r
+        return( <a href="./cl_qcomppool_h.html#robo539">cl_is_qcpool_inited</a>( &amp;p_pool-&gt;qcpool ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo299">cl_cpool_t</a> structure whose initialization state\r
+               to check.\r
+\r
+ RETURN VALUES\r
+       TRUE if the composite pool was initialized successfully.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows checking the state of a composite pool to determine if invoking\r
+       member functions is appropriate.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Composite <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo301">[Definitions]<a name="Component20Library3a20Composite20Pool2fcl5fpfn5fcpool5fdtor5ft">\r
+Component Library: Composite Pool/cl_pfn_cpool_dtor_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_cpool_dtor_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_cpool_dtor_t</strong> function type defines the prototype for\r
+       functions used as destructor for objects being deallocated by a\r
+       composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_cpool_dtor_t</strong>)(\r
+        IN      void* const                     p_object,\r
+        IN      void*                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_object\r
+               [in] Pointer to an object to destruct.\r
+\r
+       context\r
+               [in] Context provided in the call to <a href="#robo297">cl_cpool_init</a>.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the function provided by the user as an optional parameter to the\r
+       <a href="#robo297">cl_cpool_init</a> function.\r
+\r
+       The destructor is invoked once per allocated object, allowing the user\r
+       to perform any necessary cleanup. Users should not attempt to deallocate\r
+       the memory for the composite object, as the composite pool manages\r
+       object allocation and deallocation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Composite <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo297">cl_cpool_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo302">[Definitions]<a name="Component20Library3a20Composite20Pool2fcl5fpfn5fcpool5finit5ft">\r
+Component Library: Composite Pool/cl_pfn_cpool_init_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_cpool_init_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_cpool_init_t</strong> function type defines the prototype for\r
+       functions used as initializers for objects being allocated by a\r
+       composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./cl_types_h.html#robo304">cl_status_t</a>\r
+(CL_API *<strong>cl_pfn_cpool_init_t</strong>)(\r
+        IN      void** const            p_comp_array,\r
+        IN      const uint32_t          num_components,\r
+        IN      void*                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_object\r
+               [in] Pointer to an object to initialize.\r
+\r
+       context\r
+               [in] Context provided in a call to <a href="#robo297">cl_cpool_init</a>.\r
+\r
+ RETURN VALUES\r
+       Return CL_SUCCESS to indicates that initialization of the object\r
+       was successful and that initialization of further objects may continue.\r
+\r
+       Other <a href="./cl_types_h.html#robo304">cl_status_t</a> values will be returned by <a href="#robo297">cl_cpool_init</a>\r
+       and <a href="#robo296">cl_cpool_grow</a>.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the function provided by the user as an optional parameter to the\r
+       <a href="#robo297">cl_cpool_init</a> function.\r
+\r
+       The initializer is invoked once per allocated object, allowing the user\r
+       to chain components to form a composite object and perform any necessary\r
+       initialization.  Returning a status other than CL_SUCCESS aborts a grow\r
+       operation, initiated either through <a href="#robo297">cl_cpool_init</a> or <a href="#robo296">cl_cpool_grow</a>, and\r
+       causes the initiating function to fail.  Any non-CL_SUCCESS status will\r
+       be returned by the function that initiated the grow operation.\r
+\r
+       All memory for the requested number of components is pre-allocated.\r
+\r
+       When later performing a <a href="#robo295">cl_cpool_get</a> call, the return value is a pointer\r
+       to the first component.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Composite <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo297">cl_cpool_init</a>, <a href="#robo296">cl_cpool_grow</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_debug_h.html b/trunk/docs/complib/cl_debug_h.html
new file mode 100644 (file)
index 0000000..74edd5b
--- /dev/null
@@ -0,0 +1,534 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_debug_h.html</title>\r
+<!-- Source: ./inc/complib/cl_debug.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_debug.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo10">[Modules]<a name="Component20Library2fDebug20Output">\r
+Component Library/Debug Output</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Debug Output\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The debug output functions and macros send debug messages to the current\r
+       debug target.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo305">[Definitions]<a name="Component20Library3a20Debug20Output2f642dbit20Print20Format">\r
+Component Library: Debug Output/64-bit Print Format</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       64-bit Print Format\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The 64-bit print keywords allow users to use 64-bit values in debug or\r
+       console output.\r
+\r
+       Different platforms define 64-bit print formats differently. The 64-bit\r
+       print formats exposed by the component library are supported in all\r
+       platforms.\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       PRId64\r
+               Print a 64-bit integer in signed decimal format.\r
+       PRIx64\r
+               Print a 64-bit integer in hexadecimal format.\r
+       PRIo64\r
+               Print a 64-bit integer in octal format.\r
+       PRIu64\r
+               Print a 64-bit integer in unsigned decimal format.\r
+</pre>\r
+</span><p><strong>EXAMPLE</strong></p>\r
+<span class="EXAMPLE"><pre>       uint64 MyVal = 2;\r
+       // Print a 64-bit integer in hexadecimal format.\r
+       <a href="#robo307">cl_dbg_out</a>( "MyVal: 0x%" PRIx64 "\n", MyVal );\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Standard print flags to specify padding and precision can still be used\r
+       following the '%' sign in the string preceding the 64-bit print keyword.\r
+\r
+       The above keywords are strings and make use of compilers' string\r
+       concatenation ability.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo306">[Functions]<a name="Component20Library3a20Debug20Output2fcl5fbreak">\r
+Component Library: Debug Output/cl_break</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_break</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_break</strong> function halts execution.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       void\r
+*       <strong>cl_break</strong>();\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       In a release build, <strong>cl_break</strong> has no effect.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo307">[Functions]<a name="Component20Library3a20Debug20Output2fcl5fdbg5fout">\r
+Component Library: Debug Output/cl_dbg_out</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_dbg_out</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_dbg_out</strong> function sends a debug message to the debug target in\r
+       debug builds only.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void\r
+<strong>cl_dbg_out</strong>(\r
+        IN      const char* const       debug_message,\r
+        IN      ... );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       debug_message\r
+               [in] ANSI string formatted identically as for a call to the standard C\r
+               function printf.\r
+\r
+       ...\r
+               [in] Extra parameters for string formatting, as defined for the\r
+               standard C function printf.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       In a release build, <strong>cl_dbg_out</strong> has no effect.\r
+\r
+       The formatting of the debug_message string is the same as for printf\r
+\r
+       <strong>cl_dbg_out</strong> sends the debug message to the current debug target.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Debug Output, <a href="#robo310">cl_msg_out</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo308">[Definitions]<a name="Component20Library3a20Debug20Output2fCL5fENTER">\r
+Component Library: Debug Output/CL_ENTER</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>CL_ENTER</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>CL_ENTER</strong> macro marks the entrance into a function by sending a\r
+       string to the current debug target if the requested debug level matches\r
+       the current debug level.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>CL_ENTER</strong>( DBG_LVL, CHK_LVL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       DBG_LVL\r
+               [in] Debug level for the string to output\r
+\r
+       CHK_LVL\r
+               [in] Current debug level against which to check DBG_LVL\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This macro does not return a value.\r
+</pre>\r
+</span><p><strong>EXAMPLE</strong></p>\r
+<span class="EXAMPLE"><pre>       #define __MODULE__      "my_module"\r
+       #define MY_FUNC_DBG_LVL 1\r
+\r
+       uint32_t        my_dbg_lvl = CL_DBG_ALL;\r
+\r
+       void\r
+       my_func()\r
+       {\r
+               <strong>CL_ENTER</strong>( MY_FUNC_DBG_LVL, my_dbg_lvl );\r
+               <a href="#robo309">CL_EXIT</a>( MY_FUNC_DBG_LVL, my_dbg_lvl );\r
+       }\r
+</pre>\r
+</span><p><strong>RESULT</strong></p>\r
+<span class="RESULT"><pre>       my_module:my_func() [\r
+       my_module:my_func() ]\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The function entrance notification is printed only if all bits set\r
+       in DBG_LVL are also set in CHK_LVL.  CHK_LVL may have additional bits set.\r
+\r
+       If the __MODULE__ preprocessor keyword is defined, that keyword will be\r
+       prepended to the function name, separated with a colon.\r
+\r
+       In multi-processor environments where the current processor can be\r
+       determined, the zero-based number of the processor on which the output\r
+       is generated is prepended to the output.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Debug Output, Debug Levels, <a href="#robo311">CL_PRINT</a>, <a href="#robo309">CL_EXIT</a>, <a href="#robo312">CL_TRACE</a>, <a href="#robo313">CL_TRACE_EXIT</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo309">[Definitions]<a name="Component20Library3a20Debug20Output2fCL5fEXIT">\r
+Component Library: Debug Output/CL_EXIT</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>CL_EXIT</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>CL_EXIT</strong> macro marks the exit from a function by sending a string\r
+       to the current debug target if the requested debug level matches the\r
+       current debug level.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>CL_EXIT</strong>( DBG_LVL, CHK_LVL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       DBG_LVL\r
+               [in] Debug level for the string to output\r
+\r
+       CHK_LVL\r
+               [in] Current debug level against which to check DBG_LVL\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This macro does not return a value.\r
+</pre>\r
+</span><p><strong>EXAMPLE</strong></p>\r
+<span class="EXAMPLE"><pre>       #define __MODULE__      "my_module"\r
+       #define MY_FUNC_DBG_LVL 1\r
+\r
+       uint32_t        my_dbg_lvl = CL_DBG_ALL;\r
+\r
+       void\r
+       my_func()\r
+       {\r
+               <a href="#robo308">CL_ENTER</a>( MY_FUNC_DBG_LVL, my_dbg_lvl );\r
+               <strong>CL_EXIT</strong>( MY_FUNC_DBG_LVL, my_dbg_lvl );\r
+       }\r
+</pre>\r
+</span><p><strong>RESULT</strong></p>\r
+<span class="RESULT"><pre>       my_module:my_func() [\r
+       my_module:my_func() ]\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The exit notification is printed only if all bits set in DBG_LVL are also\r
+       set in CHK_LVL.  CHK_LVL may have additional bits set.\r
+\r
+       The <strong>CL_EXIT</strong> macro must only be used after the CL_ENTRY macro as it\r
+       depends on that macro's implementation.\r
+\r
+       If the __MODULE__ preprocessor keyword is defined, that keyword will be\r
+       prepended to the function name, separated with a colon.\r
+\r
+       In multi-processor environments where the current processor can be\r
+       determined, the zero-based number of the processor on which the output\r
+       is generated is prepended to the output.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Debug Output, Debug Levels, <a href="#robo311">CL_PRINT</a>, <a href="#robo308">CL_ENTER</a>, <a href="#robo312">CL_TRACE</a>, <a href="#robo313">CL_TRACE_EXIT</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo310">[Functions]<a name="Component20Library3a20Debug20Output2fcl5fmsg5fout">\r
+Component Library: Debug Output/cl_msg_out</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_msg_out</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_msg_out</strong> function sends a debug message to the message log target.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void\r
+<strong>cl_msg_out</strong>(\r
+        IN      const char* const       message,\r
+        IN      ... );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       message\r
+               [in] ANSI string formatted identically as for a call to the standard C\r
+               function printf.\r
+\r
+       ...\r
+               [in] Extra parameters for string formatting, as defined for the\r
+               standard C function printf.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_msg_out</strong> is available in both debug and release builds.\r
+\r
+       The formatting of the message string is the same as for printf\r
+\r
+       <strong>cl_msg_out</strong> sends the message to the current message logging target.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Debug Output, <a href="#robo307">cl_dbg_out</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo311">[Definitions]<a name="Component20Library3a20Debug20Output2fCL5fPRINT">\r
+Component Library: Debug Output/CL_PRINT</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>CL_PRINT</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>CL_PRINT</strong> macro sends a string to the current debug target if\r
+       the requested debug level matches the current debug level.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>CL_PRINT</strong>( DBG_LVL, CHK_LVL, STRING );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       DBG_LVL\r
+               [in] Debug level for the string to output\r
+\r
+       CHK_LVL\r
+               [in] Current debug level against which to check DBG_LVL\r
+\r
+       STRING\r
+               [in] String to send to the current debug target.  The string includes\r
+               parentheses in order to allow additional parameters.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This macro does not return a value.\r
+</pre>\r
+</span><p><strong>EXAMPLE</strong></p>\r
+<span class="EXAMPLE"><pre>       #define MY_FUNC_DBG_LVL 1\r
+\r
+       uint32_t        my_dbg_lvl = CL_DBG_ALL;\r
+\r
+       void\r
+       my_func()\r
+       {\r
+               <strong>CL_PRINT</strong>( MY_FUNC_DBG_LVL, my_dbg_lvl, ("Hello %s!\n", "world") );\r
+       }\r
+</pre>\r
+</span><p><strong>RESULT</strong></p>\r
+<span class="RESULT"><pre>       Hello world!\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The requested string is printed only if all bits set in DBG_LVL are also\r
+       set in CHK_LVL unless the most significant bit is set (indicating an\r
+       error), in which case the lower bits are ignored.  CHK_LVL may have\r
+       additional bits set.\r
+\r
+       In multi-processor environments where the current processor can be\r
+       determined, the zero-based number of the processor on which the output\r
+       is generated is prepended to the output.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Debug Output, Debug Levels, <a href="#robo308">CL_ENTER</a>, <a href="#robo309">CL_EXIT</a>, <a href="#robo312">CL_TRACE</a>, <a href="#robo313">CL_TRACE_EXIT</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo312">[Definitions]<a name="Component20Library3a20Debug20Output2fCL5fTRACE">\r
+Component Library: Debug Output/CL_TRACE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>CL_TRACE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>CL_TRACE</strong> macro sends a string to the current debug target if\r
+       the requested debug level matches the current debug level.  The\r
+       output is prepended with the function name and, depending on the\r
+       debug level requested, an indication of the severity of the message.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>CL_TRACE</strong>( DBG_LVL, CHK_LVL, STRING );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       DBG_LVL\r
+               [in] Debug level for the string to output\r
+\r
+       CHK_LVL\r
+               [in] Current debug level against which to check DBG_LVL\r
+\r
+       STRING\r
+               [in] String to send to the current debug target.  The string includes\r
+               parentheses in order to allow additional parameters.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This macro does not return a value.\r
+</pre>\r
+</span><p><strong>EXAMPLE</strong></p>\r
+<span class="EXAMPLE"><pre>       #define __MODULE__      "my_module"\r
+       #define MY_FUNC_DBG_LVL 1\r
+\r
+       uint32_t        my_dbg_lvl = CL_DBG_ALL;\r
+\r
+       void\r
+       my_func()\r
+       {\r
+               <a href="#robo308">CL_ENTER</a>( MY_FUNC_DBG_LVL, my_dbg_lvl );\r
+               <strong>CL_TRACE</strong>( MY_FUNC_DBG_LVL, my_dbg_lvl, ("Hello %s!\n", "world") );\r
+               <a href="#robo309">CL_EXIT</a>( MY_FUNC_DBG_LVL, my_dbg_lvl );\r
+       }\r
+</pre>\r
+</span><p><strong>RESULT</strong></p>\r
+<span class="RESULT"><pre>       my_module:my_func() [\r
+       my_module:my_func(): Hello world!\r
+       my_module:my_func() ]\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The requested string is printed only if all bits set in DBG_LVL are also\r
+       set in CHK_LVL.  CHK_LVL may have additional bits set.\r
+\r
+       The <strong>CL_TRACE</strong> macro must only be used after the CL_ENTRY macro as it\r
+       depends on that macro's implementation.\r
+\r
+       If the DBG_LVL has the upper bit set, the output will contain\r
+       an "!ERROR!" statement between the function name and STRING.\r
+\r
+       If the __MODULE__ preprocessor keyword is defined, that keyword will be\r
+       prepended to the function name, separated with a colon.\r
+\r
+       In multi-processor environments where the current processor can be\r
+       determined, the zero-based number of the processor on which the output\r
+       is generated is prepended to the output.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Debug Output, Debug Levels, <a href="#robo311">CL_PRINT</a>, <a href="#robo308">CL_ENTER</a>, <a href="#robo309">CL_EXIT</a>, <a href="#robo313">CL_TRACE_EXIT</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo313">[Definitions]<a name="Component20Library3a20Debug20Output2fCL5fTRACE5fEXIT">\r
+Component Library: Debug Output/CL_TRACE_EXIT</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>CL_TRACE_EXIT</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>CL_TRACE_EXIT</strong> macro combines the functionality of the <a href="#robo312">CL_TRACE</a> and\r
+       <a href="#robo309">CL_EXIT</a> macros, in that order.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>CL_TRACE_EXIT</strong>(  DBG_LVL, CHK_LVL, STRING );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       DBG_LVL\r
+               [in] Debug level for the string to output\r
+\r
+       CHK_LVL\r
+               [in] Current debug level against which to check DBG_LVL\r
+\r
+       STRING\r
+               [in] String to send to the current debug target.  The string includes\r
+               parentheses in order to allow additional parameters.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This macro does not return a value.\r
+</pre>\r
+</span><p><strong>EXAMPLE</strong></p>\r
+<span class="EXAMPLE"><pre>       #define __MODULE__      "my_module"\r
+       #define MY_FUNC_DBG_LVL 1\r
+\r
+       uint32_t        my_dbg_lvl = CL_DBG_ALL;\r
+\r
+       void\r
+       my_func()\r
+       {\r
+               <a href="#robo308">CL_ENTER</a>( MY_FUNC_DBG_LVL, my_dbg_lvl );\r
+               <strong>CL_TRACE_EXIT</strong>( MY_FUNC_DBG_LVL, my_dbg_lvl, ("Hello %s!\n", "world") );\r
+       }\r
+</pre>\r
+</span><p><strong>RESULT</strong></p>\r
+<span class="RESULT"><pre>       my_module:my_func() [\r
+       my_module:my_func(): Hello world!\r
+       my_module:my_func() ]\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The requested string is printed only if all bits set in DBG_LVL are also\r
+       set in CHK_LVL.  CHK_LVL may have additional bits set.\r
+\r
+       The <strong>CL_TRACE_EXIT</strong> macro must only be used after the CL_ENTRY macro as it\r
+       depends on that macro's implementation.\r
+\r
+       If the DBG_LVL has the upper bit set, the output will contain\r
+       an "!ERROR!" statement between the function name and STRING.\r
+\r
+       If the __MODULE__ preprocessor keyword is defined, that keyword will be\r
+       prepended to the function name, separated with a colon.\r
+\r
+       In multi-processor environments where the current processor can be\r
+       determined, the zero-based number of the processor on which the output\r
+       is generated is prepended to the output.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Debug Output, Debug Levels, <a href="#robo311">CL_PRINT</a>, <a href="#robo308">CL_ENTER</a>, <a href="#robo309">CL_EXIT</a>, <a href="#robo312">CL_TRACE</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo314">[Definitions]<a name="Component20Library3a20Debug20Output2fDebug20Levels">\r
+Component Library: Debug Output/Debug Levels</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Debug Levels\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The debug output macros reserve the upper bit of the debug level to\r
+       convey an error.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#define CL_DBG_DISABLE          0\r
+#define CL_DBG_ERROR            0x80000000\r
+#define CL_DBG_ALL                      0xFFFFFFFF\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       CL_DBG_DISABLE\r
+               Disable all debug output, including errors.\r
+\r
+       CL_DBG_ERROR\r
+               Enable error debug output.\r
+\r
+       CL_DBG_ALL\r
+               Enbale all debug output.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Users can define custom debug levels using the lower 31 bits of their\r
+       debug level to control non-error debug output.  Error messages are\r
+       always displayed, regardless of the lower bit definition.\r
+\r
+       When specifying the debug output desired for non-error messages\r
+       (the CHK_LVL parameter in the debug output macros), users must define\r
+       all bits whose output they are interested in.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Debug Output, <a href="#robo311">CL_PRINT</a>, <a href="#robo308">CL_ENTER</a>, <a href="#robo309">CL_EXIT</a>, <a href="#robo312">CL_TRACE</a>, <a href="#robo313">CL_TRACE_EXIT</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_event_h.html b/trunk/docs/complib/cl_event_h.html
new file mode 100644 (file)
index 0000000..986d418
--- /dev/null
@@ -0,0 +1,274 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_event_h.html</title>\r
+<!-- Source: ./inc/complib/cl_event.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_event.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo11">[Modules]<a name="Component20Library2fEvent">\r
+Component Library/Event</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>Event</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>Event</strong> provides the ability to suspend and wakeup a thread.\r
+\r
+       The event functions operates on a cl_event_t structure which should be\r
+       treated as opaque and should be manipulated only through the provided\r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               cl_event_t\r
+\r
+       Initialization/Destruction:\r
+               <a href="#robo316">cl_event_construct</a>, <a href="#robo318">cl_event_init</a>, <a href="#robo317">cl_event_destroy</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo320">cl_event_signal</a>, <a href="#robo319">cl_event_reset</a>, <a href="#robo321">cl_event_wait_on</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo316">[Functions]<a name="Component20Library3a20Event2fcl5fevent5fconstruct">\r
+Component Library: Event/cl_event_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_event_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_event_construct</strong> function constructs an event.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_event_construct</strong>(\r
+        IN      cl_event_t* const       p_event );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_event\r
+               [in] Pointer to an cl_event_t structure to construct.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo317">cl_event_destroy</a> without first calling <a href="#robo318">cl_event_init</a>.\r
+\r
+       Calling <strong>cl_event_construct</strong> is a prerequisite to calling any other event\r
+       function except <a href="#robo318">cl_event_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo11">Event</a>, <a href="#robo318">cl_event_init</a>, <a href="#robo317">cl_event_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo317">[Functions]<a name="Component20Library3a20Event2fcl5fevent5fdestroy">\r
+Component Library: Event/cl_event_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_event_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_event_destroy</strong> function performs any necessary cleanup of an event.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_event_destroy</strong>(\r
+        IN      cl_event_t* const       p_event );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_event\r
+               [in] Pointer to an cl_event_t structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function should only be called after a call to <a href="#robo316">cl_event_construct</a>\r
+       or <a href="#robo318">cl_event_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo11">Event</a>, <a href="#robo316">cl_event_construct</a>, <a href="#robo318">cl_event_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo318">[Functions]<a name="Component20Library3a20Event2fcl5fevent5finit">\r
+Component Library: Event/cl_event_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_event_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_event_init</strong> function initializes an event for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_event_init</strong>(\r
+        IN      cl_event_t* const       p_event,\r
+        IN      const boolean_t         manual_reset );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_event\r
+               [in] Pointer to an cl_event_t structure to initialize.\r
+\r
+       manual_reset\r
+               [in] If FALSE, indicates that the event resets itself after releasing\r
+               a single waiter.  If TRUE, the event remains in the signalled state\r
+               until explicitly reset by a call to <a href="#robo319">cl_event_reset</a>.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if event initialization succeeded.\r
+\r
+       CL_ERROR otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling event manipulation functions, such as <a href="#robo320">cl_event_signal</a>,\r
+       <a href="#robo319">cl_event_reset</a>, and <a href="#robo321">cl_event_wait_on</a>.\r
+\r
+       The event is initially in a reset state.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo11">Event</a>, <a href="#robo316">cl_event_construct</a>, <a href="#robo317">cl_event_destroy</a>, <a href="#robo320">cl_event_signal</a>,\r
+       <a href="#robo319">cl_event_reset</a>, <a href="#robo321">cl_event_wait_on</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo319">[Functions]<a name="Component20Library3a20Event2fcl5fevent5freset">\r
+Component Library: Event/cl_event_reset</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_event_reset</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_event_reset</strong> function sets an event to the non-signalled state.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_event_reset</strong>(\r
+        IN      cl_event_t* const       p_event );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_event\r
+               [in] Pointer to an cl_event_t structure to reset.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the event was successfully reset.\r
+\r
+       CL_ERROR otherwise.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo11">Event</a>, <a href="#robo320">cl_event_signal</a>, <a href="#robo321">cl_event_wait_on</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo320">[Functions]<a name="Component20Library3a20Event2fcl5fevent5fsignal">\r
+Component Library: Event/cl_event_signal</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_event_signal</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_event_signal</strong> function sets an event to the signalled state and\r
+       releases one or more waiting threads.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_event_signal</strong>(\r
+        IN      cl_event_t* const       p_event );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_event\r
+               [in] Pointer to an cl_event_t structure to set.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the event was successfully signalled.\r
+\r
+       CL_ERROR otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       For auto-reset events, the event is reset automatically once a wait\r
+       operation is satisfied.\r
+\r
+       Triggering the event multiple times does not guarantee that the same\r
+       number of wait operations are satisfied. This is because events are\r
+       either in a signalled on non-signalled state, and triggering an event\r
+       that is already in the signalled state has no effect.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo11">Event</a>, <a href="#robo319">cl_event_reset</a>, <a href="#robo321">cl_event_wait_on</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo321">[Functions]<a name="Component20Library3a20Event2fcl5fevent5fwait5fon">\r
+Component Library: Event/cl_event_wait_on</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_event_wait_on</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_event_wait_on</strong> function waits for the specified event to be\r
+       triggered for a minimum amount of time.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_event_wait_on</strong>(\r
+        IN      cl_event_t* const       p_event,\r
+        IN      const uint32_t          wait_us,\r
+        IN      const boolean_t         interruptible );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_event\r
+               [in] Pointer to an cl_event_t structure on which to wait.\r
+\r
+       wait_us\r
+               [in] Number of microseconds to wait.\r
+\r
+       interruptible\r
+               [in] Indicates whether the wait operation can be interrupted\r
+               by external signals.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the wait operation succeeded in response to the event\r
+       being set.\r
+\r
+       CL_TIMEOUT if the specified time period elapses.\r
+\r
+       CL_NOT_DONE if the wait was interrupted by an external signal.\r
+\r
+       CL_ERROR if the wait operation failed.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       If wait_us is set to EVENT_NO_TIMEOUT, the function will wait until the\r
+       event is triggered and never timeout.\r
+\r
+       If the timeout value is zero, this function simply tests the state of\r
+       the event.\r
+\r
+       If the event is already in the signalled state at the time of the call\r
+       to <strong>cl_event_wait_on</strong>, the call completes immediately with CL_SUCCESS.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo11">Event</a>, <a href="#robo320">cl_event_signal</a>, <a href="#robo319">cl_event_reset</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_fleximap_h.html b/trunk/docs/complib/cl_fleximap_h.html
new file mode 100644 (file)
index 0000000..bc7b647
--- /dev/null
@@ -0,0 +1,948 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_fleximap_h.html</title>\r
+<!-- Source: ./inc/complib/cl_fleximap.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_fleximap.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo12">[Modules]<a name="Component20Library2fFlexi20Map">\r
+Component Library/Flexi Map</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Flexi map implements a binary tree that stores user provided <a href="#robo331">cl_fmap_item_t</a>\r
+       structures.  Each item stored in a flexi map has a unique user defined key\r
+       (duplicates are not allowed).  Flexi map provides the ability to\r
+       efficiently search for an item given a key.  Flexi map allows user defined\r
+       keys of any size.  Storage for keys and a comparisson function are provided\r
+       by users to allow flexi map to store items with arbitrary key values.\r
+\r
+       Flexi map does not allocate any memory, and can therefore not fail\r
+       any operations due to insufficient memory.  Flexi map can thus be useful\r
+       in minimizing the error paths in code.\r
+\r
+       Flexi map is not thread safe, and users must provide serialization when\r
+       adding and removing items from the map.\r
+\r
+       The flexi map functions operate on a <a href="#robo339">cl_fmap_t</a> structure which should\r
+       be treated as opaque and should be manipulated only through the provided\r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo339">cl_fmap_t</a>, <a href="#robo331">cl_fmap_item_t</a>\r
+\r
+       Callbacks:\r
+               <a href="#robo342">cl_pfn_fmap_apply_t</a>\r
+\r
+       Item Manipulation:\r
+               <a href="#robo332">cl_fmap_key</a>\r
+\r
+       Initialization:\r
+               <a href="#robo329">cl_fmap_init</a>\r
+\r
+       Iteration:\r
+               <a href="#robo326">cl_fmap_end</a>, <a href="#robo328">cl_fmap_head</a>, <a href="#robo340">cl_fmap_tail</a>, <a href="#robo334">cl_fmap_next</a>, <a href="#robo335">cl_fmap_prev</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo330">cl_fmap_insert</a>, <a href="#robo327">cl_fmap_get</a>, <a href="#robo338">cl_fmap_remove_item</a>, <a href="#robo336">cl_fmap_remove</a>,\r
+               <a href="#robo337">cl_fmap_remove_all</a>, <a href="#robo333">cl_fmap_merge</a>, <a href="#robo325">cl_fmap_delta</a>\r
+\r
+       Search:\r
+               <a href="#robo323">cl_fmap_apply_func</a>\r
+\r
+       Attributes:\r
+               <a href="#robo324">cl_fmap_count</a>, <a href="#robo341">cl_is_fmap_empty</a>,\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo323">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fapply5ffunc">\r
+Component Library: Flexi Map/cl_fmap_apply_func</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_apply_func</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_apply_func</strong> function executes a specified function\r
+       for every item stored in a flexi map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_fmap_apply_func</strong>(\r
+        IN      const <a href="#robo339">cl_fmap_t</a>* const  p_map,\r
+        IN      <a href="#robo342">cl_pfn_fmap_apply_t</a>             pfn_func,\r
+        IN      const void* const               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo339">cl_fmap_t</a> structure.\r
+\r
+       pfn_func\r
+               [in] Function invoked for every item in the flexi map.\r
+               See the <a href="#robo342">cl_pfn_fmap_apply_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The function provided must not perform any map operations, as these\r
+       would corrupt the flexi map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo342">cl_pfn_fmap_apply_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo324">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fcount">\r
+Component Library: Flexi Map/cl_fmap_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_count</strong> function returns the number of items stored\r
+       in a flexi map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_fmap_count</strong>(\r
+        IN      const <a href="#robo339">cl_fmap_t</a>* const  p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+        return( p_map-&gt;count );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo339">cl_fmap_t</a> structure whose item count to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the number of items stored in the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo341">cl_is_fmap_empty</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo325">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fdelta">\r
+Component Library: Flexi Map/cl_fmap_delta</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_delta</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_delta</strong> function computes the differences between two maps.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_fmap_delta</strong>(\r
+        IN OUT  <a href="#robo339">cl_fmap_t</a>* const        p_map1,\r
+        IN OUT  <a href="#robo339">cl_fmap_t</a>* const        p_map2,\r
+        OUT             <a href="#robo339">cl_fmap_t</a>* const        p_new,\r
+        OUT             <a href="#robo339">cl_fmap_t</a>* const        p_old );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map1\r
+               [in/out] Pointer to the first of two <a href="#robo339">cl_fmap_t</a> structures whose\r
+               differences to compute.\r
+\r
+       p_map2\r
+               [in/out] Pointer to the second of two <a href="#robo339">cl_fmap_t</a> structures whose\r
+               differences to compute.\r
+\r
+       p_new\r
+               [out] Pointer to an empty <a href="#robo339">cl_fmap_t</a> structure that contains the items\r
+               unique to p_map2 upon return from the function.\r
+\r
+       p_old\r
+               [out] Pointer to an empty <a href="#robo339">cl_fmap_t</a> structure that contains the items\r
+               unique to p_map1 upon return from the function.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Items are evaluated based on their keys.  Items that exist in both\r
+       p_map1 and p_map2 remain in their respective maps.  Items that\r
+       exist only p_map1 are moved to p_old.  Likewise, items that exist only\r
+       in p_map2 are moved to p_new.  This function can be usefull in evaluating\r
+       changes between two maps.\r
+\r
+       Both maps pointed to by p_new and p_old must be empty on input.  This\r
+       requirement removes the possibility of failures.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo333">cl_fmap_merge</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo326">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fend">\r
+Component Library: Flexi Map/cl_fmap_end</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_end</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_end</strong> function returns the end of a flexi map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE const <a href="#robo331">cl_fmap_item_t</a>* const CL_API\r
+<strong>cl_fmap_end</strong>(\r
+        IN      const <a href="#robo339">cl_fmap_t</a>* const  p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+        /* Nil is the end of the map. */\r
+        return( &amp;p_map-&gt;nil );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo339">cl_fmap_t</a> structure whose end to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Pointer to the end of the map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_fmap_end</strong> is useful for determining the validity of map items returned\r
+       by <a href="#robo328">cl_fmap_head</a>, <a href="#robo340">cl_fmap_tail</a>, <a href="#robo334">cl_fmap_next</a>, or <a href="#robo335">cl_fmap_prev</a>.  If the map\r
+       item pointer returned by any of these functions compares to the end, the\r
+       end of the map was encoutered.\r
+       When using <a href="#robo328">cl_fmap_head</a> or <a href="#robo340">cl_fmap_tail</a>, this condition indicates that\r
+       the map is empty.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo328">cl_fmap_head</a>, <a href="#robo340">cl_fmap_tail</a>, <a href="#robo334">cl_fmap_next</a>, <a href="#robo335">cl_fmap_prev</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo327">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fget">\r
+Component Library: Flexi Map/cl_fmap_get</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_get</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_get</strong> function returns the map item associated with a key.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="#robo331">cl_fmap_item_t</a>* CL_API\r
+<strong>cl_fmap_get</strong>(\r
+        IN      const <a href="#robo339">cl_fmap_t</a>* const  p_map,\r
+        IN      const void* const               p_key );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo339">cl_fmap_t</a> structure from which to retrieve the\r
+               item with the specified key.\r
+\r
+       p_key\r
+               [in] Pointer to a key value used to search for the desired map item.\r
+\r
+ RETURN VALUES\r
+       Pointer to the map item with the desired key value.\r
+\r
+       Pointer to the map end if there was no item with the desired key value\r
+       stored in the flexi map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_fmap_get</strong> does not remove the item from the flexi map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo336">cl_fmap_remove</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo328">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fhead">\r
+Component Library: Flexi Map/cl_fmap_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_head</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_head</strong> function returns the map item with the lowest key\r
+       value stored in a flexi map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo331">cl_fmap_item_t</a>* CL_API\r
+<strong>cl_fmap_head</strong>(\r
+        IN      const <a href="#robo339">cl_fmap_t</a>* const  p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+        return( (<a href="#robo331">cl_fmap_item_t</a>*)p_map-&gt;nil.pool_item.list_item.p_next );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo339">cl_fmap_t</a> structure whose item with the lowest key\r
+               is returned.\r
+\r
+ RETURN VALUES\r
+       Pointer to the map item with the lowest key in the flexi map.\r
+\r
+       Pointer to the map end if the flexi map was empty.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_fmap_head</strong> does not remove the item from the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo340">cl_fmap_tail</a>, <a href="#robo334">cl_fmap_next</a>, <a href="#robo335">cl_fmap_prev</a>, <a href="#robo326">cl_fmap_end</a>,\r
+       <a href="#robo331">cl_fmap_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo329">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5finit">\r
+Component Library: Flexi Map/cl_fmap_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_init</strong> function initialized a flexi map for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_fmap_init</strong>(\r
+        IN      <a href="#robo339">cl_fmap_t</a>* const        p_map,\r
+        IN      <a href="#robo343">cl_pfn_fmap_cmp_t</a>       pfn_compare );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo339">cl_fmap_t</a> structure to initialize.\r
+\r
+       pfn_compare\r
+               [in] Pointer to the compare function used to compare keys.\r
+               See the <a href="#robo343">cl_pfn_fmap_cmp_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling flexi map manipulation functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo330">cl_fmap_insert</a>, <a href="#robo336">cl_fmap_remove</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo330">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5finsert">\r
+Component Library: Flexi Map/cl_fmap_insert</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_insert</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_insert</strong> function inserts a map item into a flexi map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="#robo331">cl_fmap_item_t</a>* CL_API\r
+<strong>cl_fmap_insert</strong>(\r
+        IN      <a href="#robo339">cl_fmap_t</a>* const                p_map,\r
+        IN      const void* const               p_key,\r
+        IN      <a href="#robo331">cl_fmap_item_t</a>* const   p_item );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo339">cl_fmap_t</a> structure into which to add the item.\r
+\r
+       p_key\r
+               [in] Pointer to the key value to assign to the item.  Storage for\r
+               the key must be persistant, as only the pointer is stored.  Users\r
+               are responsible for maintaining the validity of key pointers while\r
+               they are in use.\r
+\r
+       p_item\r
+               [in] Pointer to a <a href="#robo331">cl_fmap_item_t</a> stucture to insert into the flexi map.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Pointer to the item in the map with the specified key.  If insertion\r
+       was successful, this is the pointer to the item.  If an item with the\r
+       specified key already exists in the map, the pointer to that item is\r
+       returned.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Insertion operations may cause the flexi map to rebalance.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo336">cl_fmap_remove</a>, <a href="#robo331">cl_fmap_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo331">[Structures]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fitem5ft">\r
+Component Library: Flexi Map/cl_fmap_item_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_item_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_item_t</strong> structure is used by maps to store objects.\r
+\r
+       The <strong>cl_fmap_item_t</strong> structure should be treated as opaque and should\r
+       be manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_fmap_item\r
+{\r
+        /* Must be first to allow casting. */\r
+        <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>                  pool_item;\r
+        struct _cl_fmap_item    *p_left;\r
+        struct _cl_fmap_item    *p_right;\r
+        struct _cl_fmap_item    *p_up;\r
+        cl_map_color_t                  color;\r
+        const void* __ptr64             p_key;\r
+#ifdef _DEBUG_\r
+        struct _cl_fmap                 *p_map;\r
+#endif\r
+\r
+} <strong>cl_fmap_item_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pool_item\r
+               Used to store the item in a doubly linked list, allowing more\r
+               efficient map traversal.\r
+\r
+       p_left\r
+               Pointer to the map item that is a child to the left of the node.\r
+\r
+       p_right\r
+               Pointer to the map item that is a child to the right of the node.\r
+\r
+       p_up\r
+               Pointer to the map item that is the parent of the node.\r
+\r
+       p_nil\r
+               Pointer to the map's NIL item, used as a terminator for leaves.\r
+               The NIL sentinel is in the <a href="#robo339">cl_fmap_t</a> structure.\r
+\r
+       color\r
+               Indicates whether a node is red or black in the map.\r
+\r
+       p_key\r
+               Pointer to the value that uniquely represents a node in a map.  This\r
+               pointer is set by calling <a href="#robo330">cl_fmap_insert</a> and can be retrieved by\r
+               calling <a href="#robo332">cl_fmap_key</a>.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       None of the fields of this structure should be manipulated by users, as\r
+       they are crititcal to the proper operation of the map in which they\r
+       are stored.\r
+\r
+       To allow storing items in either a quick list, a quick pool, or a flexi\r
+       map, the map implementation guarantees that the map item can be safely\r
+       cast to a pool item used for storing an object in a quick pool, or cast to\r
+       a list item used for storing an object in a quick list.  This removes the\r
+       need to embed a flexi map item, a list item, and a pool item in objects\r
+       that need to be stored in a quick list, a quick pool, and a flexi map.\r
+\r
+       The flexi map item is defined to be identical in layout as a map item.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo330">cl_fmap_insert</a>, <a href="#robo332">cl_fmap_key</a>, <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>, <a href="./cl_qlist_h.html#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo332">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fkey">\r
+Component Library: Flexi Map/cl_fmap_key</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_key</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_key</strong> function retrieves the key value of a map item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#pragma warning (push)\r
+#pragma warning (disable :4244)\r
+CL_INLINE const void* CL_API\r
+<strong>cl_fmap_key</strong>(\r
+        IN      const <a href="#robo331">cl_fmap_item_t</a>* const     p_item )\r
+{\r
+        CL_ASSERT( p_item );\r
+        return( p_item-&gt;p_key );\r
+}\r
+#pragma warning (pop )\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               [in] Pointer to a map item whose key value to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the a pointer to the key value for the specified map item.\r
+       The key value should not be modified to insure proper flexi map operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The key value is set in a call to <a href="#robo330">cl_fmap_insert</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo330">cl_fmap_insert</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo333">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fmerge">\r
+Component Library: Flexi Map/cl_fmap_merge</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_merge</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_merge</strong> function moves all items from one map to another,\r
+       excluding duplicates.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_fmap_merge</strong>(\r
+        OUT             <a href="#robo339">cl_fmap_t</a>* const        p_dest_map,\r
+        IN OUT  <a href="#robo339">cl_fmap_t</a>* const        p_src_map );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dest_map\r
+               [out] Pointer to a <a href="#robo339">cl_fmap_t</a> structure to which items should be added.\r
+\r
+       p_src_map\r
+               [in/out] Pointer to a <a href="#robo339">cl_fmap_t</a> structure whose items to add\r
+               to p_dest_map.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Items are evaluated based on their keys only.\r
+\r
+       Upon return from <strong>cl_fmap_merge</strong>, the flexi map referenced by p_src_map\r
+       contains all duplicate items.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo325">cl_fmap_delta</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo334">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fnext">\r
+Component Library: Flexi Map/cl_fmap_next</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_next</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_next</strong> function returns the map item with the next higher\r
+       key value than a specified map item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo331">cl_fmap_item_t</a>* CL_API\r
+<strong>cl_fmap_next</strong>(\r
+        IN      const <a href="#robo331">cl_fmap_item_t</a>* const     p_item )\r
+{\r
+        CL_ASSERT( p_item );\r
+        return( (<a href="#robo331">cl_fmap_item_t</a>*)p_item-&gt;pool_item.list_item.p_next );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               [in] Pointer to a map item whose successor to return.\r
+\r
+ RETURN VALUES\r
+       Pointer to the map item with the next higher key value in a flexi map.\r
+\r
+       Pointer to the map end if the specified item was the last item in\r
+       the flexi map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo328">cl_fmap_head</a>, <a href="#robo340">cl_fmap_tail</a>, <a href="#robo335">cl_fmap_prev</a>, <a href="#robo326">cl_fmap_end</a>,\r
+       <a href="#robo331">cl_fmap_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo335">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fprev">\r
+Component Library: Flexi Map/cl_fmap_prev</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_prev</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_prev</strong> function returns the map item with the next lower\r
+       key value than a precified map item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo331">cl_fmap_item_t</a>* CL_API\r
+<strong>cl_fmap_prev</strong>(\r
+        IN      const <a href="#robo331">cl_fmap_item_t</a>* const     p_item )\r
+{\r
+        CL_ASSERT( p_item );\r
+        return( (<a href="#robo331">cl_fmap_item_t</a>*)p_item-&gt;pool_item.list_item.p_prev );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               [in] Pointer to a map item whose predecessor to return.\r
+\r
+ RETURN VALUES\r
+       Pointer to the map item with the next lower key value in a flexi map.\r
+\r
+       Pointer to the map end if the specifid item was the first item in\r
+       the flexi map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo328">cl_fmap_head</a>, <a href="#robo340">cl_fmap_tail</a>, <a href="#robo334">cl_fmap_next</a>, <a href="#robo326">cl_fmap_end</a>,\r
+       <a href="#robo331">cl_fmap_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo336">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fremove">\r
+Component Library: Flexi Map/cl_fmap_remove</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_remove</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_remove</strong> function removes the map item with the specified key\r
+       from a flexi map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="#robo331">cl_fmap_item_t</a>* CL_API\r
+<strong>cl_fmap_remove</strong>(\r
+        IN      <a href="#robo339">cl_fmap_t</a>* const        p_map,\r
+        IN      const void* const       p_key );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo339">cl_fmap_t</a> structure from which to remove the item\r
+               with the specified key.\r
+\r
+       p_key\r
+               [in] Pointer to the key value used to search for the map item\r
+               to remove.\r
+\r
+ RETURN VALUES\r
+       Pointer to the removed map item if it was found.\r
+\r
+       Pointer to the map end if no item with the specified key exists in the\r
+       flexi map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo338">cl_fmap_remove_item</a>, <a href="#robo337">cl_fmap_remove_all</a>, <a href="#robo330">cl_fmap_insert</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo337">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fremove5fall">\r
+Component Library: Flexi Map/cl_fmap_remove_all</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_remove_all</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_remove_all</strong> function removes all items in a flexi map,\r
+       leaving it empty.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_fmap_remove_all</strong>(\r
+        IN      <a href="#robo339">cl_fmap_t</a>* const        p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+\r
+        p_map-&gt;root.p_left = &amp;p_map-&gt;nil;\r
+        p_map-&gt;nil.pool_item.list_item.p_next = &amp;p_map-&gt;nil.pool_item.list_item;\r
+        p_map-&gt;nil.pool_item.list_item.p_prev = &amp;p_map-&gt;nil.pool_item.list_item;\r
+        p_map-&gt;count = 0;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo339">cl_fmap_t</a> structure to empty.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo336">cl_fmap_remove</a>, <a href="#robo338">cl_fmap_remove_item</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo338">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5fremove5fitem">\r
+Component Library: Flexi Map/cl_fmap_remove_item</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_remove_item</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_remove_item</strong> function removes the specified map item\r
+       from a flexi map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_fmap_remove_item</strong>(\r
+        IN      <a href="#robo339">cl_fmap_t</a>* const                p_map,\r
+        IN      <a href="#robo331">cl_fmap_item_t</a>* const   p_item );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               [in] Pointer to a map item to remove from its flexi map.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+\r
+       In a debug build, <strong>cl_fmap_remove_item</strong> asserts that the item being removed\r
+       is in the specified map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Removes the map item pointed to by p_item from its flexi map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo336">cl_fmap_remove</a>, <a href="#robo337">cl_fmap_remove_all</a>, <a href="#robo330">cl_fmap_insert</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo339">[Structures]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5ft">\r
+Component Library: Flexi Map/cl_fmap_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Flexi map structure.\r
+\r
+       The <strong>cl_fmap_t</strong> structure should be treated as opaque and should\r
+       be manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_fmap\r
+{\r
+        <a href="#robo331">cl_fmap_item_t</a>          root;\r
+        <a href="#robo331">cl_fmap_item_t</a>          nil;\r
+        cl_state_t                      state;\r
+        size_t                          count;\r
+        <a href="#robo343">cl_pfn_fmap_cmp_t</a>       pfn_compare;\r
+\r
+} <strong>cl_fmap_t</strong>;\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       root\r
+               <a href="./cl_map_h.html#robo17">Map</a> item that serves as root of the map.  The root is set up to\r
+               always have itself as parent.  The left pointer is set to point to\r
+               the item at the root.\r
+\r
+       nil\r
+               <a href="./cl_map_h.html#robo17">Map</a> item that serves as terminator for all leaves, as well as providing\r
+               the list item used as quick list for storing map items in a list for\r
+               faster traversal.\r
+\r
+       state\r
+               State of the map, used to verify that operations are permitted.\r
+\r
+       count\r
+               Number of items in the map.\r
+\r
+       pfn_compare\r
+               Pointer to a compare function to invoke to compare the keys of\r
+               items in the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo343">cl_pfn_fmap_cmp_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo340">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5ffmap5ftail">\r
+Component Library: Flexi Map/cl_fmap_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fmap_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_fmap_tail</strong> function returns the map item with the highest key\r
+       value stored in a flexi map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo331">cl_fmap_item_t</a>* CL_API\r
+<strong>cl_fmap_tail</strong>(\r
+        IN      const <a href="#robo339">cl_fmap_t</a>* const  p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+        return( (<a href="#robo331">cl_fmap_item_t</a>*)p_map-&gt;nil.pool_item.list_item.p_prev );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo339">cl_fmap_t</a> structure whose item with the highest key\r
+               is returned.\r
+\r
+ RETURN VALUES\r
+       Pointer to the map item with the highest key in the flexi map.\r
+\r
+       Pointer to the map end if the flexi map was empty.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <a href="#robo326">cl_fmap_end</a> does not remove the item from the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo328">cl_fmap_head</a>, <a href="#robo334">cl_fmap_next</a>, <a href="#robo335">cl_fmap_prev</a>, <a href="#robo326">cl_fmap_end</a>,\r
+       <a href="#robo331">cl_fmap_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo341">[Functions]<a name="Component20Library3a20Flexi20Map2fcl5fis5ffmap5fempty">\r
+Component Library: Flexi Map/cl_is_fmap_empty</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_fmap_empty</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_fmap_empty</strong> function returns whether a flexi map is empty.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE boolean_t CL_API\r
+<strong>cl_is_fmap_empty</strong>(\r
+        IN      const <a href="#robo339">cl_fmap_t</a>* const  p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+\r
+        return( p_map-&gt;count == 0 );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo339">cl_fmap_t</a> structure to test for emptiness.\r
+\r
+ RETURN VALUES\r
+       TRUE if the flexi map is empty.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo324">cl_fmap_count</a>, <a href="#robo337">cl_fmap_remove_all</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo342">[Definitions]<a name="Component20Library3a20Flexi20Map2fcl5fpfn5ffmap5fapply5ft">\r
+Component Library: Flexi Map/cl_pfn_fmap_apply_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_fmap_apply_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_fmap_apply_t</strong> function type defines the prototype for functions\r
+       used to iterate items in a flexi map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_fmap_apply_t</strong>)(\r
+        IN      <a href="#robo331">cl_fmap_item_t</a>* const   p_map_item,\r
+        IN      void*                                   context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map_item\r
+               [in] Pointer to a <a href="#robo331">cl_fmap_item_t</a> structure.\r
+\r
+       context\r
+               [in] Value passed to the callback function.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for the\r
+       function provided by users as a parameter to the <a href="#robo323">cl_fmap_apply_func</a>\r
+       function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo323">cl_fmap_apply_func</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo343">[Definitions]<a name="Component20Library3a20Flexi20Map2fcl5fpfn5ffmap5fcmp5ft">\r
+Component Library: Flexi Map/cl_pfn_fmap_cmp_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_fmap_cmp_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_fmap_cmp_t</strong> function type defines the prototype for functions\r
+       used to compare item keys in a flexi map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef intn_t\r
+(CL_API *<strong>cl_pfn_fmap_cmp_t</strong>)(\r
+        IN      const void* const               p_key1,\r
+        IN      const void*     const           p_key2 );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_key1\r
+               [in] Pointer to the first of two keys to compare.\r
+\r
+       p_key2\r
+               [in] Pointer to the second of two keys to compare.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns 0 if the keys match.\r
+       Returns less than 0 if p_key1 is less than p_key2.\r
+       Returns greater than 0 if p_key1 is greater than p_key2.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for the\r
+       function provided by users as a parameter to the <a href="#robo329">cl_fmap_init</a> function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Flexi <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo329">cl_fmap_init</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_ioctl_h.html b/trunk/docs/complib/cl_ioctl_h.html
new file mode 100644 (file)
index 0000000..c2ed480
--- /dev/null
@@ -0,0 +1,609 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_ioctl_h.html</title>\r
+<!-- Source: ./inc/complib/cl_ioctl.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_ioctl.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo13">[Modules]<a name="Component20Library2fIOCTL20Object">\r
+Component Library/IOCTL Object</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The IOCTL object provides functionality for handling IOCTL requests.\r
+\r
+       The IOCTL object is only available in kernel mode and provides\r
+       functionality for accessing information about IO requests initiated\r
+       by a user-mode application.  The <a href="#robo357">IOCTL_CODE</a> macro is used in both\r
+       user and kernel mode to initiate and dispatch IOCTL requests, respectively.\r
+\r
+       In Linux, in order for the IOCTL object to be used, requests must be\r
+       initiated and handled using the Device Framework abstraction.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo347">cl_ioctl_handle_t</a>\r
+\r
+       Callbacks:\r
+               <a href="#robo356">cl_pfn_ioctl_handler_t</a>\r
+\r
+       Control Code Generation\r
+               <a href="#robo357">IOCTL_CODE</a>\r
+\r
+       Kernel Mode Access\r
+               <a href="#robo352">cl_ioctl_process</a>\r
+               <a href="#robo345">cl_ioctl_complete</a>\r
+               <a href="#robo355">cl_ioctl_type</a>\r
+               <a href="#robo344">cl_ioctl_cmd</a>\r
+               <a href="#robo346">cl_ioctl_ctl_code</a>\r
+               <a href="#robo348">cl_ioctl_in_buf</a>\r
+               <a href="#robo349">cl_ioctl_in_size</a>\r
+               <a href="#robo350">cl_ioctl_out_buf</a>\r
+               <a href="#robo351">cl_ioctl_out_size</a>\r
+\r
+       User Mode Access\r
+               <a href="#robo353">cl_ioctl_request</a>\r
+               <a href="#robo354">cl_ioctl_result</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo344">[Functions]<a name="Component20Library3a20IOCTL20Object2fcl5fioctl5fcmd">\r
+Component Library: IOCTL Object/cl_ioctl_cmd</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ioctl_cmd</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the command of an IOCTL\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT uint16_t CL_API\r
+<strong>cl_ioctl_cmd</strong>(\r
+        IN      <a href="#robo347">cl_ioctl_handle_t</a>       h_ioctl );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ioctl\r
+               [in] Handle to an IOCTL\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the command of the specified IOCTL request, as defined using\r
+       the IOCTL_CMD macro.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The <strong>cl_ioctl_cmd</strong> function is only available in the kernel.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo347">cl_ioctl_handle_t</a>, <a href="#robo355">cl_ioctl_type</a>, <a href="#robo346">cl_ioctl_ctl_code</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo345">[Functions]<a name="Component20Library3a20IOCTL20Object2fcl5fioctl5fcomplete">\r
+Component Library: IOCTL Object/cl_ioctl_complete</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ioctl_complete</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Fills in completion information for an IOCTL and releases the IOCTL request\r
+       for completion.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_ioctl_complete</strong>(\r
+        IN      <a href="#robo347">cl_ioctl_handle_t</a>       h_ioctl,\r
+        IN      <a href="./cl_types_h.html#robo304">cl_status_t</a>                     io_status,\r
+        IN      size_t                          ret_bytes );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ioctl\r
+               Handle to the IOCTL being completed.  This handle was provided to\r
+               the IOCTL handler.\r
+\r
+       io_status\r
+               Status of the IOCTL request.\r
+\r
+       ret_bytes\r
+               Number of bytes written to the output buffer.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo347">cl_ioctl_handle_t</a>, <a href="#robo352">cl_ioctl_process</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo346">[Functions]<a name="Component20Library3a20IOCTL20Object2fcl5fioctl5fctl5fcode">\r
+Component Library: IOCTL Object/cl_ioctl_ctl_code</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ioctl_ctl_code</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the 32-bit control code of an IOCTL\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT uint32_t CL_API\r
+<strong>cl_ioctl_ctl_code</strong>(\r
+        IN      <a href="#robo347">cl_ioctl_handle_t</a>       h_ioctl );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ioctl\r
+               [in] Handle to an IOCTL\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the 32-bit control code of the specified IOCTL request,\r
+       as defined using the IOCTL_CMD macro.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The <strong>cl_ioctl_ctl_code</strong> function is only available in the kernel.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo347">cl_ioctl_handle_t</a>, <a href="#robo355">cl_ioctl_type</a>, <a href="#robo344">cl_ioctl_cmd</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo347">[Definitions]<a name="Component20Library3a20IOCTL20Object2fcl5fioctl5fhandle5ft">\r
+Component Library: IOCTL Object/cl_ioctl_handle_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ioctl_handle_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Opaque handle representing an IO request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The <strong>cl_ioctl_handle_t</strong> type is only available in the kernel.\r
+       The <strong>cl_ioctl_handle_t</strong> type should be treated as opaque, as it\r
+       varies from environment to environment.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo355">cl_ioctl_type</a>, <a href="#robo344">cl_ioctl_cmd</a>, <a href="#robo348">cl_ioctl_in_buf</a>,\r
+       <a href="#robo349">cl_ioctl_in_size</a>, <a href="#robo350">cl_ioctl_out_buf</a>, <a href="#robo351">cl_ioctl_out_size</a>,\r
+       cl_ioctl_set_status, cl_ioctl_set_ret_bytes\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo348">[Functions]<a name="Component20Library3a20IOCTL20Object2fcl5fioctl5fin5fbuf">\r
+Component Library: IOCTL Object/cl_ioctl_in_buf</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ioctl_in_buf</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a pointer to the input buffer of an IOCTL.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void* CL_API\r
+<strong>cl_ioctl_in_buf</strong>(\r
+        IN      <a href="#robo347">cl_ioctl_handle_t</a>       h_ioctl );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ioctl\r
+               [in] Handle to an IOCTL\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the input buffer of the specified IOCTL request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The <strong>cl_ioctl_in_buf</strong> function is only available in the kernel.\r
+\r
+       In Windows, for IOCTL operations defined as METHOD_IN_DIRECT, the\r
+       returned pointer points to the MDL describing the input buffer.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo347">cl_ioctl_handle_t</a>, <a href="#robo349">cl_ioctl_in_size</a>,\r
+       <a href="#robo350">cl_ioctl_out_buf</a>, <a href="#robo351">cl_ioctl_out_size</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo349">[Functions]<a name="Component20Library3a20IOCTL20Object2fcl5fioctl5fin5fsize">\r
+Component Library: IOCTL Object/cl_ioctl_in_size</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ioctl_in_size</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the size of the input buffer of an IOCTL.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT size_t CL_API\r
+<strong>cl_ioctl_in_size</strong>(\r
+        IN      <a href="#robo347">cl_ioctl_handle_t</a>       h_ioctl );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ioctl\r
+               [in] Handle to an IOCTL\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the size, in bytes, of the input buffer of the specified\r
+       IOCTL request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The <strong>cl_ioctl_in_size</strong> function is only available in the kernel.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo347">cl_ioctl_handle_t</a>, <a href="#robo348">cl_ioctl_in_buf</a>,\r
+       <a href="#robo350">cl_ioctl_out_buf</a>, <a href="#robo351">cl_ioctl_out_size</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo350">[Functions]<a name="Component20Library3a20IOCTL20Object2fcl5fioctl5fout5fbuf">\r
+Component Library: IOCTL Object/cl_ioctl_out_buf</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ioctl_out_buf</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a pointer to the output buffer of an IOCTL.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void* CL_API\r
+<strong>cl_ioctl_out_buf</strong>(\r
+        IN      <a href="#robo347">cl_ioctl_handle_t</a>       h_ioctl );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ioctl\r
+               [in] Handle to an IOCTL\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns a pointer to the output buffer of the specified IOCTL request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The <strong>cl_ioctl_out_buf</strong> function is only available in the kernel.\r
+\r
+       In Windows, for IOCTL operations defined as METHOD_IN_DIRECT or\r
+       METHOD_OUT_DIRECT, the returned pointer points to the MDL describing\r
+       the input buffer.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo347">cl_ioctl_handle_t</a>, <a href="#robo351">cl_ioctl_out_size</a>,\r
+       <a href="#robo348">cl_ioctl_in_buf</a>, <a href="#robo349">cl_ioctl_in_size</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo351">[Functions]<a name="Component20Library3a20IOCTL20Object2fcl5fioctl5fout5fsize">\r
+Component Library: IOCTL Object/cl_ioctl_out_size</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ioctl_out_size</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the size of the output buffer of an IOCTL.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT size_t CL_API\r
+<strong>cl_ioctl_out_size</strong>(\r
+        IN      <a href="#robo347">cl_ioctl_handle_t</a>       h_ioctl );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ioctl\r
+               [in] Handle to an IOCTL\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the size, in bytes, of the input buffer of the specified\r
+       IOCTL request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The <strong>cl_ioctl_out_size</strong> function is only available in the kernel.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo347">cl_ioctl_handle_t</a>, <a href="#robo350">cl_ioctl_out_buf</a>,\r
+       <a href="#robo348">cl_ioctl_in_buf</a>, <a href="#robo349">cl_ioctl_in_size</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo352">[Functions]<a name="Component20Library3a20IOCTL20Object2fcl5fioctl5fprocess">\r
+Component Library: IOCTL Object/cl_ioctl_process</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ioctl_process</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ioctl_process</strong> function unpacks information initiated by a call to\r
+       <a href="#robo353">cl_ioctl_request</a> function and invokes a user-supplied callback.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_ioctl_process</strong>(\r
+        IN      void                                    *p_ioctl,\r
+        IN      <a href="#robo356">cl_pfn_ioctl_handler_t</a>  pfn_ioctl_handler,\r
+        IN      void                                    *context_1,\r
+        IN      void                                    *context_2 );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_ioctl\r
+               [in] Pointer to an OS specific IOCTL information.  In Linux,\r
+               this parameter depends on whether the IOCTL is handled synchronously\r
+               or asynchronously.  See the notes for further detail.\r
+               In Windows, this is a pointer to an IRP.\r
+\r
+       pfn_ioctl_handler\r
+               [in] Pointer to the callback function to invoke for handling the IOCTL.\r
+               This callback is independent of the IOCTL command.\r
+\r
+       context_1\r
+               [in] First of two context parameters to pass to the handler.\r
+\r
+       context_2\r
+               [in] Second of two context parameters to pass to the handler.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the IOCTL was processed successfully.\r
+\r
+       Other values to indicate various failures.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Users must call <a href="#robo345">cl_ioctl_complete</a> from within the handler if completing\r
+       the IOCTL request synchronously.  If the IOCTL request's control code is\r
+       invalid, the handler should return CL_INVALID_REQUEST.\r
+\r
+       In Linux, the p_ioctl parameter is a copy of the argp parameter on input,\r
+       and on output points to the IOCTL request object passed to the IOCTL\r
+       handler if and only if the IOCTL handler returned CL_PENDING.\r
+       This allows the user to cancel the request by passing the same\r
+       handle to the cancel routine that was passed to the IOCTL handler.\r
+       If all IOCTLs are handled synchronously, it is acceptable to pass the argp\r
+       parameter of the IOCTL entry point instead of a copy.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo347">cl_ioctl_handle_t</a>, <a href="#robo356">cl_pfn_ioctl_handler_t</a>, <a href="#robo345">cl_ioctl_complete</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo353">[Functions]<a name="Component20Library3a20IOCTL20Object2fcl5fioctl5frequest">\r
+Component Library: IOCTL Object/cl_ioctl_request</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ioctl_request</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ioctl_request</strong> is used by user-mode clients to initiate IOCTL\r
+       requests to a device.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_ioctl_request</strong>(\r
+        IN              void                    *h_dev,\r
+        IN              uint32_t                ioctl_code,\r
+        IN              void                    *p_in_buf,\r
+        IN              size_t                  in_size,\r
+                OUT     void                    *p_out_buf,\r
+        IN              size_t                  out_size,\r
+                OUT     size_t                  *p_ret_bytes OPTIONAL,\r
+        IN              void                    *p_async_info OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_dev\r
+               [in] Handle to the device to which the IOCTL request is targetted.\r
+               In Linux, this is a file descriptor.  In Windows, this is a file\r
+               handle.\r
+\r
+       ioctl_code\r
+               [in] Control code for the IOCTL request.\r
+\r
+       p_in_buf\r
+               [in] Pointer to the input buffer.\r
+\r
+       in_size\r
+               [in] Size, in bytes, of the input buffer.\r
+\r
+       p_out_buf\r
+               [out] Pointer to the output buffer.\r
+\r
+       out_size\r
+               [in] Size, in bytes, of the output buffer.\r
+\r
+       p_ret_bytes\r
+               [out] Number of bytes written to the output buffer.  This parameter is\r
+               mutually exclusive of the p_async_info parameter.\r
+\r
+       p_async_info\r
+               [in] For platforms that support asynchronous I/O, supplies a pointer\r
+               to that platform's async I/O structure, if any.  For Windows, this\r
+               is a pointer to an OVERLAPPED structure.  This parameter is mutually\r
+               exclusive of the p_ret_bytes parameter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo354">cl_ioctl_result</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo354">[Functions]<a name="Component20Library3a20IOCTL20Object2fcl5fioctl5fresult">\r
+Component Library: IOCTL Object/cl_ioctl_result</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ioctl_result</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Checks the status of an asynchronous IOCTL request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_ioctl_result</strong>(\r
+        IN      void            *h_dev,\r
+        IN      void            *p_async_info,\r
+        OUT     size_t          *p_ret_bytes,\r
+        IN      boolean_t       blocking );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_dev\r
+               [in] Handle to the device to which the IOCTL request is targetted.\r
+               In Linux, this is a file descriptor.  In Windows, this is a file\r
+               handle.\r
+\r
+       p_async_info\r
+               [in] For platforms that support asynchronous I/O, supplies a pointer\r
+               to that platform's async I/O structure, if any.  For Windows, this\r
+               is a pointer to an OVERLAPPED structure.  This must be the same\r
+               as that provided in the <a href="#robo353">cl_ioctl_request</a> function.\r
+\r
+       p_ret_bytes\r
+               [out] Number of bytes written to the output buffer.\r
+\r
+       blocking\r
+               [in] If TRUE, indicates that the call should wait until the\r
+               specified IOCTL request is complete.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the IOCTL request was successful.  p_ret_bytes contains\r
+       the number bytes written to the output buffer.\r
+\r
+       CL_PENDING if the IOCTL request is not yet complete.\r
+\r
+       Other status values to indicate errors.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo353">cl_ioctl_request</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo355">[Functions]<a name="Component20Library3a20IOCTL20Object2fcl5fioctl5ftype">\r
+Component Library: IOCTL Object/cl_ioctl_type</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ioctl_type</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the type of an IOCTL.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT uint16_t CL_API\r
+<strong>cl_ioctl_type</strong>(\r
+        IN      <a href="#robo347">cl_ioctl_handle_t</a>       h_ioctl );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ioctl\r
+               [in] Handle to an IOCTL\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the type of the specified IOCTL request, as defined using\r
+       the IOCTL_CMD macro.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The <strong>cl_ioctl_type</strong> function is only available in the kernel.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo347">cl_ioctl_handle_t</a>, <a href="#robo344">cl_ioctl_cmd</a>, <a href="#robo346">cl_ioctl_ctl_code</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo356">[Definitions]<a name="Component20Library3a20IOCTL20Object2fcl5fpfn5fioctl5fhandler5ft">\r
+Component Library: IOCTL Object/cl_pfn_ioctl_handler_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_ioctl_handler_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_ioctl_handler_t</strong> function type defines the prototype for\r
+       IOCTL handlers used when handling IOCTL requests initiated by\r
+       <a href="#robo353">cl_ioctl_request</a>.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./cl_types_h.html#robo304">cl_status_t</a>\r
+(CL_API *<strong>cl_pfn_ioctl_handler_t</strong>)(\r
+        IN      <a href="#robo347">cl_ioctl_handle_t</a>       h_ioctl,\r
+        IN      void                            *context_1,\r
+        IN      void                            *context_2 );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ioctl\r
+               [in] Handle to the IOCTL request.\r
+\r
+       context_1\r
+               [in] First context parameters, as provided to <a href="#robo352">cl_ioctl_process</a>.\r
+\r
+       context_2\r
+               [in] Second context parameters, as provided to <a href="#robo352">cl_ioctl_process</a>.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the IOCTL was completed successfully.\r
+\r
+       CL_PENDING if the IOCTL is being processed asynchronously.\r
+\r
+       Other return values in case of errors.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       It is acceptable to complete the IOCTL successfully to report an error\r
+       status in the output buffer.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo347">cl_ioctl_handle_t</a>, <a href="#robo352">cl_ioctl_process</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo357">[Definitions]<a name="Component20Library3a20IOCTL20Object2fIOCTL5fCODE">\r
+Component Library: IOCTL Object/IOCTL_CODE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IOCTL_CODE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Macro for defining IO control command codes.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       uint32_t <strong>IOCTL_CODE</strong>( uint16_t type, uint16_t cmd )\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       type\r
+               [in] user-defined type representing the type of command.  For Linux,\r
+               the type is truncated to 8-bits.  For Windows, the type is a 16-bit\r
+               value, as described in "Specifying Device Types" in the DDK docs.\r
+\r
+       cmd\r
+               [in] User-defined command.  For Linux, the command field is truncated\r
+               to 8-bits.  For Windows, the command can be 12-bits, with values\r
+               below 0x800 reserved by Microsoft for system defined commands.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       A 32-bit control code.  User-mode clients use the control code to initiate\r
+       requests.  Kernel-mode clients use the control code to distinguish between\r
+       different requests.\r
+</pre>\r
+</span><p><strong>NOTE</strong></p>\r
+<span class="NOTE"><pre>       In Windows, all IOCTL command codes defined with the <strong>IOCTL_CODE</strong> command\r
+       result in FILE_ANY_ACCESS and METHOD_BUFFERED being specified.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       IOCTL <a href="./cl_obj_h.html#robo18">Object</a>, cl_dev_ioctl, <a href="#robo355">cl_ioctl_type</a>, <a href="#robo344">cl_ioctl_cmd</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_irqlock_h.html b/trunk/docs/complib/cl_irqlock_h.html
new file mode 100644 (file)
index 0000000..899e62b
--- /dev/null
@@ -0,0 +1,221 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_irqlock_h.html</title>\r
+<!-- Source: ./inc/complib/cl_irqlock.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_irqlock.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo14">[Modules]<a name="Component20Library2fIrqlock">\r
+Component Library/Irqlock</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>Irqlock</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>Irqlock</strong> provides synchronization at interrupt level between threads for \r
+       exclusive access to a resource.\r
+\r
+       The irqlock functions manipulate a cl_irqlock_t structure which should \r
+       be treated as opaque and should be manipulated only through the provided \r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               cl_irqlock_t\r
+\r
+       Initialization:\r
+               <a href="#robo359">cl_irqlock_construct</a>, <a href="#robo361">cl_irqlock_init</a>, <a href="#robo360">cl_irqlock_destroy</a>\r
+\r
+       Manipulation\r
+               <a href="#robo358">cl_irqlock_acquire</a>, <a href="#robo362">cl_irqlock_release</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo358">[Functions]<a name="Component20Library3a20Irqlock2fcl5firqlock5facquire">\r
+Component Library: Irqlock/cl_irqlock_acquire</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_irqlock_acquire</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_irqlock_acquire</strong> function acquires a IRQ lock.\r
+       This version of lock does not prevent an interrupt from \r
+       occuring on the processor on which the code is being\r
+       executed. To protect from an interrupt level resource\r
+       use the cl_irqlock_acquire_irq function.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_irqlock_acquire</strong>( \r
+        IN      cl_irqlock_t* const             p_irqlock );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_irqlock \r
+               [in] Pointer to a IRQ lock structure to acquire.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo14">Irqlock</a>, <a href="#robo362">cl_irqlock_release</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo359">[Functions]<a name="Component20Library3a20Irqlock2fcl5firqlock5fconstruct">\r
+Component Library: Irqlock/cl_irqlock_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_irqlock_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_irqlock_construct</strong> function initializes the state of a \r
+       IRQ lock.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_irqlock_construct</strong>( \r
+        IN      cl_irqlock_t* const             p_irqlock );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_irqlock \r
+               [in] Pointer to a IRQ lock structure whose state to initialize.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo360">cl_irqlock_destroy</a> without first calling \r
+       <a href="#robo361">cl_irqlock_init</a>.\r
+\r
+       Calling <strong>cl_irqlock_construct</strong> is a prerequisite to calling any other\r
+       IRQ lock function except <a href="#robo361">cl_irqlock_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo14">Irqlock</a>, <a href="#robo361">cl_irqlock_init</a>, <a href="#robo360">cl_irqlock_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo360">[Functions]<a name="Component20Library3a20Irqlock2fcl5firqlock5fdestroy">\r
+Component Library: Irqlock/cl_irqlock_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_irqlock_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_irqlock_destroy</strong> function performs all necessary cleanup of a \r
+       IRQ lock.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_irqlock_destroy</strong>( \r
+        IN      cl_irqlock_t* const             p_irqlock );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_irqlock \r
+               [in] Pointer to a IRQ lock structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Performs any necessary cleanup of a IRQ lock. This function must only \r
+       be called if either <a href="#robo359">cl_irqlock_construct</a> or <a href="#robo361">cl_irqlock_init</a> has been \r
+       called.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo14">Irqlock</a>, <a href="#robo359">cl_irqlock_construct</a>, <a href="#robo361">cl_irqlock_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo361">[Functions]<a name="Component20Library3a20Irqlock2fcl5firqlock5finit">\r
+Component Library: Irqlock/cl_irqlock_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_irqlock_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_irqlock_init</strong> function initializes a IRQ lock for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_irqlock_init</strong>( \r
+        IN      cl_irqlock_t* const             p_irqlock,\r
+        IN      cl_interrupt_t* const   p_interrupt );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_irqlock \r
+               [in] Pointer to a IRQ lock structure to initialize.\r
+\r
+       p_interrupt\r
+               [in] Platform specific pointer conveying information about the\r
+               interrupt vector and level with which to synchronize.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if initialization succeeded.\r
+\r
+       CL_ERROR if initialization failed. Callers should call \r
+       <a href="#robo360">cl_irqlock_destroy</a> to clean up any resources allocated during \r
+       initialization.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Initialize the IRQ lock structure. Allows calling cl_irqlock_aquire \r
+       and <a href="#robo362">cl_irqlock_release</a>.\r
+\r
+       In Linux, the p_interrupt parameter is currently ignored.\r
+\r
+       In Windows, the p_interrupt parameter is a pointer to a KINTERRUPT object,\r
+       the value of which is supplied by a call to IoConnectInterrupt.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo14">Irqlock</a>, <a href="#robo359">cl_irqlock_construct</a>, <a href="#robo360">cl_irqlock_destroy</a>, \r
+       <a href="#robo358">cl_irqlock_acquire</a>, <a href="#robo362">cl_irqlock_release</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo362">[Functions]<a name="Component20Library3a20Irqlock2fcl5firqlock5frelease">\r
+Component Library: Irqlock/cl_irqlock_release</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_irqlock_release</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_irqlock_release</strong> function releases a IRQ lock object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_irqlock_release</strong>(\r
+        IN      cl_irqlock_t* const             p_irqlock );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_irqlock \r
+               [in] Pointer to a IRQ lock structure to release.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Releases a IRQ lock after a call to <a href="#robo358">cl_irqlock_acquire</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo14">Irqlock</a>, <a href="#robo358">cl_irqlock_acquire</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_list_h.html b/trunk/docs/complib/cl_list_h.html
new file mode 100644 (file)
index 0000000..90eeb58
--- /dev/null
@@ -0,0 +1,1412 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_list_h.html</title>\r
+<!-- Source: ./inc/complib/cl_list.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_list.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo15">[Modules]<a name="Component20Library2fList">\r
+Component Library/List</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>List</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>List</strong> stores objects in a doubly linked list.\r
+\r
+       Unlike quick list, users pass pointers to the object being stored, rather\r
+       than to a <a href="./cl_qlist_h.html#robo554">cl_list_item_t</a> structure.  Insertion operations on a list can\r
+       fail, and callers should trap for such failures.\r
+\r
+       Use quick list in situations where insertion failures cannot be tolerated.\r
+\r
+       <strong>List</strong> is not thread safe, and users must provide serialization.\r
+\r
+       The list functions operates on a <a href="#robo390">cl_list_t</a> structure which should be\r
+       treated as opaque and should be manipulated only through the provided\r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Types:\r
+               <a href="#robo381">cl_list_iterator_t</a>\r
+\r
+       Structures:\r
+               <a href="#robo390">cl_list_t</a>\r
+\r
+       Callbacks:\r
+               <a href="#robo392">cl_pfn_list_apply_t</a>, <a href="#robo393">cl_pfn_list_find_t</a>\r
+\r
+       Initialization/Destruction:\r
+               <a href="#robo367">cl_list_construct</a>, <a href="#robo374">cl_list_init</a>, <a href="#robo369">cl_list_destroy</a>\r
+\r
+       Iteration:\r
+               <a href="#robo382">cl_list_next</a>, <a href="#robo384">cl_list_prev</a>, <a href="#robo373">cl_list_head</a>, <a href="#robo391">cl_list_tail</a>,\r
+               <a href="#robo370">cl_list_end</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo377">cl_list_insert_head</a>, <a href="#robo380">cl_list_insert_tail</a>,\r
+               <a href="#robo375">cl_list_insert_array_head</a>, <a href="#robo376">cl_list_insert_array_tail</a>,\r
+               <a href="#robo379">cl_list_insert_prev</a>, <a href="#robo378">cl_list_insert_next</a>,\r
+               <a href="#robo386">cl_list_remove_head</a>, <a href="#robo389">cl_list_remove_tail</a>,\r
+               <a href="#robo388">cl_list_remove_object</a>, <a href="#robo387">cl_list_remove_item</a>, <a href="#robo385">cl_list_remove_all</a>\r
+\r
+       Search:\r
+               <a href="#robo365">cl_is_object_in_list</a>, <a href="#robo371">cl_list_find_from_head</a>, <a href="#robo372">cl_list_find_from_tail</a>,\r
+               <a href="#robo366">cl_list_apply_func</a>\r
+\r
+       Attributes:\r
+               <a href="#robo368">cl_list_count</a>, <a href="#robo363">cl_is_list_empty</a>, <a href="#robo364">cl_is_list_inited</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo363">[Functions]<a name="Component20Library3a20List2fcl5fis5flist5fempty">\r
+Component Library: List/cl_is_list_empty</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_list_empty</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_list_empty</strong> function returns whether a list is empty.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE boolean_t CL_API\r
+<strong>cl_is_list_empty</strong>(\r
+        IN      const <a href="#robo390">cl_list_t</a>* const  p_list )\r
+{\r
+        CL_ASSERT( p_list );\r
+        CL_ASSERT( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+        return( <a href="./cl_qlist_h.html#robo553">cl_is_qlist_empty</a>( &amp;p_list-&gt;list ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure.\r
+\r
+ RETURN VALUES\r
+       TRUE if the specified list is empty.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo368">cl_list_count</a>, <a href="#robo385">cl_list_remove_all</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo364">[Functions]<a name="Component20Library3a20List2fcl5fis5flist5finited">\r
+Component Library: List/cl_is_list_inited</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_list_inited</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_list_inited</strong> function returns whether a list was\r
+       initialized successfully.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE boolean_t CL_API\r
+<strong>cl_is_list_inited</strong>(\r
+        IN      const <a href="#robo390">cl_list_t</a>* const  p_list )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /*\r
+         * The pool is the last thing initialized.  If it is initialized, the\r
+         * list is initialized too.\r
+         */\r
+        return( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure whose initilization state\r
+               to check.\r
+\r
+ RETURN VALUES\r
+       TRUE if the list was initialized successfully.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows checking the state of a list to determine if invoking\r
+       member functions is appropriate.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo365">[Functions]<a name="Component20Library3a20List2fcl5fis5fobject5fin5flist">\r
+Component Library: List/cl_is_object_in_list</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_object_in_list</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_object_in_list</strong> function returns whether an object\r
+       is stored in a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT boolean_t CL_API\r
+<strong>cl_is_object_in_list</strong>(\r
+        IN      const <a href="#robo390">cl_list_t</a>* const  p_list,\r
+        IN      const void* const               p_object );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure in which to look for the object.\r
+\r
+       p_object\r
+               [in] Pointer to an object stored in a list.\r
+\r
+ RETURN VALUES\r
+       TRUE if p_object was found in the list.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo366">[Functions]<a name="Component20Library3a20List2fcl5flist5fapply5ffunc">\r
+Component Library: List/cl_list_apply_func</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_apply_func</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_apply_func</strong> function executes a specified function for every\r
+       object stored in a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_list_apply_func</strong>(\r
+        IN      const <a href="#robo390">cl_list_t</a>* const  p_list,\r
+        IN      <a href="#robo392">cl_pfn_list_apply_t</a>             pfn_func,\r
+        IN      const void* const               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure to iterate.\r
+\r
+       pfn_func\r
+               [in] Function invoked for every item in a list.\r
+               See the <a href="#robo392">cl_pfn_list_apply_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_list_apply_func</strong> invokes the specified callback function for every\r
+       object stored in the list, starting from the head.  The function specified\r
+       by the pfn_func parameter must not perform any list operations as these\r
+       would corrupt the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo371">cl_list_find_from_head</a>, <a href="#robo372">cl_list_find_from_tail</a>,\r
+       <a href="#robo392">cl_pfn_list_apply_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo367">[Functions]<a name="Component20Library3a20List2fcl5flist5fconstruct">\r
+Component Library: List/cl_list_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_construct</strong> function constructs a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_list_construct</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const        p_list );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to <a href="#robo390">cl_list_t</a> object whose state to initialize.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo374">cl_list_init</a>, <a href="#robo369">cl_list_destroy</a> and <a href="#robo364">cl_is_list_inited</a>.\r
+\r
+       Calling <strong>cl_list_construct</strong> is a prerequisite to calling any other\r
+       list function except <a href="#robo374">cl_list_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo374">cl_list_init</a>, <a href="#robo369">cl_list_destroy</a>, <a href="#robo364">cl_is_list_inited</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo368">[Functions]<a name="Component20Library3a20List2fcl5flist5fcount">\r
+Component Library: List/cl_list_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_count</strong> function returns the number of objects stored in a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_list_count</strong>(\r
+        IN      const <a href="#robo390">cl_list_t</a>* const  p_list )\r
+{\r
+        CL_ASSERT( p_list );\r
+        CL_ASSERT( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+\r
+        return( <a href="./cl_qlist_h.html#robo559">cl_qlist_count</a>( &amp;p_list-&gt;list ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure whose object to count.\r
+\r
+ RETURN VALUES\r
+       Number of objects stored in the specified list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo369">[Functions]<a name="Component20Library3a20List2fcl5flist5fdestroy">\r
+Component Library: List/cl_list_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_destroy</strong> function destroys a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_list_destroy</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const        p_list );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to <a href="#robo390">cl_list_t</a> structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_list_destroy</strong> does not affect any of the objects stored in the list,\r
+       but does release all memory allocated internally.  Further operations\r
+       should not be attempted on the list after <strong>cl_list_destroy</strong> is invoked.\r
+\r
+       This function should only be called after a call to <a href="#robo367">cl_list_construct</a>\r
+       or <a href="#robo374">cl_list_init</a>.\r
+\r
+       In debug builds, <strong>cl_list_destroy</strong> asserts if the list is not empty.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo367">cl_list_construct</a>, <a href="#robo374">cl_list_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo370">[Functions]<a name="Component20Library3a20List2fcl5flist5fend">\r
+Component Library: List/cl_list_end</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_end</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_end</strong> function returns returns the list iterator for\r
+       the end of a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE const <a href="#robo381">cl_list_iterator_t</a> CL_API\r
+<strong>cl_list_end</strong>(\r
+        IN      const <a href="#robo390">cl_list_t</a>* const  p_list )\r
+{\r
+        CL_ASSERT( p_list );\r
+        CL_ASSERT( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+\r
+        return( <a href="./cl_qlist_h.html#robo560">cl_qlist_end</a>( &amp;p_list-&gt;list ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure for which the iterator for the\r
+               object at the head is to be returned.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       <a href="#robo381">cl_list_iterator_t</a> for the end of the list.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Use <a href="#robo383">cl_list_obj</a> to retrieve the object associated with the\r
+       returned <a href="#robo381">cl_list_iterator_t</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo373">cl_list_head</a>, <a href="#robo391">cl_list_tail</a>, <a href="#robo382">cl_list_next</a>, <a href="#robo384">cl_list_prev</a>,\r
+       <a href="#robo383">cl_list_obj</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo371">[Functions]<a name="Component20Library3a20List2fcl5flist5ffind5ffrom5fhead">\r
+Component Library: List/cl_list_find_from_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_find_from_head</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_find_from_head</strong> function uses a specified function\r
+       to search for an object starting from the head of a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT const <a href="#robo381">cl_list_iterator_t</a> CL_API\r
+<strong>cl_list_find_from_head</strong>(\r
+        IN      const <a href="#robo390">cl_list_t</a>* const  p_list,\r
+        IN      <a href="#robo393">cl_pfn_list_find_t</a>              pfn_func,\r
+        IN      const void* const               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure to search.\r
+\r
+       pfn_func\r
+               [in] Function invoked to determine if a match was found.\r
+               See the <a href="#robo393">cl_pfn_list_find_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context.\r
+\r
+ RETURN VALUES\r
+       Returns the iterator for the object if found.\r
+\r
+       Returns the iterator for the list end otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_list_find_from_head</strong> does not remove the found object from\r
+       the list.  The iterator for the object is returned when the function\r
+       provided by the pfn_func parameter returns CL_SUCCESS.  The function\r
+       specified by the pfn_func parameter must not perform any list\r
+       operations as these would corrupt the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo372">cl_list_find_from_tail</a>, <a href="#robo366">cl_list_apply_func</a>,\r
+       <a href="#robo393">cl_pfn_list_find_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo372">[Functions]<a name="Component20Library3a20List2fcl5flist5ffind5ffrom5ftail">\r
+Component Library: List/cl_list_find_from_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_find_from_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_find_from_tail</strong> function uses a specified function\r
+       to search for an object starting from the tail of a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT const <a href="#robo381">cl_list_iterator_t</a> CL_API\r
+<strong>cl_list_find_from_tail</strong>(\r
+        IN      const <a href="#robo390">cl_list_t</a>* const  p_list,\r
+        IN      <a href="#robo393">cl_pfn_list_find_t</a>              pfn_func,\r
+        IN      const void* const               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure to search.\r
+\r
+       pfn_func\r
+               [in] Function invoked to determine if a match was found.\r
+               See the <a href="#robo393">cl_pfn_list_find_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context.\r
+\r
+ RETURN VALUES\r
+       Returns the iterator for the object if found.\r
+\r
+       Returns the iterator for the list end otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_list_find_from_tail</strong> does not remove the found object from\r
+       the list.  The iterator for the object is returned when the function\r
+       provided by the pfn_func parameter returns CL_SUCCESS.  The function\r
+       specified by the pfn_func parameter must not perform any list\r
+       operations as these would corrupt the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo371">cl_list_find_from_head</a>, <a href="#robo366">cl_list_apply_func</a>,\r
+       <a href="#robo393">cl_pfn_list_find_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo373">[Functions]<a name="Component20Library3a20List2fcl5flist5fhead">\r
+Component Library: List/cl_list_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_head</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_head</strong> function returns returns a list iterator for\r
+       the head of a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE const <a href="#robo381">cl_list_iterator_t</a> CL_API\r
+<strong>cl_list_head</strong>(\r
+        IN      const <a href="#robo390">cl_list_t</a>* const  p_list )\r
+{\r
+        CL_ASSERT( p_list );\r
+        CL_ASSERT( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+\r
+        return( <a href="./cl_qlist_h.html#robo565">cl_qlist_head</a>( &amp;p_list-&gt;list ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure for which the iterator for the\r
+               object at the head is to be returned.\r
+\r
+ RETURN VALUES\r
+       <a href="#robo381">cl_list_iterator_t</a> for the head of the list.\r
+\r
+       <a href="#robo381">cl_list_iterator_t</a> for the end of the list if the list is empty.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Use <a href="#robo383">cl_list_obj</a> to retrieve the object associated with the\r
+       returned <a href="#robo381">cl_list_iterator_t</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo391">cl_list_tail</a>, <a href="#robo382">cl_list_next</a>, <a href="#robo384">cl_list_prev</a>, <a href="#robo370">cl_list_end</a>,\r
+       <a href="#robo383">cl_list_obj</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo374">[Functions]<a name="Component20Library3a20List2fcl5flist5finit">\r
+Component Library: List/cl_list_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_init</strong> function initializes a list for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_list_init</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const        p_list,\r
+        IN      const size_t            min_items );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to <a href="#robo390">cl_list_t</a> structure to initialize.\r
+\r
+       min_items\r
+               [in] Minimum number of items that can be stored.  All necessary\r
+               allocations to allow storing the minimum number of items is performed\r
+               at initialization time.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the list was initialized successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for initialization.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The list will always be able to store at least as many items as specified\r
+       by the min_items parameter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo367">cl_list_construct</a>, <a href="#robo369">cl_list_destroy</a>, <a href="#robo377">cl_list_insert_head</a>,\r
+       <a href="#robo380">cl_list_insert_tail</a>, <a href="#robo386">cl_list_remove_head</a>, <a href="#robo389">cl_list_remove_tail</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo375">[Functions]<a name="Component20Library3a20List2fcl5flist5finsert5farray5fhead">\r
+Component Library: List/cl_list_insert_array_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_insert_array_head</strong>\r
+\r
+ DESCRIPTION:\r
+       The <strong>cl_list_insert_array_head</strong> function inserts an array of objects\r
+       at the head of a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_list_insert_array_head</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const        p_list,\r
+        IN      const void* const       p_array,\r
+        IN      uint32_t                        item_count,\r
+        IN      const uint32_t          item_size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure into which to insert the objects.\r
+\r
+       p_array\r
+               [in] Pointer to the first object in an array.\r
+\r
+       item_count\r
+               [in] Number of objects in the array.\r
+\r
+       item_size\r
+               [in] Size of the objects added to the list.  This is the stride in the\r
+               array from one object to the next.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the insertion was successful.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the insertion.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Inserts all objects in the array to the head of the list, preserving the\r
+       ordering of the objects.  If not successful, no items are added.\r
+       <a href="#robo15">List</a> insertion operations are guaranteed to work for the minimum number\r
+       of items as specified in <a href="#robo374">cl_list_init</a> by the min_items parameter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo376">cl_list_insert_array_tail</a>, <a href="#robo377">cl_list_insert_head</a>, <a href="#robo380">cl_list_insert_tail</a>,\r
+       <a href="#robo379">cl_list_insert_prev</a>, <a href="#robo378">cl_list_insert_next</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo376">[Functions]<a name="Component20Library3a20List2fcl5flist5finsert5farray5ftail">\r
+Component Library: List/cl_list_insert_array_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_insert_array_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_insert_array_tail</strong> function inserts an array of objects\r
+       at the tail of a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_list_insert_array_tail</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const        p_list,\r
+        IN      const void* const       p_array,\r
+        IN      uint32_t                        item_count,\r
+        IN      const uint32_t          item_size);\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure into which to insert the objects.\r
+\r
+       p_array\r
+               [in] Pointer to the first object in an array.\r
+\r
+       item_count\r
+               [in] Number of objects in the array.\r
+\r
+       item_size\r
+               [in] Size of the objects added to the list.  This is the stride in the\r
+               array from one object to the next.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the insertion was successful.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the insertion.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Inserts all objects in the array to the tail of the list, preserving the\r
+       ordering of the objects.  If not successful, no items are added.\r
+       <a href="#robo15">List</a> insertion operations are guaranteed to work for the minimum number\r
+       of items as specified in <a href="#robo374">cl_list_init</a> by the min_items parameter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo375">cl_list_insert_array_head</a>, <a href="#robo377">cl_list_insert_head</a>, <a href="#robo380">cl_list_insert_tail</a>,\r
+       <a href="#robo379">cl_list_insert_prev</a>, <a href="#robo378">cl_list_insert_next</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo377">[Functions]<a name="Component20Library3a20List2fcl5flist5finsert5fhead">\r
+Component Library: List/cl_list_insert_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_insert_head</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_insert_head</strong> function inserts an object at the head of a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_list_insert_head</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const        p_list,\r
+        IN      const void* const       p_object )\r
+{\r
+        cl_pool_obj_t   *p_pool_obj;\r
+\r
+        CL_ASSERT( p_list );\r
+        CL_ASSERT( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+\r
+        /* Get a list item to add to the list. */\r
+        p_pool_obj = (cl_pool_obj_t*)<a href="./cl_qpool_h.html#robo621">cl_qpool_get</a>( &amp;p_list-&gt;list_item_pool );\r
+        if( !p_pool_obj )\r
+                return( CL_INSUFFICIENT_MEMORY );\r
+\r
+        p_pool_obj-&gt;list_obj.p_object = p_object;\r
+        <a href="./cl_qlist_h.html#robo569">cl_qlist_insert_head</a>( &amp;p_list-&gt;list, &amp;p_pool_obj-&gt;list_obj.list_item );\r
+        return( CL_SUCCESS );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure into which to insert the object.\r
+\r
+       p_object\r
+               [in] Pointer to an object to insert into the list.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the insertion was successful.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the insertion.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Inserts the specified object at the head of the list.  <a href="#robo15">List</a> insertion\r
+       operations are guaranteed to work for the minimum number of items as\r
+       specified in <a href="#robo374">cl_list_init</a> by the min_items parameter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo380">cl_list_insert_tail</a>, <a href="#robo375">cl_list_insert_array_head</a>,\r
+       <a href="#robo376">cl_list_insert_array_tail</a>, <a href="#robo379">cl_list_insert_prev</a>, <a href="#robo378">cl_list_insert_next</a>,\r
+       <a href="#robo386">cl_list_remove_head</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo378">[Functions]<a name="Component20Library3a20List2fcl5flist5finsert5fnext">\r
+Component Library: List/cl_list_insert_next</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_insert_next</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_insert_next</strong> function inserts an object in a list after\r
+       the object associated with a given iterator.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_list_insert_next</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const                        p_list,\r
+        IN      const <a href="#robo381">cl_list_iterator_t</a>        iterator,\r
+        IN      const void* const                       p_object )\r
+{\r
+        cl_pool_obj_t   *p_pool_obj;\r
+\r
+        CL_ASSERT( p_list );\r
+        CL_ASSERT( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+\r
+        /* Get a list item to add to the list. */\r
+        p_pool_obj = (cl_pool_obj_t*)<a href="./cl_qpool_h.html#robo621">cl_qpool_get</a>( &amp;p_list-&gt;list_item_pool );\r
+        if( !p_pool_obj )\r
+                return( CL_INSUFFICIENT_MEMORY );\r
+\r
+        p_pool_obj-&gt;list_obj.p_object = p_object;\r
+        <a href="./cl_qlist_h.html#robo572">cl_qlist_insert_next</a>( &amp;p_list-&gt;list, (<a href="./cl_qlist_h.html#robo554">cl_list_item_t</a>*)iterator,\r
+                &amp;p_pool_obj-&gt;list_obj.list_item );\r
+        return( CL_SUCCESS );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure into which to insert the object.\r
+\r
+       iterator\r
+               [in] <a href="#robo381">cl_list_iterator_t</a> returned by a previous call to <a href="#robo373">cl_list_head</a>,\r
+               <a href="#robo391">cl_list_tail</a>, <a href="#robo382">cl_list_next</a>, or <a href="#robo384">cl_list_prev</a>.\r
+\r
+       p_object\r
+               [in] Pointer to an object to insert into the list.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the insertion was successful.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the insertion.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo379">cl_list_insert_prev</a>, <a href="#robo377">cl_list_insert_head</a>, <a href="#robo380">cl_list_insert_tail</a>,\r
+       <a href="#robo375">cl_list_insert_array_head</a>, <a href="#robo376">cl_list_insert_array_tail</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo379">[Functions]<a name="Component20Library3a20List2fcl5flist5finsert5fprev">\r
+Component Library: List/cl_list_insert_prev</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_insert_prev</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_insert_prev</strong> function inserts an object in a list before\r
+       the object associated with a given iterator.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_list_insert_prev</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const                        p_list,\r
+        IN      const <a href="#robo381">cl_list_iterator_t</a>        iterator,\r
+        IN      const void* const                       p_object )\r
+{\r
+        cl_pool_obj_t   *p_pool_obj;\r
+\r
+        CL_ASSERT( p_list );\r
+        CL_ASSERT( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+\r
+        /* Get a list item to add to the list. */\r
+        p_pool_obj = (cl_pool_obj_t*)<a href="./cl_qpool_h.html#robo621">cl_qpool_get</a>( &amp;p_list-&gt;list_item_pool );\r
+        if( !p_pool_obj )\r
+                return( CL_INSUFFICIENT_MEMORY );\r
+\r
+        p_pool_obj-&gt;list_obj.p_object = p_object;\r
+        <a href="./cl_qlist_h.html#robo573">cl_qlist_insert_prev</a>( &amp;p_list-&gt;list, (<a href="./cl_qlist_h.html#robo554">cl_list_item_t</a>*)iterator,\r
+                &amp;p_pool_obj-&gt;list_obj.list_item );\r
+        return( CL_SUCCESS );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure into which to insert the object.\r
+\r
+       iterator\r
+               [in] <a href="#robo381">cl_list_iterator_t</a> returned by a previous call to <a href="#robo373">cl_list_head</a>,\r
+               <a href="#robo391">cl_list_tail</a>, <a href="#robo382">cl_list_next</a>, or <a href="#robo384">cl_list_prev</a>.\r
+\r
+       p_object\r
+               [in] Pointer to an object to insert into the list.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the insertion was successful.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the insertion.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo378">cl_list_insert_next</a>, <a href="#robo377">cl_list_insert_head</a>, <a href="#robo380">cl_list_insert_tail</a>,\r
+       <a href="#robo375">cl_list_insert_array_head</a>, <a href="#robo376">cl_list_insert_array_tail</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo380">[Functions]<a name="Component20Library3a20List2fcl5flist5finsert5ftail">\r
+Component Library: List/cl_list_insert_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_insert_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_insert_tail</strong> function inserts an object at the head of a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_list_insert_tail</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const        p_list,\r
+        IN      const void* const       p_object )\r
+{\r
+        cl_pool_obj_t   *p_pool_obj;\r
+\r
+        CL_ASSERT( p_list );\r
+        CL_ASSERT( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+\r
+        /* Get a list item to add to the list. */\r
+        p_pool_obj = (cl_pool_obj_t*)<a href="./cl_qpool_h.html#robo621">cl_qpool_get</a>( &amp;p_list-&gt;list_item_pool );\r
+        if( !p_pool_obj )\r
+                return( CL_INSUFFICIENT_MEMORY );\r
+\r
+        p_pool_obj-&gt;list_obj.p_object = p_object;\r
+        <a href="./cl_qlist_h.html#robo574">cl_qlist_insert_tail</a>( &amp;p_list-&gt;list, &amp;p_pool_obj-&gt;list_obj.list_item );\r
+        return( CL_SUCCESS );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure into which to insert the object.\r
+\r
+       p_object\r
+               [in] Pointer to an object to insert into the list.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the insertion was successful.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the insertion.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Inserts the specified object at the tail of the list.  <a href="#robo15">List</a> insertion\r
+       operations are guaranteed to work for the minimum number of items as\r
+       specified in <a href="#robo374">cl_list_init</a> by the min_items parameter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo377">cl_list_insert_head</a>, <a href="#robo375">cl_list_insert_array_head</a>,\r
+       <a href="#robo376">cl_list_insert_array_tail</a>, <a href="#robo379">cl_list_insert_prev</a>, <a href="#robo378">cl_list_insert_next</a>,\r
+       <a href="#robo389">cl_list_remove_tail</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo381">[Definitions]<a name="Component20Library3a20List2fcl5flist5fiterator5ft">\r
+Component Library: List/cl_list_iterator_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_iterator_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Iterator type used to walk a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef const <a href="./cl_qlist_h.html#robo554">cl_list_item_t</a> *<strong>cl_list_iterator_t</strong>;\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The iterator should be treated as opaque to prevent corrupting the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo373">cl_list_head</a>, <a href="#robo391">cl_list_tail</a>, <a href="#robo382">cl_list_next</a>, <a href="#robo384">cl_list_prev</a>,\r
+       <a href="#robo383">cl_list_obj</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo382">[Functions]<a name="Component20Library3a20List2fcl5flist5fnext">\r
+Component Library: List/cl_list_next</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_next</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_next</strong> function returns a list iterator for the object stored\r
+       in a list after the object associated with a given list iterator.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE const <a href="#robo381">cl_list_iterator_t</a> CL_API\r
+<strong>cl_list_next</strong>(\r
+        IN      const <a href="#robo381">cl_list_iterator_t</a>        iterator )\r
+{\r
+        CL_ASSERT( iterator );\r
+\r
+        return( <a href="./cl_qlist_h.html#robo576">cl_qlist_next</a>( iterator ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure for which the iterator for the\r
+               next object is to be returned.\r
+\r
+       iterator\r
+               [in] <a href="#robo381">cl_list_iterator_t</a> returned by a previous call to <a href="#robo373">cl_list_head</a>,\r
+               <a href="#robo391">cl_list_tail</a>, <strong>cl_list_next</strong>, or <a href="#robo384">cl_list_prev</a>.\r
+\r
+ RETURN VALUES\r
+       <a href="#robo381">cl_list_iterator_t</a> for the object following the object associated with\r
+       the list iterator specified by the iterator parameter.\r
+\r
+       <a href="#robo381">cl_list_iterator_t</a> for the end of the list if the list is empty.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Use <a href="#robo383">cl_list_obj</a> to retrieve the object associated with the\r
+       returned <a href="#robo381">cl_list_iterator_t</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo384">cl_list_prev</a>, <a href="#robo373">cl_list_head</a>, <a href="#robo391">cl_list_tail</a>, <a href="#robo370">cl_list_end</a>,\r
+       <a href="#robo383">cl_list_obj</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo383">[Functions]<a name="Component20Library3a20List2fcl5flist5fobj">\r
+Component Library: List/cl_list_obj</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_obj</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_obj</strong> function returns the object associated\r
+       with a list iterator.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void* CL_API\r
+<strong>cl_list_obj</strong>(\r
+        IN      const <a href="#robo381">cl_list_iterator_t</a>        iterator )\r
+{\r
+        CL_ASSERT( iterator );\r
+\r
+        return( (void*)((cl_pool_obj_t*)iterator)-&gt;list_obj.p_object );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       iterator\r
+               [in] <a href="#robo381">cl_list_iterator_t</a> returned by a previous call to <a href="#robo373">cl_list_head</a>,\r
+               <a href="#robo391">cl_list_tail</a>, <a href="#robo382">cl_list_next</a>, or <a href="#robo384">cl_list_prev</a> whose object is requested.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Pointer to the object associated with the list iterator specified\r
+       by the iterator parameter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo373">cl_list_head</a>, <a href="#robo391">cl_list_tail</a>, <a href="#robo382">cl_list_next</a>, <a href="#robo384">cl_list_prev</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo384">[Functions]<a name="Component20Library3a20List2fcl5flist5fprev">\r
+Component Library: List/cl_list_prev</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_prev</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_prev</strong> function returns a list iterator for the object stored\r
+       in a list before the object associated with a given list iterator.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE const <a href="#robo381">cl_list_iterator_t</a> CL_API\r
+<strong>cl_list_prev</strong>(\r
+        IN      const <a href="#robo381">cl_list_iterator_t</a>        iterator )\r
+{\r
+        CL_ASSERT( iterator );\r
+\r
+        return( <a href="./cl_qlist_h.html#robo578">cl_qlist_prev</a>( iterator ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure for which the iterator for the\r
+               next object is to be returned.\r
+\r
+       iterator\r
+               [in] <a href="#robo381">cl_list_iterator_t</a> returned by a previous call to <a href="#robo373">cl_list_head</a>,\r
+               <a href="#robo391">cl_list_tail</a>, <a href="#robo382">cl_list_next</a>, or <strong>cl_list_prev</strong>.\r
+\r
+ RETURN VALUES\r
+       <a href="#robo381">cl_list_iterator_t</a> for the object preceding the object associated with\r
+       the list iterator specified by the iterator parameter.\r
+\r
+       <a href="#robo381">cl_list_iterator_t</a> for the end of the list if the list is empty.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Use <a href="#robo383">cl_list_obj</a> to retrieve the object associated with the\r
+       returned <a href="#robo381">cl_list_iterator_t</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo382">cl_list_next</a>, <a href="#robo373">cl_list_head</a>, <a href="#robo391">cl_list_tail</a>, <a href="#robo370">cl_list_end</a>,\r
+       <a href="#robo383">cl_list_obj</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo385">[Functions]<a name="Component20Library3a20List2fcl5flist5fremove5fall">\r
+Component Library: List/cl_list_remove_all</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_remove_all</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_remove_all</strong> function removes all objects from a list,\r
+       leaving it empty.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_list_remove_all</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const        p_list )\r
+{\r
+        CL_ASSERT( p_list );\r
+        CL_ASSERT( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+\r
+        /* Return all the list items to the pool. */\r
+        <a href="./cl_qpool_h.html#robo625">cl_qpool_put_list</a>( &amp;p_list-&gt;list_item_pool, &amp;p_list-&gt;list );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure from which to remove all objects.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo386">cl_list_remove_head</a>, <a href="#robo389">cl_list_remove_tail</a>, <a href="#robo388">cl_list_remove_object</a>,\r
+       <a href="#robo387">cl_list_remove_item</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo386">[Functions]<a name="Component20Library3a20List2fcl5flist5fremove5fhead">\r
+Component Library: List/cl_list_remove_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_remove_head</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_remove_head</strong> function removes an object from the head of a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void* CL_API\r
+<strong>cl_list_remove_head</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const        p_list )\r
+{\r
+        cl_pool_obj_t   *p_pool_obj;\r
+\r
+        CL_ASSERT( p_list );\r
+        CL_ASSERT( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+\r
+        /* See if the list is empty. */\r
+        if( <a href="./cl_qlist_h.html#robo553">cl_is_qlist_empty</a>( &amp;p_list-&gt;list ) )\r
+                return( NULL );\r
+\r
+        /* Get the item at the head of the list. */\r
+        p_pool_obj = (cl_pool_obj_t*)<a href="./cl_qlist_h.html#robo580">cl_qlist_remove_head</a>( &amp;p_list-&gt;list );\r
+\r
+        /* Place the pool item back into the pool. */\r
+        <a href="./cl_qpool_h.html#robo624">cl_qpool_put</a>( &amp;p_list-&gt;list_item_pool, (<a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>*)p_pool_obj );\r
+\r
+        return( (void*)p_pool_obj-&gt;list_obj.p_object );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure from which to remove an object.\r
+\r
+ RETURN VALUES\r
+       Returns the pointer to the object formerly at the head of the list.\r
+\r
+       NULL if the list was empty.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo389">cl_list_remove_tail</a>, <a href="#robo385">cl_list_remove_all</a>, <a href="#robo388">cl_list_remove_object</a>,\r
+       <a href="#robo387">cl_list_remove_item</a>, <a href="#robo377">cl_list_insert_head</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo387">[Functions]<a name="Component20Library3a20List2fcl5flist5fremove5fitem">\r
+Component Library: List/cl_list_remove_item</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_remove_item</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_remove_item</strong> function removes an object from the head of a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_list_remove_item</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const                        p_list,\r
+        IN      const <a href="#robo381">cl_list_iterator_t</a>        iterator )\r
+{\r
+        CL_ASSERT( p_list );\r
+        CL_ASSERT( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+\r
+        <a href="./cl_qlist_h.html#robo581">cl_qlist_remove_item</a>( &amp;p_list-&gt;list, (<a href="./cl_qlist_h.html#robo554">cl_list_item_t</a>*)iterator );\r
+\r
+        /* Place the list item back into the pool. */\r
+        <a href="./cl_qpool_h.html#robo624">cl_qpool_put</a>( &amp;p_list-&gt;list_item_pool, (<a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>*)iterator );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure from which to remove the item.\r
+\r
+       iterator\r
+               [in] <a href="#robo381">cl_list_iterator_t</a> returned by a previous call to <a href="#robo373">cl_list_head</a>,\r
+               <a href="#robo391">cl_list_tail</a>, <a href="#robo382">cl_list_next</a>, or <a href="#robo384">cl_list_prev</a>.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo388">cl_list_remove_object</a>, <a href="#robo386">cl_list_remove_head</a>, <a href="#robo389">cl_list_remove_tail</a>,\r
+       <a href="#robo385">cl_list_remove_all</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo388">[Functions]<a name="Component20Library3a20List2fcl5flist5fremove5fobject">\r
+Component Library: List/cl_list_remove_object</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_remove_object</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_remove_object</strong> function removes a specific object from a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_list_remove_object</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const        p_list,\r
+        IN      const void* const       p_object );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure from which to remove the object.\r
+\r
+       p_object\r
+               [in] Pointer to an object to remove from the list.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the object was removed.\r
+\r
+       CL_NOT_FOUND if the object was not found in the list.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Removes the first occurrence of an object from a list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo387">cl_list_remove_item</a>, <a href="#robo386">cl_list_remove_head</a>, <a href="#robo389">cl_list_remove_tail</a>,\r
+       <a href="#robo385">cl_list_remove_all</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo389">[Functions]<a name="Component20Library3a20List2fcl5flist5fremove5ftail">\r
+Component Library: List/cl_list_remove_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_remove_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_remove_tail</strong> function removes an object from the tail of a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void* CL_API\r
+<strong>cl_list_remove_tail</strong>(\r
+        IN      <a href="#robo390">cl_list_t</a>* const        p_list )\r
+{\r
+        cl_pool_obj_t   *p_pool_obj;\r
+\r
+        CL_ASSERT( p_list );\r
+        CL_ASSERT( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+\r
+        /* See if the list is empty. */\r
+        if( <a href="./cl_qlist_h.html#robo553">cl_is_qlist_empty</a>( &amp;p_list-&gt;list ) )\r
+                return( NULL );\r
+\r
+        /* Get the item at the head of the list. */\r
+        p_pool_obj = (cl_pool_obj_t*)<a href="./cl_qlist_h.html#robo582">cl_qlist_remove_tail</a>( &amp;p_list-&gt;list );\r
+\r
+        /* Place the list item back into the pool. */\r
+        <a href="./cl_qpool_h.html#robo624">cl_qpool_put</a>( &amp;p_list-&gt;list_item_pool, (<a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>*)p_pool_obj );\r
+\r
+        return( (void*)p_pool_obj-&gt;list_obj.p_object );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure from which to remove an object.\r
+\r
+ RETURN VALUES\r
+       Returns the pointer to the object formerly at the tail of the list.\r
+\r
+       NULL if the list was empty.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo386">cl_list_remove_head</a>, <a href="#robo385">cl_list_remove_all</a>, <a href="#robo388">cl_list_remove_object</a>,\r
+       <a href="#robo387">cl_list_remove_item</a>, <a href="#robo377">cl_list_insert_head</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo390">[Structures]<a name="Component20Library3a20List2fcl5flist5ft">\r
+Component Library: List/cl_list_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <a href="#robo15">List</a> structure.\r
+\r
+       The <strong>cl_list_t</strong> structure should be treated as opaque and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_list\r
+{\r
+        <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a>                      list;\r
+        <a href="./cl_qpool_h.html#robo626">cl_qpool_t</a>                      list_item_pool;\r
+\r
+} <strong>cl_list_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       list\r
+               Quick list of items stored in the list.\r
+\r
+       list_item_pool\r
+               Quick pool of list objects for storing objects in the quick list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo391">[Functions]<a name="Component20Library3a20List2fcl5flist5ftail">\r
+Component Library: List/cl_list_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_tail</strong> function returns returns a list iterator for\r
+       the tail of a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE const <a href="#robo381">cl_list_iterator_t</a> CL_API\r
+<strong>cl_list_tail</strong>(\r
+        IN      const <a href="#robo390">cl_list_t</a>* const  p_list )\r
+{\r
+        CL_ASSERT( p_list );\r
+        CL_ASSERT( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_list-&gt;list_item_pool ) );\r
+\r
+        return( <a href="./cl_qlist_h.html#robo585">cl_qlist_tail</a>( &amp;p_list-&gt;list ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo390">cl_list_t</a> structure for which the iterator for the\r
+               object at the tail is to be returned.\r
+\r
+ RETURN VALUES\r
+       <a href="#robo381">cl_list_iterator_t</a> for the tail of the list.\r
+\r
+       <a href="#robo381">cl_list_iterator_t</a> for the end of the list if the list is empty.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Use <a href="#robo383">cl_list_obj</a> to retrieve the object associated with the\r
+\r
+       returned <a href="#robo381">cl_list_iterator_t</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo373">cl_list_head</a>, <a href="#robo382">cl_list_next</a>, <a href="#robo384">cl_list_prev</a>, <a href="#robo370">cl_list_end</a>,\r
+       <a href="#robo383">cl_list_obj</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo392">[Definitions]<a name="Component20Library3a20List2fcl5fpfn5flist5fapply5ft">\r
+Component Library: List/cl_pfn_list_apply_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_list_apply_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_list_apply_t</strong> function type defines the prototype for functions\r
+       used to iterate objects in a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_list_apply_t</strong>)(\r
+        IN      void* const                     p_object,\r
+        IN      void*                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_object\r
+               [in] Pointer to an object stored in a list.\r
+\r
+       context\r
+               [in] Context provided in a call to <a href="#robo366">cl_list_apply_func</a>.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for the\r
+       function provided by users as a parameter to the <a href="#robo366">cl_list_apply_func</a>\r
+       function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo366">cl_list_apply_func</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo393">[Definitions]<a name="Component20Library3a20List2fcl5fpfn5flist5ffind5ft">\r
+Component Library: List/cl_pfn_list_find_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_list_find_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_list_find_t</strong> function type defines the prototype for functions\r
+       used to find objects in a list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./cl_types_h.html#robo304">cl_status_t</a>\r
+(CL_API *<strong>cl_pfn_list_find_t</strong>)(\r
+        IN      const void* const       p_object,\r
+        IN      void*                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_object\r
+               [in] Pointer to an object stored in a list.\r
+\r
+       context\r
+               [in] Context provided in a call to ListFindFromHead or ListFindFromTail.\r
+\r
+ RETURN VALUES\r
+       Return CL_SUCCESS if the desired item was found.  This stops list iteration.\r
+\r
+       Return CL_NOT_FOUND to continue the list iteration.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for the\r
+       function provided by users as a parameter to the <a href="#robo371">cl_list_find_from_head</a>\r
+       and <a href="#robo372">cl_list_find_from_tail</a> functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo15">List</a>, <a href="#robo371">cl_list_find_from_head</a>, <a href="#robo372">cl_list_find_from_tail</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_log_h.html b/trunk/docs/complib/cl_log_h.html
new file mode 100644 (file)
index 0000000..a2bce53
--- /dev/null
@@ -0,0 +1,117 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_log_h.html</title>\r
+<!-- Source: ./inc/complib/cl_log.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_log.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo16">[Modules]<a name="Component20Library2fLog20Provider">\r
+Component Library/Log Provider</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Log Provider\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The log provider allows users to log information in a system log instead of\r
+       the console or debugger target.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo394">[Functions]<a name="Component20Library3a20Log20Provider2fcl5flog5fevent">\r
+Component Library: Log Provider/cl_log_event</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_log_event</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_log_event</strong> function adds a new entry to the system log.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_log_event</strong>(\r
+        IN      const char* const       name,\r
+        IN      const <a href="#robo395">cl_log_type_t</a>     type,\r
+        IN      const char* const       message,\r
+        IN      const void* const       p_data OPTIONAL,\r
+        IN      const uint32_t          data_len );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       name\r
+               [in] Pointer to an ANSI string containing the name of the source for\r
+               the log entry.\r
+\r
+       type\r
+               [in] Defines the type of log entry to add to the system log.\r
+               See the definition of <a href="#robo395">cl_log_type_t</a> for acceptable values.\r
+\r
+       message\r
+               [in] Pointer to an ANSI string containing the text for the log entry.\r
+               The message should not be terminated with a new line, as the log\r
+               provider appends a new line to all log entries.\r
+\r
+       p_data\r
+               [in] Optional pointer to data providing context for the log entry.\r
+               At most 256 bytes of data can be successfully logged.\r
+\r
+       data_len\r
+               [in] Length of the buffer pointed to by the p_data parameter.  Ignored\r
+               if p_data is NULL.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       If the data length exceeds the maximum supported, the event is logged\r
+       without its accompanying data.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Log Provider, <a href="#robo395">cl_log_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo395">[Definitions]<a name="Component20Library3a20Log20Provider2fcl5flog5ftype5ft">\r
+Component Library: Log Provider/cl_log_type_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_log_type_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_log_type_t</strong> enumerated type is used to differentiate between\r
+       different types of log entries.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _cl_log_type\r
+{\r
+        CL_LOG_INFO,\r
+        CL_LOG_WARN,\r
+        CL_LOG_ERROR\r
+\r
+} <strong>cl_log_type_t</strong>;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       CL_LOG_INFO\r
+               Indicates a log entry is purely informational.\r
+\r
+       CL_LOG_WARN\r
+               Indicates a log entry is a warning but non-fatal.\r
+\r
+       CL_LOG_ERROR\r
+               Indicates a log entry is a fatal error.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Log Provider, <a href="#robo394">cl_log_event</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_map_h.html b/trunk/docs/complib/cl_map_h.html
new file mode 100644 (file)
index 0000000..979472e
--- /dev/null
@@ -0,0 +1,898 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_map_h.html</title>\r
+<!-- Source: ./inc/complib/cl_map.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_map.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo17">[Modules]<a name="Component20Library2fMap">\r
+Component Library/Map</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>Map</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>Map</strong> implements a binary tree that stores user objects.  Each item stored\r
+       in a map has a unique 64-bit key (duplicates are not allowed).  <strong>Map</strong>\r
+       provides the ability to efficiently search for an item given a key.\r
+\r
+       <strong>Map</strong> may allocate memory when inserting objects, and can therefore fail\r
+       operations due to insufficient memory.  Use quick map in situations where\r
+       such insertion failures cannot be tolerated.\r
+\r
+       <strong>Map</strong> is not thread safe, and users must provide serialization when adding\r
+       and removing items from the map.\r
+\r
+       The map functions operates on a <a href="#robo415">cl_map_t</a> structure which should be treated\r
+       as opaque and should be manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Types:\r
+               <a href="#robo406">cl_map_iterator_t</a>\r
+\r
+       Structures:\r
+               <a href="#robo415">cl_map_t</a>, <a href="./cl_qmap_h.html#robo593">cl_map_item_t</a>, <a href="./cl_qmap_h.html#robo594">cl_map_obj_t</a>\r
+\r
+       Item Manipulation:\r
+               <a href="#robo410">cl_map_obj</a>, <a href="#robo407">cl_map_key</a>\r
+\r
+       Initialization:\r
+               <a href="#robo397">cl_map_construct</a>, <a href="#robo404">cl_map_init</a>, <a href="#robo400">cl_map_destroy</a>\r
+\r
+       Iteration:\r
+               <a href="#robo401">cl_map_end</a>, <a href="#robo403">cl_map_head</a>, <a href="#robo416">cl_map_tail</a>, <a href="#robo409">cl_map_next</a>, <a href="#robo411">cl_map_prev</a>\r
+\r
+       Manipulation\r
+               <a href="#robo405">cl_map_insert</a>, <a href="#robo402">cl_map_get</a>, <a href="#robo414">cl_map_remove_item</a>, <a href="#robo412">cl_map_remove</a>,\r
+               <a href="#robo413">cl_map_remove_all</a>, <a href="#robo408">cl_map_merge</a>, <a href="#robo399">cl_map_delta</a>\r
+\r
+       Attributes:\r
+               <a href="#robo398">cl_map_count</a>, <a href="#robo396">cl_is_map_empty</a>, <a href="#robo322">cl_is_map_inited</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo322">[Functions]<a name="Component20Library3a20Event2fcl5fis5fmap5finited">\r
+Component Library: Event/cl_is_map_inited</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_map_inited</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_map_inited</strong> function returns whether a map was\r
+       successfully initialized.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE boolean_t CL_API\r
+<strong>cl_is_map_inited</strong>(\r
+        IN      const <a href="#robo415">cl_map_t</a>* const   p_map )\r
+{\r
+        /*\r
+         * The map's pool of map items is the last thing initialized.\r
+         * We can therefore use it to test for initialization.\r
+         */\r
+        return( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_map-&gt;pool ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo415">cl_map_t</a> structure whose initialization state\r
+               to check.\r
+\r
+ RETURN VALUES\r
+       TRUE if the map was initialized successfully.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows checking the state of a map to determine if invoking\r
+       member functions is appropriate.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo396">[Functions]<a name="Component20Library3a20Map2fcl5fis5fmap5fempty">\r
+Component Library: Map/cl_is_map_empty</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_map_empty</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_map_empty</strong> function returns whether a map is empty.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE boolean_t CL_API\r
+<strong>cl_is_map_empty</strong>(\r
+        IN      const <a href="#robo415">cl_map_t</a>* const   p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        return( <a href="./cl_qmap_h.html#robo592">cl_is_qmap_empty</a>( &amp;p_map-&gt;qmap ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a map to test for emptiness.\r
+\r
+ RETURN VALUES\r
+       TRUE if the map is empty.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo398">cl_map_count</a>, <a href="#robo413">cl_map_remove_all</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo397">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fconstruct">\r
+Component Library: Map/cl_map_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_construct</strong> function constructs a map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_map_construct</strong>(\r
+        IN      <a href="#robo415">cl_map_t</a>* const p_map );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo415">cl_map_t</a> structure to construct.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo404">cl_map_init</a>, <a href="#robo400">cl_map_destroy</a>, and <a href="#robo322">cl_is_map_inited</a>.\r
+\r
+       Calling <strong>cl_map_construct</strong> is a prerequisite to calling any other\r
+       map function except <a href="#robo404">cl_map_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo404">cl_map_init</a>, <a href="#robo400">cl_map_destroy</a>, <a href="#robo322">cl_is_map_inited</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo398">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fcount">\r
+Component Library: Map/cl_map_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_count</strong> function returns the number of items stored\r
+       in a map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_map_count</strong>(\r
+        IN      const <a href="#robo415">cl_map_t</a>* const   p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        return( <a href="./cl_qmap_h.html#robo597">cl_qmap_count</a>( &amp;p_map-&gt;qmap ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a map whose item count to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the number of items stored in the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo396">cl_is_map_empty</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo399">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fdelta">\r
+Component Library: Map/cl_map_delta</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_delta</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_delta</strong> function computes the differences between two maps.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_map_delta</strong>(\r
+        IN OUT  <a href="#robo415">cl_map_t</a>* const p_map1,\r
+        IN OUT  <a href="#robo415">cl_map_t</a>* const p_map2,\r
+        OUT             <a href="#robo415">cl_map_t</a>* const p_new,\r
+        OUT             <a href="#robo415">cl_map_t</a>* const p_old );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map1\r
+               [in/out] Pointer to the first of two <a href="#robo415">cl_map_t</a> structures whose\r
+               differences to compute.\r
+\r
+       p_map2\r
+               [in/out] Pointer to the second of two <a href="#robo415">cl_map_t</a> structures whose\r
+               differences to compute.\r
+\r
+       p_new\r
+               [out] Pointer to an empty <a href="#robo415">cl_map_t</a> structure that contains the items\r
+               unique to p_map2 upon return from the function.\r
+\r
+       p_old\r
+               [out] Pointer to an empty <a href="#robo415">cl_map_t</a> structure that contains the items\r
+               unique to p_map1 upon return from the function.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the operation succeeded.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the operation\r
+       to succeed.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Items are evaluated based on their keys.  Items that exist in both\r
+       p_map1 and p_map2 remain in their respective maps.  Items that\r
+       exist only p_map1 are moved to p_old.  Likewise, items that exist only\r
+       in p_map2 are moved to p_new.  This function can be usefull in evaluating\r
+       changes between two maps.\r
+\r
+       Both maps pointed to by p_new and p_old must be empty on input.\r
+\r
+       Upon failure, all input maps are restored to their original state.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo408">cl_map_merge</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo400">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fdestroy">\r
+Component Library: Map/cl_map_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_destroy</strong> function destroys a map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_map_destroy</strong>(\r
+        IN      <a href="#robo415">cl_map_t</a>* const p_map );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a map to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Performs any necessary cleanup of the specified map. Further\r
+       operations should not be attempted on the map. <strong>cl_map_destroy</strong> does\r
+       not affect any of the objects stored in the map.\r
+       This function should only be called after a call to <a href="#robo397">cl_map_construct</a>.\r
+\r
+       In debug builds, <strong>cl_map_destroy</strong> asserts that the map is empty.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo397">cl_map_construct</a>, <a href="#robo404">cl_map_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo401">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fend">\r
+Component Library: Map/cl_map_end</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_end</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_end</strong> function returns the iterator for the end of a map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE const <a href="#robo406">cl_map_iterator_t</a> CL_API\r
+<strong>cl_map_end</strong>(\r
+        IN      const <a href="#robo415">cl_map_t</a>* const   p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        return( <a href="./cl_qmap_h.html#robo599">cl_qmap_end</a>( &amp;p_map-&gt;qmap ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo415">cl_map_t</a> structure whose end to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Iterator for the end of the map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_map_end</strong> is useful for determining the validity of map items returned\r
+       by <a href="#robo403">cl_map_head</a>, <a href="#robo416">cl_map_tail</a>, <a href="#robo409">cl_map_next</a>, <a href="#robo411">cl_map_prev</a>.  If the iterator\r
+       by any of these functions compares to the end, the end of the map was\r
+       encoutered.\r
+       When using <a href="#robo403">cl_map_head</a> or <a href="#robo416">cl_map_tail</a>, this condition indicates that\r
+       the map is empty.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="./cl_qmap_h.html#robo601">cl_qmap_head</a>, <a href="./cl_qmap_h.html#robo614">cl_qmap_tail</a>, <a href="./cl_qmap_h.html#robo606">cl_qmap_next</a>, <a href="./cl_qmap_h.html#robo608">cl_qmap_prev</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo402">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fget">\r
+Component Library: Map/cl_map_get</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_get</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_get</strong> function returns the object associated with a key.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void* CL_API\r
+<strong>cl_map_get</strong>(\r
+        IN      const <a href="#robo415">cl_map_t</a>* const   p_map,\r
+        IN      const uint64_t                  key );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a map from which to retrieve the object with\r
+               the specified key.\r
+\r
+       key\r
+               [in] Key value used to search for the desired object.\r
+\r
+ RETURN VALUES\r
+       Pointer to the object with the desired key value.\r
+\r
+       NULL if there was no item with the desired key value stored in\r
+       the map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_map_get</strong> does not remove the item from the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo412">cl_map_remove</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo403">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fhead">\r
+Component Library: Map/cl_map_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_head</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_head</strong> function returns the map item with the lowest key\r
+       value stored in a map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo406">cl_map_iterator_t</a> CL_API\r
+<strong>cl_map_head</strong>(\r
+        IN      const <a href="#robo415">cl_map_t</a>* const   p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        return( <a href="./cl_qmap_h.html#robo601">cl_qmap_head</a>( &amp;p_map-&gt;qmap ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a map whose item with the lowest key is returned.\r
+\r
+ RETURN VALUES\r
+       Iterator for the object with the lowest key in the map.\r
+\r
+       Iterator for the map end if the map was empty.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_map_head</strong> does not remove the object from the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo416">cl_map_tail</a>, <a href="#robo409">cl_map_next</a>, <a href="#robo411">cl_map_prev</a>, <a href="#robo401">cl_map_end</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo404">[Functions]<a name="Component20Library3a20Map2fcl5fmap5finit">\r
+Component Library: Map/cl_map_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_init</strong> function initialized a map for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_map_init</strong>(\r
+        IN      <a href="#robo415">cl_map_t</a>* const p_map,\r
+        IN      const size_t    min_items );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo415">cl_map_t</a> structure to initialize.\r
+\r
+       min_items\r
+               [in] Minimum number of items that can be stored.  All necessary\r
+               allocations to allow storing the minimum number of items is performed\r
+               at initialization time.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the map was initialized successfully.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling map manipulation functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo400">cl_map_destroy</a>, <a href="#robo405">cl_map_insert</a>, <a href="#robo412">cl_map_remove</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo405">[Functions]<a name="Component20Library3a20Map2fcl5fmap5finsert">\r
+Component Library: Map/cl_map_insert</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_insert</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_insert</strong> function inserts a map item into a map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void* CL_API\r
+<strong>cl_map_insert</strong>(\r
+        IN      <a href="#robo415">cl_map_t</a>* const         p_map,\r
+        IN      const uint64_t          key,\r
+        IN      const void* const       p_object );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a map into which to add the item.\r
+\r
+       key\r
+               [in] Value to associate with the object.\r
+\r
+       p_object\r
+               [in] Pointer to an object to insert into the map.\r
+\r
+ RETURN VALUES\r
+       Pointer to the object in the map with the specified key after the call\r
+       completes.\r
+\r
+       NULL if there was not enough memory to insert the desired item.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Insertion operations may cause the map to rebalance.\r
+\r
+       If the map already contains an object already with the specified key,\r
+       that object will not be replaced and the pointer to that object is\r
+       returned.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo412">cl_map_remove</a>, <a href="./cl_qmap_h.html#robo593">cl_map_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo406">[Definitions]<a name="Component20Library3a20Map2fcl5fmap5fiterator5ft">\r
+Component Library: Map/cl_map_iterator_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_iterator_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Iterator type used to walk a map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef const <a href="./cl_qmap_h.html#robo593">cl_map_item_t</a> *<strong>cl_map_iterator_t</strong>;\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The iterator should be treated as opaque to prevent corrupting the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo403">cl_map_head</a>, <a href="#robo416">cl_map_tail</a>, <a href="#robo409">cl_map_next</a>, <a href="#robo411">cl_map_prev</a>, <a href="#robo407">cl_map_key</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo407">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fkey">\r
+Component Library: Map/cl_map_key</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_key</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_key</strong> function retrieves the key value of a map item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE uint64_t CL_API\r
+<strong>cl_map_key</strong>(\r
+        IN      const <a href="#robo406">cl_map_iterator_t</a> itor )\r
+{\r
+        return( <a href="./cl_qmap_h.html#robo604">cl_qmap_key</a>( itor ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       itor\r
+               [in] Iterator for the item whose key to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the 64-bit key value for the specified iterator.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The iterator specified by the itor parameter must have been retrived by\r
+       a previous call to <a href="#robo403">cl_map_head</a>, <a href="#robo416">cl_map_tail</a>, <a href="#robo409">cl_map_next</a>, or <a href="#robo411">cl_map_prev</a>.\r
+\r
+       The key value is set in a call to <a href="#robo405">cl_map_insert</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo405">cl_map_insert</a>, <a href="#robo403">cl_map_head</a>, <a href="#robo416">cl_map_tail</a>, <a href="#robo409">cl_map_next</a>, <a href="#robo411">cl_map_prev</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo408">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fmerge">\r
+Component Library: Map/cl_map_merge</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_merge</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_merge</strong> function moves all items from one map to another,\r
+       excluding duplicates.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_map_merge</strong>(\r
+        OUT             <a href="#robo415">cl_map_t</a>* const p_dest_map,\r
+        IN OUT  <a href="#robo415">cl_map_t</a>* const p_src_map );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dest_map\r
+               [out] Pointer to a <a href="#robo415">cl_map_t</a> structure to which items should be added.\r
+\r
+       p_src_map\r
+               [in/out] Pointer to a <a href="#robo415">cl_map_t</a> structure whose items to add\r
+               to p_dest_map.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the operation succeeded.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the operation\r
+       to succeed.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Items are evaluated based on their keys only.\r
+\r
+       Upon return from <strong>cl_map_merge</strong>, the map referenced by p_src_map contains\r
+       all duplicate items.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo399">cl_map_delta</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo409">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fnext">\r
+Component Library: Map/cl_map_next</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_next</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_next</strong> function returns the map item with the next higher\r
+       key value than a specified map item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo406">cl_map_iterator_t</a> CL_API\r
+<strong>cl_map_next</strong>(\r
+        IN      const <a href="#robo406">cl_map_iterator_t</a> itor )\r
+{\r
+        CL_ASSERT( itor );\r
+        return( <a href="./cl_qmap_h.html#robo606">cl_qmap_next</a>( itor ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       itor\r
+               [in] Iterator for an object in a map whose successor to return.\r
+\r
+ RETURN VALUES\r
+       Iterator for the object with the next higher key value in a map.\r
+\r
+       Iterator for the map end if the specified object was the last item in\r
+       the map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The iterator must have been retrieved by a previous call to <a href="#robo403">cl_map_head</a>,\r
+       <a href="#robo416">cl_map_tail</a>, <strong>cl_map_next</strong>, or <a href="#robo411">cl_map_prev</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo403">cl_map_head</a>, <a href="#robo416">cl_map_tail</a>, <a href="#robo411">cl_map_prev</a>, <a href="#robo401">cl_map_end</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo410">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fobj">\r
+Component Library: Map/cl_map_obj</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_obj</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_obj</strong> function returns the object associated with an iterator.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void* CL_API\r
+<strong>cl_map_obj</strong>(\r
+        IN      const <a href="#robo406">cl_map_iterator_t</a> itor )\r
+{\r
+        return( <a href="./cl_qmap_h.html#robo607">cl_qmap_obj</a>( <a href="./cl_types_h.html#robo508">PARENT_STRUCT</a>( itor, <a href="./cl_qmap_h.html#robo594">cl_map_obj_t</a>, item ) ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       itor\r
+               [in] Iterator whose object to return.\r
+\r
+ RETURN VALUES\r
+       Returns the value of the object pointer associated with the iterator.\r
+\r
+       The iterator must have been retrieved by a previous call to <a href="#robo403">cl_map_head</a>,\r
+       <a href="#robo416">cl_map_tail</a>, <a href="#robo409">cl_map_next</a>, or <a href="#robo411">cl_map_prev</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo403">cl_map_head</a>, <a href="#robo416">cl_map_tail</a>, <a href="#robo409">cl_map_next</a>, <a href="#robo411">cl_map_prev</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo411">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fprev">\r
+Component Library: Map/cl_map_prev</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_prev</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_prev</strong> function returns the map item with the next lower\r
+       key value than a precified map item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo406">cl_map_iterator_t</a> CL_API\r
+<strong>cl_map_prev</strong>(\r
+        IN      const <a href="#robo406">cl_map_iterator_t</a> itor )\r
+{\r
+        CL_ASSERT( itor );\r
+        return( <a href="./cl_qmap_h.html#robo608">cl_qmap_prev</a>( itor ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       itor\r
+               [in] Iterator for an object in a map whose predecessor to return.\r
+\r
+ RETURN VALUES\r
+       Iterator for the object with the next lower key value in a map.\r
+\r
+       Iterator for the map end if the specified object was the first item in\r
+       the map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The iterator must have been retrieved by a previous call to <a href="#robo403">cl_map_head</a>,\r
+       <a href="#robo416">cl_map_tail</a>, <a href="#robo409">cl_map_next</a>, or <strong>cl_map_prev</strong>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo403">cl_map_head</a>, <a href="#robo416">cl_map_tail</a>, <a href="#robo409">cl_map_next</a>, <a href="#robo401">cl_map_end</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo412">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fremove">\r
+Component Library: Map/cl_map_remove</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_remove</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_remove</strong> function removes the map item with the specified key\r
+       from a map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void* CL_API\r
+<strong>cl_map_remove</strong>(\r
+        IN      <a href="#robo415">cl_map_t</a>* const p_map,\r
+        IN      const uint64_t  key );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo415">cl_map_t</a> structure from which to remove the item\r
+               with the specified key.\r
+\r
+       key\r
+               [in] Key value used to search for the object to remove.\r
+\r
+ RETURN VALUES\r
+       Pointer to the object associated with the specified key if\r
+       it was found and removed.\r
+\r
+       NULL if no object with the specified key exists in the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo414">cl_map_remove_item</a>, <a href="#robo413">cl_map_remove_all</a>, <a href="#robo405">cl_map_insert</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo413">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fremove5fall">\r
+Component Library: Map/cl_map_remove_all</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_remove_all</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_remove_all</strong> function removes all objects from a map,\r
+       leaving it empty.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_map_remove_all</strong>(\r
+        IN      <a href="#robo415">cl_map_t</a>* const p_map );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a map to empty.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo412">cl_map_remove</a>, <a href="#robo414">cl_map_remove_item</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo414">[Functions]<a name="Component20Library3a20Map2fcl5fmap5fremove5fitem">\r
+Component Library: Map/cl_map_remove_item</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_remove_item</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_remove_item</strong> function removes the specified map item\r
+       from a map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_map_remove_item</strong>(\r
+        IN      <a href="#robo415">cl_map_t</a>* const                 p_map,\r
+        IN      const <a href="#robo406">cl_map_iterator_t</a> itor );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a map from which to remove the object associated with\r
+               the specified iterator.\r
+\r
+       itor\r
+               [in] Iterator for an object to remove from its map.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Removes the object associated with the specifid iterator from its map.\r
+\r
+       The specified iterator is no longer valid after the call completes.\r
+\r
+       The iterator must have been retrieved by a previous call to <a href="#robo403">cl_map_head</a>,\r
+       <a href="#robo416">cl_map_tail</a>, <a href="#robo409">cl_map_next</a>, or <a href="#robo411">cl_map_prev</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo412">cl_map_remove</a>, <a href="#robo413">cl_map_remove_all</a>, <a href="#robo405">cl_map_insert</a>, <a href="#robo403">cl_map_head</a>,\r
+       <a href="#robo416">cl_map_tail</a>, <a href="#robo409">cl_map_next</a>, <a href="#robo411">cl_map_prev</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo415">[Structures]<a name="Component20Library3a20Map2fcl5fmap5ft">\r
+Component Library: Map/cl_map_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Quick map structure.\r
+\r
+       The <strong>cl_map_t</strong> structure should be treated as opaque and should\r
+       be manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_map\r
+{\r
+        <a href="./cl_qmap_h.html#robo613">cl_qmap_t</a>       qmap;\r
+        <a href="./cl_qpool_h.html#robo626">cl_qpool_t</a>      pool;\r
+\r
+} <strong>cl_map_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       qmap\r
+               Quick map object that maintains the map.\r
+\r
+       pool\r
+               <a href="./cl_pool_h.html#robo24">Pool</a> of <a href="./cl_qmap_h.html#robo594">cl_map_obj_t</a> structures used to store user objects\r
+               in the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="./cl_qmap_h.html#robo594">cl_map_obj_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo416">[Functions]<a name="Component20Library3a20Map2fcl5fmap5ftail">\r
+Component Library: Map/cl_map_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_tail</strong> function returns the map item with the highest key\r
+       value stored in a map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo406">cl_map_iterator_t</a> CL_API\r
+<strong>cl_map_tail</strong>(\r
+        IN      const <a href="#robo415">cl_map_t</a>* const   p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        return( <a href="./cl_qmap_h.html#robo614">cl_qmap_tail</a>( &amp;p_map-&gt;qmap ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a map whose item with the highest key\r
+               is returned.\r
+\r
+ RETURN VALUES\r
+       Iterator for the object with the highest key in the map.\r
+\r
+       Iterator for the map end if the map was empty.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <a href="#robo401">cl_map_end</a> does no remove the object from the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo17">Map</a>, <a href="#robo403">cl_map_head</a>, <a href="#robo409">cl_map_next</a>, <a href="#robo411">cl_map_prev</a>, <a href="#robo401">cl_map_end</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_math_h.html b/trunk/docs/complib/cl_math_h.html
new file mode 100644 (file)
index 0000000..ca243c1
--- /dev/null
@@ -0,0 +1,103 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_math_h.html</title>\r
+<!-- Source: ./inc/complib/cl_math.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_math.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo417">[Definitions]<a name="Component20Library3a20Math2fMAX">\r
+Component Library: Math/MAX</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>MAX</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>MAX</strong> macro returns the greater of two values.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>MAX</strong>( x, y );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       x\r
+               [in] First of two values to compare.\r
+\r
+       y\r
+               [in] Second of two values to compare.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the greater of the x and y parameters.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo418">MIN</a>, <a href="#robo419">ROUNDUP</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo418">[Definitions]<a name="Component20Library3a20Math2fMIN">\r
+Component Library: Math/MIN</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>MIN</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>MIN</strong> macro returns the greater of two values.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>MIN</strong>( x, y );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       x\r
+               [in] First of two values to compare.\r
+\r
+       y\r
+               [in] Second of two values to compare.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the lesser of the x and y parameters.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo417">MAX</a>, <a href="#robo419">ROUNDUP</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo419">[Definitions]<a name="Component20Library3a20Math2fROUNDUP">\r
+Component Library: Math/ROUNDUP</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ROUNDUP</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>ROUNDUP</strong> macro rounds a value up to a given multiple.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>ROUNDUP</strong>( val, align );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       val\r
+               [in] Value that is to be rounded up. The type of the value is\r
+               indeterminate, but must be at most the size of a natural integer\r
+               for the platform.\r
+\r
+       align\r
+               [in] Multiple to which the val parameter must be rounded up.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns a value that is the input value specified by val rounded up to\r
+       the nearest multiple of align.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The value provided must be of a type at most the size of a natural integer.\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_memory_h.html b/trunk/docs/complib/cl_memory_h.html
new file mode 100644 (file)
index 0000000..018eb6c
--- /dev/null
@@ -0,0 +1,629 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_memory_h.html</title>\r
+<!-- Source: ./inc/complib/cl_memory.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_memory.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo42">[Modules]<a name="Public2fMemory20Management">\r
+Public/Memory Management</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Memory Management\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The memory management functionality provides memory manipulation\r
+       functions as well as powerful debugging tools.\r
+\r
+       The Allocation Tracking functionality provides a means for tracking memory\r
+       allocations in order to detect memory leaks.\r
+\r
+       Memory allocation tracking stores the file name and line number where\r
+       allocations occur. Gathering this information does have an adverse impact\r
+       on performance, and memory tracking should therefore not be enabled in\r
+       release builds of software.\r
+\r
+       Memory tracking is compiled into the debug version of the library,\r
+       and can be enabled for the release version as well. To Enable memory\r
+       tracking in a release build of the public layer, users should define\r
+       the MEM_TRACK_ON keyword for compilation.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo420">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fcheck5ffor5fread">\r
+Component Library: Memory Management/cl_check_for_read</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_check_for_read</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Checks a user-mode virtual address for read access.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_check_for_read</strong>(\r
+        IN      const void* const       vaddr,\r
+        IN      const size_t            count );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       vaddr\r
+               [in] Virtual address to check for read access.\r
+\r
+       count\r
+               [in] Number of bytes of the buffer at the specified address\r
+               to validate.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the virtual address is valid for a read of the specified\r
+       size.\r
+\r
+       CL_INVALID_PERMISSION if the virtual address or the size is not valid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call is only available in the kernel.  The buffer can only be accessed\r
+       in the context of the application thread (i.e. in the path of an IOCTL\r
+       request).  Callers cannot be holding a spinlock when calling this function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management, <a href="#robo421">cl_check_for_write</a>, <a href="#robo423">cl_copy_to_user</a>, <a href="#robo422">cl_copy_from_user</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo421">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fcheck5ffor5fwrite">\r
+Component Library: Memory Management/cl_check_for_write</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_check_for_write</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Checks a user-mode virtual address for write access.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_check_for_write</strong>(\r
+        IN      void* const             vaddr,\r
+        IN      const size_t    count );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       vaddr\r
+               [in] Virtual address to check for write access.\r
+\r
+       count\r
+               [in] Number of bytes of the buffer at the specified\r
+               address to validate.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the virtual address is valid for a write of the specified\r
+       size.\r
+\r
+       CL_INVALID_PERMISSION if the virtual address or the size is not valid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call is only available in the kernel.  The buffer can only be accessed\r
+       in the context of the application thread (i.e. in the path of an IOCTL\r
+       request).  Callers cannot be holding a spinlock when calling this function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management, <a href="#robo420">cl_check_for_read</a>, <a href="#robo423">cl_copy_to_user</a>, <a href="#robo422">cl_copy_from_user</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo422">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fcopy5ffrom5fuser">\r
+Component Library: Memory Management/cl_copy_from_user</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_copy_from_user</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Copies data from a user-mode buffer, performing access checks.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_copy_from_user</strong>(\r
+        IN      void* const                     p_dest,\r
+        IN      const void* const       p_src,\r
+        IN      const size_t            count );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dest\r
+               [in] Pointer to the buffer being copied to.\r
+\r
+       p_src\r
+               [in] User-mode virtual address from which to copy data.\r
+\r
+       count\r
+               [in] Number of bytes to copy from the source buffer to the\r
+               destination buffer.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the user-mode buffer virtual address is valid as the\r
+       source of the copy.\r
+\r
+       CL_INVALID_PERMISSION if the virtual address or the count is not valid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call is only available in the kernel.  The buffer can only be accessed\r
+       in the context of the application thread (i.e. in the path of an IOCTL\r
+       request).  Callers cannot be holding a spinlock when calling this function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management, <a href="#robo420">cl_check_for_read</a>, <a href="#robo421">cl_check_for_write</a>, <a href="#robo423">cl_copy_to_user</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo423">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fcopy5fto5fuser">\r
+Component Library: Memory Management/cl_copy_to_user</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_copy_to_user</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Copies data into a user-mode buffer, performing access checks.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_copy_to_user</strong>(\r
+        IN      void* const                     p_dest,\r
+        IN      const void* const       p_src,\r
+        IN      const size_t            count );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dest\r
+               [in] User-mode virtual address to which to copy data.\r
+\r
+       p_src\r
+               [in] Pointer to the buffer being copied from.\r
+\r
+       count\r
+               [in] Number of bytes to copy from the source buffer to the\r
+               destination buffer.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the user-mode buffer virtual address is valid as the\r
+       destination of the copy.\r
+\r
+       CL_INVALID_PERMISSION if the virtual address or the count is not valid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call is only available in the kernel.  The buffer can only be accessed\r
+       in the context of the application thread (i.e. in the path of an IOCTL\r
+       request).  Callers cannot be holding a spinlock when calling this function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management, <a href="#robo420">cl_check_for_read</a>, <a href="#robo421">cl_check_for_write</a>, <a href="#robo422">cl_copy_from_user</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo424">[Functions]<a name="Component20Library3a20Memory20Management2fcl5ffree">\r
+Component Library: Memory Management/cl_free</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_free</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_free</strong> function deallocates a block of memory.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void\r
+<strong>cl_free</strong>(\r
+        IN      void* const     p_memory );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_memory\r
+               [in] Pointer to a memory block.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The p_memory parameter is the pointer returned by a previous call to\r
+       <a href="#robo427">cl_malloc</a>, or <a href="#robo435">cl_zalloc</a>.\r
+\r
+       <strong>cl_free</strong> has no effect if p_memory is NULL.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management, cl_alloc, <a href="#robo435">cl_zalloc</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo425">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fget5fpagesize">\r
+Component Library: Memory Management/cl_get_pagesize</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_get_pagesize</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the number of bytes in a OS defined page.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT uint32_t CL_API\r
+<strong>cl_get_pagesize</strong>( void );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       NONE\r
+\r
+ RETURN VALUES\r
+       Returns the number of bytes in a page as defined by the Operating\r
+       System.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo426">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fget5fphysaddr">\r
+Component Library: Memory Management/cl_get_physaddr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_get_physaddr</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the Physical address for a kernel virtual address.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT uint64_t CL_API\r
+<strong>cl_get_physaddr</strong>(\r
+        IN      void *vaddr );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_addr\r
+               [in] Pointer to virtual to which the physical address is required.\r
+\r
+ RETURN VALUES\r
+       Returns the physical address for a virtual address.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call is only available in kernel mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo427">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fmalloc">\r
+Component Library: Memory Management/cl_malloc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_malloc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_malloc</strong> function allocates a block of memory.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void*\r
+<strong>cl_malloc</strong>(\r
+        IN      const size_t    size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       size\r
+               [in] Size of the requested allocation.\r
+\r
+ RETURN VALUES\r
+       Pointer to allocated memory if successful.\r
+\r
+       NULL otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allocated memory follows alignment rules specific to the different\r
+       environments.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management, <a href="#robo424">cl_free</a>, <a href="#robo435">cl_zalloc</a>, <a href="#robo433">cl_palloc</a>, <a href="#robo434">cl_pzalloc</a>,\r
+       <a href="#robo432">cl_memset</a>, <a href="#robo429">cl_memclr</a>, <a href="#robo431">cl_memcpy</a>, <a href="#robo430">cl_memcmp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo428">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fmem5fdisplay">\r
+Component Library: Memory Management/cl_mem_display</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_mem_display</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_mem_display</strong> function displays all tracked memory allocations to\r
+       the applicable debugger.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_mem_display</strong>( void );\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Each tracked memory allocation is displayed along with the file name and\r
+       line number that allocated it.\r
+\r
+       Output is sent to the platform's debugging target, which may be the\r
+       system log file.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo429">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fmemclr">\r
+Component Library: Memory Management/cl_memclr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_memclr</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_memclr</strong> function sets every byte in a memory range to zero.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_memclr</strong>(\r
+        IN      void* const             p_memory,\r
+        IN      const size_t    count )\r
+{\r
+        <a href="#robo432">cl_memset</a>( p_memory, 0, count );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_memory\r
+               [in] Pointer to a memory block.\r
+\r
+       count\r
+               [in] Number of bytes to set.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management, <a href="#robo432">cl_memset</a>, <a href="#robo431">cl_memcpy</a>, <a href="#robo430">cl_memcmp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo430">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fmemcmp">\r
+Component Library: Memory Management/cl_memcmp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_memcmp</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_memcmp</strong> function compares two memory buffers.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT int32_t CL_API\r
+<strong>cl_memcmp</strong>(\r
+        IN      const void* const       p_mem,\r
+        IN      const void* const       p_ref,\r
+        IN      const size_t            count );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_mem\r
+               [in] Pointer to a memory block being compared.\r
+\r
+       p_ref\r
+               [in] Pointer to the reference memory block to compare against.\r
+\r
+       count\r
+               [in] Number of bytes to compare.\r
+\r
+ RETURN VALUES\r
+       Returns less than zero if p_mem is less than p_ref.\r
+\r
+       Returns greater than zero if p_mem is greater than p_ref.\r
+\r
+       Returns zero if the two memory regions are the identical.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management, <a href="#robo432">cl_memset</a>, <a href="#robo429">cl_memclr</a>, <a href="#robo431">cl_memcpy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo431">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fmemcpy">\r
+Component Library: Memory Management/cl_memcpy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_memcpy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_memcpy</strong> function copies a given number of bytes from\r
+       one buffer to another.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void* CL_API\r
+<strong>cl_memcpy</strong>(\r
+        IN      void* const                     p_dest,\r
+        IN      const void* const       p_src,\r
+        IN      const size_t            count );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dest\r
+               [in] Pointer to the buffer being copied to.\r
+\r
+       p_src\r
+               [in] Pointer to the buffer being copied from.\r
+\r
+       count\r
+               [in] Number of bytes to copy from the source buffer to the\r
+               destination buffer.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns a pointer to the destination buffer.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management, <a href="#robo432">cl_memset</a>, <a href="#robo429">cl_memclr</a>, <a href="#robo430">cl_memcmp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo432">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fmemset">\r
+Component Library: Memory Management/cl_memset</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_memset</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_memset</strong> function sets every byte in a memory range to a given value.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_memset</strong>(\r
+        IN      void* const             p_memory,\r
+        IN      const uint8_t   fill,\r
+        IN      const size_t    count );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_memory\r
+               [in] Pointer to a memory block.\r
+\r
+       fill\r
+               [in] Byte value with which to fill the memory.\r
+\r
+       count\r
+               [in] Number of bytes to set.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management, <a href="#robo429">cl_memclr</a>, <a href="#robo431">cl_memcpy</a>, <a href="#robo430">cl_memcmp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo433">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fpalloc">\r
+Component Library: Memory Management/cl_palloc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_palloc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_palloc</strong> function allocates a block of memory from paged pool if the\r
+       operating system supports it.  If the operating system does not distinguish\r
+       between pool types, <strong>cl_palloc</strong> is identical to <a href="#robo427">cl_malloc</a>.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void*\r
+<strong>cl_palloc</strong>(\r
+        IN      const size_t    size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       size\r
+               [in] Size of the requested allocation.\r
+\r
+ RETURN VALUES\r
+       Pointer to allocated memory if successful.\r
+\r
+       NULL otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allocated memory follows alignment rules specific to the different\r
+       environments.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management, <a href="#robo424">cl_free</a>, <a href="#robo427">cl_malloc</a>, <a href="#robo435">cl_zalloc</a>, <a href="#robo434">cl_pzalloc</a>,\r
+       <a href="#robo432">cl_memset</a>, <a href="#robo429">cl_memclr</a>, <a href="#robo431">cl_memcpy</a>, <a href="#robo430">cl_memcmp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo434">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fpzalloc">\r
+Component Library: Memory Management/cl_pzalloc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pzalloc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pzalloc</strong> function allocates a block of memory from paged pool if the\r
+       operating system supports it and initializes it to zero.  If the operating\r
+       system does not distinguish between pool types, <strong>cl_pzalloc</strong> is identical\r
+       to <a href="#robo435">cl_zalloc</a>.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void*\r
+<strong>cl_pzalloc</strong>(\r
+        IN      const size_t    size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       size\r
+               [in] Size of the requested allocation.\r
+\r
+ RETURN VALUES\r
+       Pointer to allocated memory if successful.\r
+\r
+       NULL otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allocated memory follows alignment rules specific to the different\r
+       environments.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management, <a href="#robo424">cl_free</a>, <a href="#robo427">cl_malloc</a>, <a href="#robo435">cl_zalloc</a>, <a href="#robo433">cl_palloc</a>,\r
+       <a href="#robo432">cl_memset</a>, <a href="#robo429">cl_memclr</a>, <a href="#robo431">cl_memcpy</a>, <a href="#robo430">cl_memcmp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo435">[Functions]<a name="Component20Library3a20Memory20Management2fcl5fzalloc">\r
+Component Library: Memory Management/cl_zalloc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_zalloc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_zalloc</strong> function allocates a block of memory initialized to zero.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void*\r
+<strong>cl_zalloc</strong>(\r
+        IN      const size_t    size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       size\r
+               [in] Size of the requested allocation.\r
+\r
+ RETURN VALUES\r
+       Pointer to allocated memory if successful.\r
+\r
+       NULL otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allocated memory follows alignment rules specific to the different\r
+       environments.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Memory Management, <a href="#robo424">cl_free</a>, <a href="#robo427">cl_malloc</a>, <a href="#robo433">cl_palloc</a>, <a href="#robo434">cl_pzalloc</a>,\r
+       <a href="#robo432">cl_memset</a>, <a href="#robo429">cl_memclr</a>, <a href="#robo431">cl_memcpy</a>, <a href="#robo430">cl_memcmp</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_mutex_h.html b/trunk/docs/complib/cl_mutex_h.html
new file mode 100644 (file)
index 0000000..0f73832
--- /dev/null
@@ -0,0 +1,207 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_mutex_h.html</title>\r
+<!-- Source: ./inc/complib/cl_mutex.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_mutex.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo5">[Modules]<a name="complib2fMutex">\r
+complib/Mutex</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>Mutex</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>Mutex</strong> provides synchronization between threads for exclusive access to\r
+       a resource.\r
+\r
+       The <strong>Mutex</strong> functions manipulate a cl_mutex_t structure which should\r
+       be treated as opaque and should be manipulated only through the provided\r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               cl_mutex_t\r
+\r
+       Initialization:\r
+               <a href="#robo437">cl_mutex_construct</a>, <a href="#robo439">cl_mutex_init</a>, <a href="#robo438">cl_mutex_destroy</a>\r
+\r
+       Manipulation\r
+               <a href="#robo436">cl_mutex_acquire</a>, <a href="#robo440">cl_mutex_release</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo436">[Functions]<a name="Component20Library3a20Mutex2fcl5fmutex5facquire">\r
+Component Library: Mutex/cl_mutex_acquire</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_mutex_acquire</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_mutex_acquire</strong> function acquires a mutex.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_mutex_acquire</strong>(\r
+        IN      cl_mutex_t* const       p_mutex );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_mutex\r
+               [in] Pointer to a mutex structure to acquire.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo5">Mutex</a>, <a href="#robo440">cl_mutex_release</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo437">[Functions]<a name="Component20Library3a20Mutex2fcl5fmutex5fconstruct">\r
+Component Library: Mutex/cl_mutex_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_mutex_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_mutex_construct</strong> function initializes the state of a\r
+       mutex.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_mutex_construct</strong>(\r
+        IN      cl_mutex_t* const       p_mutex );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_mutex\r
+               [in] Pointer to a mutex structure whose state to initialize.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling cl_semphore_destroy without first calling\r
+       <a href="#robo439">cl_mutex_init</a>.\r
+\r
+       Calling <strong>cl_mutex_construct</strong> is a prerequisite to calling any other\r
+       mutex function except <a href="#robo439">cl_mutex_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo5">Mutex</a>, cl_semphore_init <a href="#robo438">cl_mutex_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo438">[Functions]<a name="Component20Library3a20Mutex2fcl5fmutex5fdestroy">\r
+Component Library: Mutex/cl_mutex_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_mutex_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_mutex_destroy</strong> function performs all necessary cleanup of a\r
+       mutex.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_mutex_destroy</strong>(\r
+        IN      cl_mutex_t* const       p_mutex );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_mutex\r
+               [in] Pointer to a mutex structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Performs any necessary cleanup of a mutex. This function must only\r
+       be called if either <a href="#robo437">cl_mutex_construct</a> or <a href="#robo439">cl_mutex_init</a> has been\r
+       called.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo5">Mutex</a>, <a href="#robo437">cl_mutex_construct</a>, <a href="#robo439">cl_mutex_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo439">[Functions]<a name="Component20Library3a20Mutex2fcl5fmutex5finit">\r
+Component Library: Mutex/cl_mutex_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_mutex_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_mutex_init</strong> function initializes a mutex for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_mutex_init</strong>(\r
+        IN      cl_mutex_t* const       p_mutex );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_mutex\r
+               [in] Pointer to a mutex structure to initialize.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if initialization succeeded.\r
+\r
+       CL_ERROR if initialization failed. Callers should call\r
+       <a href="#robo438">cl_mutex_destroy</a> to clean up any resources allocated during\r
+       initialization.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Initializes the mutex structure. Allows calling cl_mutex_aquire\r
+       and <a href="#robo440">cl_mutex_release</a>. The cl_mutex is always created in the unlocked state.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo5">Mutex</a>, <a href="#robo437">cl_mutex_construct</a>, <a href="#robo438">cl_mutex_destroy</a>,\r
+       <a href="#robo436">cl_mutex_acquire</a>, <a href="#robo440">cl_mutex_release</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo440">[Functions]<a name="Component20Library3a20Mutex2fcl5fmutex5frelease">\r
+Component Library: Mutex/cl_mutex_release</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_mutex_release</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_mutex_release</strong> function releases a mutex object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_mutex_release</strong>(\r
+        IN      cl_mutex_t* const       p_mutex );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_mutex\r
+               [in] Pointer to a mutex structure to release.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Releases a mutex after a call to <a href="#robo436">cl_mutex_acquire</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo5">Mutex</a>, <a href="#robo436">cl_mutex_acquire</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_obj_h.html b/trunk/docs/complib/cl_obj_h.html
new file mode 100644 (file)
index 0000000..ab4bf53
--- /dev/null
@@ -0,0 +1,997 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_obj_h.html</title>\r
+<!-- Source: ./inc/complib/cl_obj.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_obj.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo18">[Modules]<a name="Component20Library2fObject">\r
+Component Library/Object</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>Object</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>Object</strong> describes a basic class that can be used to track accesses to an\r
+       object and provides automatic cleanup of an object that is dependent\r
+       on another object.\r
+\r
+       Dependencies between objects are described using a relationship.  A\r
+       child object is considered dependent on a parent object.  Destruction of\r
+       a parent object automatically results in the destruction of any child\r
+       objects associated with the parent.\r
+\r
+       The relationship between parent and child objects is many to many.\r
+       Parents can have multiple child objects, and a child can be dependent on\r
+       multiple parent objects.  In the latter case, destruction of any parent\r
+       object results in the destruction of the child object.\r
+\r
+       Other relationships between objects are described using references.  An\r
+       object that takes a reference on a second object prevents the second object\r
+       from being deallocated as long as the reference is held.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Types\r
+               <a href="#robo442">cl_destroy_type_t</a>\r
+\r
+       Structures:\r
+               <a href="#robo458">cl_obj_t</a>, <a href="#robo455">cl_obj_rel_t</a>\r
+\r
+       Callbacks:\r
+               <a href="#robo461">cl_pfn_obj_call_t</a>\r
+\r
+       Initialization/Destruction:\r
+               <a href="#robo451">cl_obj_mgr_create</a>, <a href="#robo452">cl_obj_mgr_destroy</a>,\r
+               <a href="#robo443">cl_obj_construct</a>, <a href="#robo447">cl_obj_init</a>, <a href="#robo446">cl_obj_destroy</a>, <a href="#robo444">cl_obj_deinit</a>\r
+\r
+       <strong>Object</strong> Relationships:\r
+               <a href="#robo454">cl_obj_ref</a>, <a href="#robo445">cl_obj_deref</a>,\r
+               <a href="#robo462">cl_rel_alloc</a>, <a href="#robo463">cl_rel_free</a>, <a href="#robo448">cl_obj_insert_rel</a>, <a href="#robo456">cl_obj_remove_rel</a>\r
+\r
+       <strong>Object</strong> Manipulation:\r
+               <a href="#robo457">cl_obj_reset</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo442">[Definitions]<a name="Component20Library3a20Object2fcl5fdestroy5ftype5ft">\r
+Component Library: Object/cl_destroy_type_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_destroy_type_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicates the type of destruction to perform on an object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _cl_destroy_type\r
+{\r
+        CL_DESTROY_ASYNC,\r
+        CL_DESTROY_SYNC\r
+\r
+}       <strong>cl_destroy_type_t</strong>;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       CL_DESTROY_ASYNC\r
+               Indicates that the object should be destroyed asynchronously.  Objects\r
+               destroyed asynchronously complete initial destruction processing, then\r
+               return the calling thread.  Once their reference count goes to zero,\r
+               they are queue onto an asynchronous thread to complete destruction\r
+               processing.\r
+\r
+       CL_DESTROY_SYNC\r
+               Indicates that the object should be destroyed synchronously.  Objects\r
+               destroyed synchronously wait (block) until their reference count goes\r
+               to zero.  Once their reference count goes to zero, destruction\r
+               processing is completed by the calling thread.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo447">cl_obj_init</a>, <a href="#robo446">cl_obj_destroy</a>, <a href="#robo444">cl_obj_deinit</a>, <a href="#robo458">cl_obj_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo443">[Functions]<a name="Component20Library3a20Object2fcl5fobj5fconstruct">\r
+Component Library: Object/cl_obj_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine prepares an object for use.  The object must be successfully\r
+       initialized before being used.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_obj_construct</strong>(\r
+        IN                              <a href="#robo458">cl_obj_t</a> * const                        p_obj,\r
+        IN              const   uint32_t                                        obj_type );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_obj\r
+               [in] A pointer to the object to construct.\r
+\r
+       obj_type\r
+               [in] A user-specified type associated with the object.  This type\r
+               is recorded by the object for debugging purposes and may be accessed\r
+               by the user.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call must succeed before invoking any other function on an object.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo447">cl_obj_init</a>, <a href="#robo446">cl_obj_destroy</a>, <a href="#robo444">cl_obj_deinit</a>.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo444">[Functions]<a name="Component20Library3a20Object2fcl5fobj5fdeinit">\r
+Component Library: Object/cl_obj_deinit</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_deinit</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Release all resources allocated by an object.  This routine should\r
+       typically be called from a user's pfn_free routine.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_obj_deinit</strong>(\r
+        IN                              <a href="#robo458">cl_obj_t</a> * const                        p_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_obj\r
+               [in] A pointer to the object to free.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call must be invoked to release the object from the global object\r
+       manager.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo443">cl_obj_construct</a>, <a href="#robo447">cl_obj_init</a>, <a href="#robo446">cl_obj_destroy</a>, <a href="#robo458">cl_obj_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo445">[Functions]<a name="Component20Library3a20Object2fcl5fobj5fderef">\r
+Component Library: Object/cl_obj_deref</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_deref</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Decrements the reference count on an object and returns the updated count.\r
+       This routine is thread safe, but results in locking the object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT int32_t CL_API\r
+<strong>cl_obj_deref</strong>(\r
+        IN                              <a href="#robo458">cl_obj_t</a> * const                        p_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_obj\r
+               [in] A pointer to the object to dereference.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       The updated reference count.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo458">cl_obj_t</a>, <a href="#robo454">cl_obj_ref</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo446">[Functions]<a name="Component20Library3a20Object2fcl5fobj5fdestroy">\r
+Component Library: Object/cl_obj_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine destroys the specified object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_obj_destroy</strong>(\r
+        IN                              <a href="#robo458">cl_obj_t</a> *                                      p_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_obj\r
+               [in] A pointer to the object to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine starts the destruction process for the specified object.  For\r
+       additional information regarding destruction callbacks, see the following\r
+       fields in <a href="#robo458">cl_obj_t</a> and parameters in <a href="#robo447">cl_obj_init</a>: pfn_destroying,\r
+       pfn_cleanup, and pfn_free.\r
+\r
+       In most cases, after calling this routine, users should call <a href="#robo444">cl_obj_deinit</a>\r
+       from within their pfn_free callback routine.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo443">cl_obj_construct</a>, <a href="#robo447">cl_obj_init</a>, <a href="#robo444">cl_obj_deinit</a>,\r
+       <a href="#robo458">cl_obj_t</a>, <a href="#robo442">cl_destroy_type_t</a>, <a href="#robo461">cl_pfn_obj_call_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo447">[Functions]<a name="Component20Library3a20Object2fcl5fobj5finit">\r
+Component Library: Object/cl_obj_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine initializes an object for use.  Upon the successful completion\r
+       of this call, the object is ready for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_obj_init</strong>(\r
+        IN                              <a href="#robo458">cl_obj_t</a> * const                        p_obj,\r
+        IN                              <a href="#robo442">cl_destroy_type_t</a>                       destroy_type,\r
+        IN              const   <a href="#robo461">cl_pfn_obj_call_t</a>                       pfn_destroying OPTIONAL,\r
+        IN              const   <a href="#robo461">cl_pfn_obj_call_t</a>                       pfn_cleanup OPTIONAL,\r
+        IN              const   <a href="#robo461">cl_pfn_obj_call_t</a>                       pfn_free );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_obj\r
+               [in] A pointer to the object to initialize.\r
+\r
+       destroy_type\r
+               [in] Specifies the destruction model used by this object.\r
+\r
+       pfn_destroying\r
+               [in] User-specified callback invoked to notify a user that an object has\r
+               been marked for destruction.  This callback is invoked directly from\r
+               the thread destroying the object and is used to notify a user that\r
+               a parent object has invoked a child object's destructor.\r
+\r
+       pfn_cleanup\r
+               [in] User-specified callback invoked to an object is undergoing\r
+               destruction.  For object's destroyed asynchronously, this callback\r
+               is invoked from the context of the asynchronous destruction thread.\r
+               Users may block in the context of this thread; however, further\r
+               destruction processing will not continue until this callback returns.\r
+\r
+       pfn_free\r
+               [in] User-specified callback invoked to notify a user that an object has\r
+               been destroyed and is ready for deallocation.  Users should either\r
+               call <a href="#robo444">cl_obj_deinit</a> or <a href="#robo457">cl_obj_reset</a> from within this callback.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       CL_SUCCESS\r
+               The object was successfully initialized.\r
+\r
+       CL_INSUFFICIENT_MEMORY\r
+               The object could not allocate the necessary memory resources to\r
+               complete initialization.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The three destruction callbacks are used to notify the user of the progress\r
+       of the destruction, permitting the user to perform an additional processing.\r
+       Pfn_destroying is used to notify the user that the object is being\r
+       destroyed.  It is called after an object has removed itself from\r
+       relationships with its parents, but before it destroys any child objects\r
+       that it might have.\r
+\r
+       Pfn_cleanup is invoked after all child objects have been destroyed, and\r
+       there are no more references on the object itself.  For objects destroyed\r
+       asynchronously, pfn_cleanup is invoked from an asynchronous destruction\r
+       thread.\r
+\r
+       Pfn_free is called to notify the user that the destruction of the object has\r
+       completed.  All relationships have been removed, and all child objects have\r
+       been destroyed.  Relationship items (<a href="#robo455">cl_obj_rel_t</a>) that were used to\r
+       identify parent objects are returned to the user through the p_parent_list\r
+       field of the <a href="#robo458">cl_obj_t</a> structure.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo443">cl_obj_construct</a>, <a href="#robo446">cl_obj_destroy</a>, <a href="#robo444">cl_obj_deinit</a>,\r
+       <a href="#robo458">cl_obj_t</a>, <a href="#robo442">cl_destroy_type_t</a>, <a href="#robo461">cl_pfn_obj_call_t</a>,\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo448">[Functions]<a name="Component20Library3a20Object2fcl5fobj5finsert5frel">\r
+Component Library: Object/cl_obj_insert_rel</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_insert_rel</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Forms a relationship between two objects, with the existence of the child\r
+       object dependent on the parent.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_obj_insert_rel</strong>(\r
+        IN                              <a href="#robo455">cl_obj_rel_t</a> * const            p_rel,\r
+        IN                              <a href="#robo458">cl_obj_t</a> * const                        p_parent_obj,\r
+        IN                              <a href="#robo458">cl_obj_t</a> * const                        p_child_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rel\r
+               [in] A reference to an unused relationship item.\r
+\r
+       p_parent_obj\r
+               [in] A reference to the parent object.\r
+\r
+       p_child_obj\r
+               [in] A reference to the child object.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call inserts a relationship between the parent and child object.\r
+       The relationship allows for the automatic destruction of the child object\r
+       if the parent is destroyed.\r
+\r
+       A given object can have multiple parent and child objects, but the\r
+       relationships must form into an object tree.  That is, there cannot be any\r
+       cycles formed through the parent-child relationships.  (For example, an\r
+       object cannot be both the parent and a child of a second object.)\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo462">cl_rel_alloc</a>, <a href="#robo463">cl_rel_free</a>, <a href="#robo456">cl_obj_remove_rel</a>, <a href="#robo446">cl_obj_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo449">[Functions]<a name="Component20Library3a20Object2fcl5fobj5finsert5frel5fparent5flocked">\r
+Component Library: Object/cl_obj_insert_rel_parent_locked</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_insert_rel_parent_locked</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Forms a relationship between two objects, with the existence of the child\r
+       object dependent on the parent.  The parent's object lock is held.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_obj_insert_rel_parent_locked</strong>(\r
+        IN                              <a href="#robo455">cl_obj_rel_t</a> * const            p_rel,\r
+        IN                              <a href="#robo458">cl_obj_t</a> * const                        p_parent_obj,\r
+        IN                              <a href="#robo458">cl_obj_t</a> * const                        p_child_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rel\r
+               [in] A reference to an unused relationship item.\r
+\r
+       p_parent_obj\r
+               [in] A reference to the parent object.\r
+\r
+       p_child_obj\r
+               [in] A reference to the child object.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call inserts a relationship between the parent and child object.\r
+       The relationship allows for the automatic destruction of the child object\r
+       if the parent is destroyed.\r
+\r
+       A given object can have multiple parent and child objects, but the\r
+       relationships must form into an object tree.  That is, there cannot be any\r
+       cycles formed through the parent-child relationships.  (For example, an\r
+       object cannot be both the parent and a child of a second object.)\r
+\r
+       This call requires the caller to already hold the parent object's lock.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo462">cl_rel_alloc</a>, <a href="#robo463">cl_rel_free</a>, <a href="#robo456">cl_obj_remove_rel</a>, <a href="#robo446">cl_obj_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo450">[Functions]<a name="Component20Library3a20Object2fcl5fobj5flock">\r
+Component Library: Object/cl_obj_lock</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_lock</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Acquires an object's lock.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_obj_lock</strong>(\r
+        IN                              <a href="#robo458">cl_obj_t</a> * const                        p_obj )\r
+{\r
+        CL_ASSERT( p_obj-&gt;state == CL_INITIALIZED ||\r
+                p_obj-&gt;state == CL_DESTROYING );\r
+        <a href="./cl_spinlock_h.html#robo648">cl_spinlock_acquire</a>( &amp;p_obj-&gt;lock );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_obj\r
+               [in] A pointer to the object whose lock to acquire.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo458">cl_obj_t</a>, <a href="#robo460">cl_obj_unlock</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo451">[Functions]<a name="Component20Library3a20Object2fcl5fobj5fmgr5fcreate">\r
+Component Library: Object/cl_obj_mgr_create</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_mgr_create</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine creates an object manager used to track all objects by\r
+       the user.  The object manager assists with debugging efforts by identifying\r
+       objects that are not destroyed properly.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_obj_mgr_create</strong>(void);\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       None.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       CL_SUCCESS\r
+               The object manager was succesfully created.\r
+\r
+       CL_INSUFFICIENT_MEMORY\r
+               The object manager could not be allocated.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call must succeed before invoking any other object-related function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo452">cl_obj_mgr_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo452">[Functions]<a name="Component20Library3a20Object2fcl5fobj5fmgr5fdestroy">\r
+Component Library: Object/cl_obj_mgr_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_mgr_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine destroys the object manager created through <a href="#robo451">cl_obj_mgr_create</a>.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_obj_mgr_destroy</strong>(void);\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       None.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       When the object manager is destroyed, it will display information about all\r
+       objects that have not yet been destroyed.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo451">cl_obj_mgr_create</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo453">[Structures]<a name="Component20Library3a20Object2fcl5fobj5fmgr5ft">\r
+Component Library: Object/cl_obj_mgr_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_mgr_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The global object manager.\r
+\r
+       The manager must be created before constructing any other objects, and all\r
+       objects must be destroyed before the object manager is destroyed.\r
+\r
+       The manager is used to maintain the list of all objects currently active\r
+       in the system.  It provides a pool of relationship items used to\r
+       describe parent-child, or dependent, relationships between two objects.\r
+       The manager contains an asynchronous processing thread that is used to\r
+       support asynchronous object destruction.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_obj_mgr\r
+{\r
+        <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a>                                      obj_list;\r
+        cl_spinlock_t                           lock;\r
+\r
+        <a href="./cl_async_proc_h.html#robo271">cl_async_proc_t</a>                         async_proc_mgr;\r
+\r
+        <a href="./cl_qpool_h.html#robo626">cl_qpool_t</a>                                      rel_pool;\r
+\r
+}       <strong>cl_obj_mgr_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       obj_list\r
+               <a href="./cl_list_h.html#robo15">List</a> of all object's in the system.  <a href="#robo18">Object</a>'s are inserted into this\r
+               list when constructed and removed when freed.\r
+\r
+       lock\r
+               A lock used by the object manager for synchronization to the obj_list.\r
+\r
+       async_proc_mgr\r
+               An asynchronous processing manager used to process asynchronous\r
+               destruction requests.  Users wishing to synchronize the execution of\r
+               specific routines with object destruction may queue work requests to\r
+               this processing manager.\r
+\r
+       rel_pool\r
+               <a href="./cl_pool_h.html#robo24">Pool</a> of items used to describe dependent relationships.  Users may\r
+               obtain relationship objects from this pool when forming relationships,\r
+               but are not required to do so.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo451">cl_obj_mgr_create</a>, <a href="#robo452">cl_obj_mgr_destroy</a>,\r
+       <a href="#robo443">cl_obj_construct</a>, <a href="#robo444">cl_obj_deinit</a>,\r
+       <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a>, cl_spinlock_t, <a href="./cl_async_proc_h.html#robo271">cl_async_proc_t</a>, <a href="./cl_qpool_h.html#robo626">cl_qpool_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo454">[Functions]<a name="Component20Library3a20Object2fcl5fobj5fref">\r
+Component Library: Object/cl_obj_ref</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_ref</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Increments the reference count on an object and returns the updated count.\r
+       This routine is thread safe, but does not result in locking the object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT int32_t CL_API\r
+<strong>cl_obj_ref</strong>(\r
+        IN                              <a href="#robo458">cl_obj_t</a> * const                        p_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_obj\r
+               [in] A pointer to the object to reference.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       The updated reference count.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo458">cl_obj_t</a>, <a href="#robo445">cl_obj_deref</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo455">[Structures]<a name="Component20Library3a20Object2fcl5fobj5frel5ft">\r
+Component Library: Object/cl_obj_rel_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_rel_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Identifies a dependent relationship between two objects.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_obj_rel\r
+{\r
+        <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>                          pool_item;              /* Must be first. */\r
+        struct _cl_obj                          *p_parent_obj;\r
+\r
+        <a href="./cl_qlist_h.html#robo554">cl_list_item_t</a>                          list_item;\r
+        struct _cl_obj                          *p_child_obj;\r
+\r
+}       <strong>cl_obj_rel_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pool_item\r
+               An item used to store the relationship in a free pool maintained\r
+               by the object manager.  This field is also used by the parent object\r
+               to store the relationship in its child_list.\r
+\r
+       p_parent_obj\r
+               A reference to the parent object for the relationship.\r
+\r
+       list_item\r
+               This field is used by the child object to store the relationship in\r
+               its parent_list.\r
+\r
+       p_child_obj\r
+               A reference to the child object for the relationship.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is used to define all dependent relationships.  Dependent\r
+       relationships are those where the destruction of a parent object result in\r
+       the destruction of child objects.  For other types of relationships, simple\r
+       references between objects may be used.\r
+\r
+       Relationship items are stored in lists maintained by both the parent\r
+       and child objects.  References to both objects exist while the\r
+       relationship is maintained.  Typically, relationships are defined by\r
+       the user by calling <a href="#robo448">cl_obj_insert_rel</a>, but are destroyed automatically\r
+       via an object's destruction process.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo462">cl_rel_alloc</a>, <a href="#robo463">cl_rel_free</a>, <a href="#robo448">cl_obj_insert_rel</a>, <a href="#robo456">cl_obj_remove_rel</a>,\r
+       <a href="#robo446">cl_obj_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo456">[Functions]<a name="Component20Library3a20Object2fcl5fobj5fremove5frel">\r
+Component Library: Object/cl_obj_remove_rel</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_remove_rel</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Manually removes a relationship between two objects.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_obj_remove_rel</strong>(\r
+        IN                              <a href="#robo455">cl_obj_rel_t</a> * const            p_rel );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rel\r
+               [in] A reference to the relationship to remove.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine permits a user to manually remove a dependent relationship\r
+       between two objects.  When removing a relationship using this call, the\r
+       user must ensure that objects referenced by the relationship are not\r
+       destroyed, either directly or indirectly via a parent.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo462">cl_rel_alloc</a>, <a href="#robo463">cl_rel_free</a>, <a href="#robo448">cl_obj_insert_rel</a>, <a href="#robo446">cl_obj_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo457">[Functions]<a name="Component20Library3a20Object2fcl5fobj5freset">\r
+Component Library: Object/cl_obj_reset</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_reset</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Reset an object's state.  This is called after <a href="#robo446">cl_obj_destroy</a> has\r
+       been called on a object, but before <a href="#robo444">cl_obj_deinit</a> has been invoked.\r
+       After an object has been reset, it is ready for re-use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_obj_reset</strong>(\r
+        IN                              <a href="#robo458">cl_obj_t</a> * const                        p_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_obj\r
+               [in] A pointer to the object to reset.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine allows an object to be initialized once, then destroyed\r
+       and re-used multiple times.  This permits the user to allocate and\r
+       maintain a pool of objects.  The objects may be reset and returned to\r
+       the pool, rather than freed, after being destroyed.  The objects would\r
+       not be freed until the pool itself was destroyed.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo446">cl_obj_destroy</a>, cl_obj_free, <a href="#robo458">cl_obj_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo458">[Structures]<a name="Component20Library3a20Object2fcl5fobj5ft">\r
+Component Library: Object/cl_obj_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <a href="#robo18">Object</a> structure.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_obj\r
+{\r
+        <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>                          pool_item;      /* Must be first. */\r
+        uint32_t                                        type;\r
+        cl_state_t                                      state;\r
+        <a href="#robo442">cl_destroy_type_t</a>                       destroy_type;\r
+\r
+        <a href="./cl_async_proc_h.html#robo269">cl_async_proc_item_t</a>            async_item;\r
+        cl_event_t                                      event;\r
+\r
+        <a href="#robo461">cl_pfn_obj_call_t</a>                       pfn_destroying;\r
+        <a href="#robo461">cl_pfn_obj_call_t</a>                       pfn_cleanup;\r
+        <a href="#robo461">cl_pfn_obj_call_t</a>                       pfn_free;\r
+\r
+        cl_spinlock_t                           lock;\r
+\r
+        <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a>                                      parent_list;\r
+        <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a>                                      child_list;\r
+\r
+        atomic32_t                                      ref_cnt;\r
+\r
+}       <strong>cl_obj_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pool_item\r
+               Used to track the object with the global object manager.  We use\r
+               a pool item, rather than a list item, to let users store the object\r
+               in a pool.\r
+\r
+       type\r
+               Stores a user-specified object type.\r
+\r
+       state\r
+               Records the current state of the object, such as initialized,\r
+               destroying, etc.\r
+\r
+       destroy_type\r
+               Specifies the type of destruction, synchronous or asynchronous, to\r
+               perform on this object.\r
+\r
+       async_item\r
+               Asynchronous item used when destroying the object asynchronously.\r
+               This item is queued to an asynchronous thread to complete destruction\r
+               processing.\r
+\r
+       event\r
+               <a href="./cl_event_h.html#robo11">Event</a> used when destroying the object synchronously.  A call to destroy\r
+               the object will wait on this event until the destruction has completed.\r
+\r
+       pfn_destroying\r
+               User-specified callback invoked to notify a user that an object has\r
+               been marked for destruction.  This callback is invoked directly from\r
+               the thread destroying the object and is used to notify a user that\r
+               a parent object has invoked a child object's destructor.\r
+\r
+       pfn_cleanup\r
+               User-specified callback invoked as an object is undergoing destruction.\r
+               For object's destroyed asynchronously, this callback is invoked from\r
+               the context of the asynchronous destruction thread.  Users may block\r
+               in the context of this thread; however, further destruction processing\r
+               will not continue until this callback returns.\r
+\r
+       pfn_free\r
+               User-specified callback invoked to notify a user that an object has\r
+               been destroyed and is ready for deallocation.  Users should either\r
+               call <a href="#robo444">cl_obj_deinit</a> or <a href="#robo457">cl_obj_reset</a> from within this callback.\r
+\r
+       lock\r
+               A lock provided by the object.\r
+\r
+       parent_list\r
+               A list of relationships to parent objects that an object is dependent\r
+               on.\r
+\r
+       child_list\r
+               A list of all child objects that are dependent on this object.\r
+               Destroying this object will result in all related objects maintained\r
+               in the child list also being destroyed.\r
+\r
+       ref_cnt\r
+               A count of the number of objects still referencing this object.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo443">cl_obj_construct</a>, <a href="#robo447">cl_obj_init</a>, <a href="#robo446">cl_obj_destroy</a>,\r
+       <a href="#robo444">cl_obj_deinit</a>, <a href="#robo461">cl_pfn_obj_call_t</a>, <a href="#robo442">cl_destroy_type_t</a>,\r
+       <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>, cl_state_t, <a href="./cl_async_proc_h.html#robo269">cl_async_proc_item_t</a>,\r
+       cl_event_t, cl_spinlock_t, <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a>, atomic32_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo459">[Functions]<a name="Component20Library3a20Object2fcl5fobj5ftype">\r
+Component Library: Object/cl_obj_type</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_type</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the type of an object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE uint32_t CL_API\r
+<strong>cl_obj_type</strong>(\r
+        IN                              <a href="#robo458">cl_obj_t</a> * const                        p_obj )\r
+{\r
+        return p_obj-&gt;type;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_obj\r
+               [in] A pointer to the object whose type to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       The type of the object, as specified in the call to <a href="#robo447">cl_obj_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo458">cl_obj_t</a>, <a href="#robo447">cl_obj_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo460">[Functions]<a name="Component20Library3a20Object2fcl5fobj5funlock">\r
+Component Library: Object/cl_obj_unlock</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_obj_unlock</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Releases an object's lock previously acquired by a call to <a href="#robo450">cl_obj_lock</a>.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_obj_unlock</strong>(\r
+        IN                              <a href="#robo458">cl_obj_t</a> * const                        p_obj )\r
+{\r
+        CL_ASSERT( p_obj-&gt;state == CL_INITIALIZED ||\r
+                p_obj-&gt;state == CL_DESTROYING );\r
+        <a href="./cl_spinlock_h.html#robo652">cl_spinlock_release</a>( &amp;p_obj-&gt;lock );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_obj\r
+               [in] A pointer to the object whose lock to release.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo458">cl_obj_t</a>, <a href="#robo450">cl_obj_lock</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo461">[Definitions]<a name="Component20Library3a20Object2fcl5fpfn5fobj5fcall5ft">\r
+Component Library: Object/cl_pfn_obj_call_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_obj_call_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_obj_call_t</strong> function type defines the prototype for functions\r
+       used to return objects to the user.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_obj_call_t</strong>)(\r
+        IN                              struct _cl_obj                          *p_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_obj\r
+               [in] Pointer to a <a href="#robo458">cl_obj_t</a>.  This is the object being returned to\r
+               the user.\r
+\r
+ RETURN VALUES\r
+       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as a prototype for functions provided\r
+       by users as parameters to the <a href="#robo447">cl_obj_init</a> function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo447">cl_obj_init</a>, <a href="#robo458">cl_obj_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo462">[Functions]<a name="Component20Library3a20Object2fcl5frel5falloc">\r
+Component Library: Object/cl_rel_alloc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rel_alloc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves an object relationship item from the object manager.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="#robo455">cl_obj_rel_t</a>* CL_API\r
+<strong>cl_rel_alloc</strong>(void);\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       None.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       A reference to an allocated relationship object, or NULL if no relationship\r
+       object could be allocated.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine retrieves a <a href="#robo455">cl_obj_rel_t</a> structure from a pool maintained\r
+       by the object manager.  The pool automatically grows as needed.\r
+\r
+       Relationship items are used to describe a dependent relationship between\r
+       a parent and child object.  In cases where a child has a fixed number of\r
+       relationships, the user may be able to allocate and manage the <a href="#robo455">cl_obj_rel_t</a>\r
+       structures more efficiently than obtaining the structures through this call.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo463">cl_rel_free</a>, <a href="#robo448">cl_obj_insert_rel</a>, <a href="#robo456">cl_obj_remove_rel</a>, <a href="#robo446">cl_obj_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo463">[Functions]<a name="Component20Library3a20Object2fcl5frel5ffree">\r
+Component Library: Object/cl_rel_free</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rel_free</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Return a relationship object to the global object manager.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_rel_free</strong>(\r
+        IN                              <a href="#robo455">cl_obj_rel_t</a> * const            p_rel );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rel\r
+               [in] A reference to the relationship item to free.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Relationship items must not be freed until both the parent and child\r
+       object have removed their references to one another.  Relationship items\r
+       may be freed after calling <a href="#robo456">cl_obj_remove_rel</a> or after the associated\r
+       child object's free callback has been invoked.  In the latter case, the\r
+       invalid relationship items are referenced by the child object's parent_list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo18">Object</a>, <a href="#robo462">cl_rel_alloc</a>, <a href="#robo448">cl_obj_insert_rel</a>, <a href="#robo456">cl_obj_remove_rel</a>, <a href="#robo446">cl_obj_destroy</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_passivelock_h.html b/trunk/docs/complib/cl_passivelock_h.html
new file mode 100644 (file)
index 0000000..39691e3
--- /dev/null
@@ -0,0 +1,417 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_passivelock_h.html</title>\r
+<!-- Source: ./inc/complib/cl_passivelock.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_passivelock.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo20">[Modules]<a name="Component20Library2fPassive20Lock">\r
+Component Library/Passive Lock</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Passive Lock\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The Passive Lock provides synchronization between multiple threads that\r
+       are sharing the lock with a single thread holding the lock exclusively.\r
+\r
+       Passive lock works exclusively between threads and cannot be used in\r
+       situations where the caller cannot be put into a waiting state.\r
+\r
+       The passive lock functions operate a <a href="#robo470">cl_plock_t</a> structure which should\r
+       be treated as opaque and should be manipulated only through the provided\r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo470">cl_plock_t</a>\r
+\r
+       Initialization:\r
+               <a href="#robo465">cl_plock_construct</a>, <a href="#robo468">cl_plock_init</a>, <a href="#robo466">cl_plock_destroy</a>\r
+\r
+       Manipulation\r
+               <a href="#robo464">cl_plock_acquire</a>, <a href="#robo467">cl_plock_excl_acquire</a>, <a href="#robo469">cl_plock_release</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo464">[Functions]<a name="Component20Library3a20Passive20Lock2fcl5fplock5facquire">\r
+Component Library: Passive Lock/cl_plock_acquire</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_plock_acquire</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_plock_acquire</strong> function acquires a passive lock for\r
+       shared access.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_plock_acquire</strong>(\r
+        IN      <a href="#robo470">cl_plock_t</a>* const       p_lock )\r
+{\r
+        <a href="./cl_types_h.html#robo304">cl_status_t</a>     status;\r
+\r
+        CL_ASSERT( p_lock );\r
+\r
+        status =\r
+                <a href="./cl_event_h.html#robo321">cl_event_wait_on</a>( &amp;p_lock-&gt;reader_event, EVENT_NO_TIMEOUT, FALSE );\r
+        CL_ASSERT( status == CL_SUCCESS );\r
+\r
+        /*\r
+         * Increment the reader count to block a thread trying for exclusive\r
+         * access.\r
+         */\r
+        <a href="./cl_atomic_h.html#robo276">cl_atomic_inc</a>( &amp;p_lock-&gt;reader_count );\r
+#ifdef DBG_PASSIVE_LOCKS\r
+        <a href="./cl_debug_h.html#robo307">cl_dbg_out</a>( "<strong>cl_plock_acquire</strong>: ReaderCount = %u\n",\r
+                p_lock-&gt;reader_count );\r
+#endif\r
+        /*\r
+         * Release the reader event to satisfy the wait of another reader\r
+         * or a writer.\r
+         */\r
+        <a href="./cl_event_h.html#robo320">cl_event_signal</a>( &amp;p_lock-&gt;reader_event );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_lock\r
+               [in] Pointer to a <a href="#robo470">cl_plock_t</a> structure to acquire.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Passive Lock, <a href="#robo469">cl_plock_release</a>, <a href="#robo467">cl_plock_excl_acquire</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo465">[Functions]<a name="Component20Library3a20Passive20Lock2fcl5fplock5fconstruct">\r
+Component Library: Passive Lock/cl_plock_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_plock_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_plock_construct</strong> function initializes the state of a\r
+       passive lock.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_plock_construct</strong>(\r
+        IN      <a href="#robo470">cl_plock_t</a>* const       p_lock )\r
+{\r
+        CL_ASSERT( p_lock );\r
+\r
+        p_lock-&gt;reader_count = 0;\r
+        <a href="./cl_event_h.html#robo316">cl_event_construct</a>( &amp;p_lock-&gt;reader_event );\r
+        <a href="./cl_event_h.html#robo316">cl_event_construct</a>( &amp;p_lock-&gt;writer_event );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_lock\r
+               [in] Pointer to a <a href="#robo470">cl_plock_t</a> structure whose state to initialize.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo466">cl_plock_destroy</a> without first calling <a href="#robo468">cl_plock_init</a>.\r
+\r
+       Calling <strong>cl_plock_construct</strong> is a prerequisite to calling any other\r
+       passive lock function except <a href="#robo468">cl_plock_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Passive Lock, <a href="#robo468">cl_plock_init</a>, <a href="#robo466">cl_plock_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo466">[Functions]<a name="Component20Library3a20Passive20Lock2fcl5fplock5fdestroy">\r
+Component Library: Passive Lock/cl_plock_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_plock_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_plock_destroy</strong> function performs any necessary cleanup\r
+       of a passive lock.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_plock_destroy</strong>(\r
+        IN      <a href="#robo470">cl_plock_t</a>* const       p_lock )\r
+{\r
+        CL_ASSERT( p_lock );\r
+        CL_ASSERT( p_lock-&gt;reader_count == 0 );\r
+\r
+        <a href="./cl_event_h.html#robo317">cl_event_destroy</a>( &amp;p_lock-&gt;writer_event );\r
+        <a href="./cl_event_h.html#robo317">cl_event_destroy</a>( &amp;p_lock-&gt;reader_event );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_lock\r
+               [in] Pointer to a <a href="#robo470">cl_plock_t</a> structure whose state to initialize.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_plock_destroy</strong> performs any necessary cleanup of the specified\r
+       passive lock.\r
+\r
+       This function must only be called if <a href="#robo465">cl_plock_construct</a> or\r
+       <a href="#robo468">cl_plock_init</a> has been called. The passive lock must not be held\r
+       when calling this function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Passive Lock, <a href="#robo465">cl_plock_construct</a>, <a href="#robo468">cl_plock_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo467">[Functions]<a name="Component20Library3a20Passive20Lock2fcl5fplock5fexcl5facquire">\r
+Component Library: Passive Lock/cl_plock_excl_acquire</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_plock_excl_acquire</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_plock_excl_acquire</strong> function acquires exclusive access\r
+       to a passive lock.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_plock_excl_acquire</strong>(\r
+        IN      <a href="#robo470">cl_plock_t</a>* const       p_lock )\r
+{\r
+        <a href="./cl_types_h.html#robo304">cl_status_t</a>     status;\r
+\r
+        CL_ASSERT( p_lock );\r
+\r
+        /* Acquire the reader event.  This will block new readers. */\r
+        status =\r
+                <a href="./cl_event_h.html#robo321">cl_event_wait_on</a>( &amp;p_lock-&gt;reader_event, EVENT_NO_TIMEOUT, FALSE );\r
+        CL_ASSERT( status == CL_SUCCESS );\r
+\r
+        /* Wait for the writer event until all readers have exited. */\r
+        while( p_lock-&gt;reader_count )\r
+        {\r
+#ifdef DBG_PASSIVE_LOCKS\r
+                <a href="./cl_debug_h.html#robo307">cl_dbg_out</a>( "<strong>cl_plock_excl_acquire</strong>: ReaderCount = %u\n",\r
+                        p_lock-&gt;reader_count );\r
+#endif\r
+                status =\r
+                        <a href="./cl_event_h.html#robo321">cl_event_wait_on</a>( &amp;p_lock-&gt;writer_event, EVENT_NO_TIMEOUT, FALSE );\r
+                CL_ASSERT( status == CL_SUCCESS );\r
+        }\r
+\r
+#ifdef DBG_PASSIVE_LOCKS\r
+        <a href="./cl_debug_h.html#robo307">cl_dbg_out</a>( "<strong>cl_plock_excl_acquire</strong>: Exit\n" );\r
+#endif\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_lock\r
+               [in] Pointer to a <a href="#robo470">cl_plock_t</a> structure to acquire exclusively.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Passive Lock, <a href="#robo469">cl_plock_release</a>, <a href="#robo464">cl_plock_acquire</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo468">[Functions]<a name="Component20Library3a20Passive20Lock2fcl5fplock5finit">\r
+Component Library: Passive Lock/cl_plock_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_plock_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_plock_init</strong> function initializes a passive lock.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_plock_init</strong>(\r
+        IN      <a href="#robo470">cl_plock_t</a>* const       p_lock )\r
+{\r
+        <a href="./cl_types_h.html#robo304">cl_status_t</a>     status;\r
+\r
+        CL_ASSERT( p_lock );\r
+\r
+        <a href="#robo465">cl_plock_construct</a>( p_lock );\r
+\r
+        status = <a href="./cl_event_h.html#robo318">cl_event_init</a>( &amp;p_lock-&gt;writer_event, FALSE );\r
+        if( status != CL_SUCCESS )\r
+        {\r
+                <a href="#robo466">cl_plock_destroy</a>( p_lock );\r
+                return( status );\r
+        }\r
+\r
+        status = <a href="./cl_event_h.html#robo318">cl_event_init</a>( &amp;p_lock-&gt;reader_event, FALSE );\r
+        if( status != CL_SUCCESS )\r
+        {\r
+                <a href="#robo466">cl_plock_destroy</a>( p_lock );\r
+                return( status );\r
+        }\r
+\r
+        /*\r
+         * Set the writer event to signalled so that the first\r
+         * wait operation succeeds.\r
+         */\r
+        status = <a href="./cl_event_h.html#robo320">cl_event_signal</a>( &amp;p_lock-&gt;writer_event );\r
+        if( status != CL_SUCCESS )\r
+        {\r
+                <a href="#robo466">cl_plock_destroy</a>( p_lock );\r
+                return( status );\r
+        }\r
+\r
+        /*\r
+         * Set the reader event to signalled so that the first\r
+         * wait operation succeeds.\r
+         */\r
+        status = <a href="./cl_event_h.html#robo320">cl_event_signal</a>( &amp;p_lock-&gt;reader_event );\r
+        if( status != CL_SUCCESS )\r
+        {\r
+                <a href="#robo466">cl_plock_destroy</a>( p_lock );\r
+                return( status );\r
+        }\r
+\r
+        return( CL_SUCCESS );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_lock\r
+               [in] Pointer to a <a href="#robo470">cl_plock_t</a> structure to initialize.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the passive lock was initialized successfully.\r
+\r
+       CL_ERROR otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo464">cl_plock_acquire</a>, <a href="#robo469">cl_plock_release</a>,\r
+       <a href="#robo467">cl_plock_excl_acquire</a>, and cl_plock_excl_release.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Passive Lock, <a href="#robo465">cl_plock_construct</a>, <a href="#robo466">cl_plock_destroy</a>,\r
+       <a href="#robo467">cl_plock_excl_acquire</a>, cl_plock_excl_release,\r
+       <a href="#robo464">cl_plock_acquire</a>, <a href="#robo469">cl_plock_release</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo469">[Functions]<a name="Component20Library3a20Passive20Lock2fcl5fplock5frelease">\r
+Component Library: Passive Lock/cl_plock_release</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_plock_release</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_plock_release</strong> function releases a passive lock from\r
+       shared or exclusive access.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_plock_release</strong>(\r
+        IN      <a href="#robo470">cl_plock_t</a>* const       p_lock )\r
+{\r
+        CL_ASSERT( p_lock );\r
+\r
+        if( p_lock-&gt;reader_count )\r
+        {\r
+\r
+                /*\r
+                 * Decrement the count to allow a thread waiting for exclusive\r
+                 * access to continue.\r
+                 */\r
+                <a href="./cl_atomic_h.html#robo275">cl_atomic_dec</a>( &amp;p_lock-&gt;reader_count );\r
+\r
+                #ifdef DBG_PASSIVE_LOCKS\r
+                        <a href="./cl_debug_h.html#robo307">cl_dbg_out</a>( "<strong>cl_plock_release</strong>: ReaderCount = %u\n",\r
+                                p_lock-&gt;reader_count );\r
+                #endif\r
+\r
+                /* Release a writer, if any. */\r
+                <a href="./cl_event_h.html#robo320">cl_event_signal</a>( &amp;p_lock-&gt;writer_event );\r
+        }\r
+        else\r
+        {\r
+                /* Release threads waiting to acquire the lock. */\r
+                <a href="./cl_event_h.html#robo320">cl_event_signal</a>( &amp;p_lock-&gt;reader_event );\r
+                <a href="./cl_event_h.html#robo320">cl_event_signal</a>( &amp;p_lock-&gt;writer_event );\r
+\r
+                #ifdef DBG_PASSIVE_LOCKS\r
+                        <a href="./cl_debug_h.html#robo307">cl_dbg_out</a>( "<strong>cl_plock_release</strong>: Exit\n" );\r
+                #endif\r
+        }\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_lock\r
+               [in] Pointer to a <a href="#robo470">cl_plock_t</a> structure to release.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Passive Lock, <a href="#robo464">cl_plock_acquire</a>, <a href="#robo467">cl_plock_excl_acquire</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo470">[Structures]<a name="Component20Library3a20Passive20Lock2fcl5fplock5ft">\r
+Component Library: Passive Lock/cl_plock_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_plock_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Passive Lock structure.\r
+\r
+       The <strong>cl_plock_t</strong> structure should be treated as opaque and should\r
+       be manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_plock\r
+{\r
+        cl_event_t              reader_event;\r
+        cl_event_t              writer_event;\r
+        atomic32_t              reader_count;\r
+\r
+} <strong>cl_plock_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       reader_event\r
+               <a href="./cl_event_h.html#robo11">Event</a> used to synchronize shared access to the lock.\r
+\r
+       writer_event\r
+               <a href="./cl_event_h.html#robo11">Event</a> used to synchronize exclusive access to the lock.\r
+\r
+       reader_count\r
+               Number of threads holding the lock for shared access.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Passive Lock\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_perf_h.html b/trunk/docs/complib/cl_perf_h.html
new file mode 100644 (file)
index 0000000..07de692
--- /dev/null
@@ -0,0 +1,583 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_perf_h.html</title>\r
+<!-- Source: ./inc/complib/cl_perf.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_perf.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo21">[Modules]<a name="Component20Library2fPerformance20Counters">\r
+Component Library/Performance Counters</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Performance Counters\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The performance counters allows timing operations to benchmark\r
+       software performance and help identify potential bottlenecks.\r
+\r
+       All performance counters are NULL macros when disabled, preventing them\r
+       from adversly affecting performance in builds where the counters are not\r
+       used.\r
+\r
+       Each counter records elapsed time in micro-seconds, minimum time elapsed,\r
+       and total number of samples.\r
+\r
+       Each counter is independently protected by a spinlock, allowing use of\r
+       the counters in multi-processor environments.\r
+\r
+       The impact of serializing access to performance counters is measured,\r
+       allowing measurements to be corrected as necessary.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Performance counters do impact performance, and should only be enabled\r
+       when gathering data.  Counters can be enabled or disabled on a per-user\r
+       basis at compile time.  To enable the counters, users should define\r
+       the PERF_TRACK_ON keyword before including the <a href="#robo_top_of_doc">cl_perf.h</a> file.\r
+       Undefining the PERF_TRACK_ON keyword disables the performance counters.\r
+       When disabled, all performance tracking calls resolve to no-ops.\r
+\r
+       When using performance counters, it is the user's responsibility to\r
+       maintain the counter indexes.  It is recomended that users define an\r
+       enumerated type to use for counter indexes.  It improves readability\r
+       and simplifies maintenance by reducing the work necessary in managing\r
+       the counter indexes.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               cl_perf_t\r
+\r
+       Initialization:\r
+               <a href="#robo472">cl_perf_construct</a>, <a href="#robo476">cl_perf_init</a>, <a href="#robo473">cl_perf_destroy</a>\r
+\r
+       Manipulation\r
+               <a href="#robo478">cl_perf_reset</a>, <a href="#robo474">cl_perf_display</a>, <a href="#robo479">cl_perf_start</a>, <a href="#robo481">cl_perf_update</a>,\r
+               <a href="#robo477">cl_perf_log</a>, <a href="#robo480">cl_perf_stop</a>\r
+\r
+       Macros:\r
+               <a href="#robo483">PERF_DECLARE</a>, <a href="#robo484">PERF_DECLARE_START</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo471">[Definitions]<a name="Component20Library3a20Performance20Counters2fcl5fperf5fclr">\r
+Component Library: Performance Counters/cl_perf_clr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_perf_clr</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_perf_clr</strong> macro clears a counter variable.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void\r
+<a href="#robo475">cl_perf_inc</a>(\r
+        IN      const uintn_t index );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       index\r
+               [in] Index of the performance counter to set.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This macro has no effect when performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters, <a href="#robo483">PERF_DECLARE</a>, <a href="#robo484">PERF_DECLARE_START</a>, <a href="#robo477">cl_perf_log</a>,\r
+       <a href="#robo481">cl_perf_update</a>, <a href="#robo480">cl_perf_stop</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo472">[Functions]<a name="Component20Library3a20Performance20Counters2fcl5fperf5fconstruct">\r
+Component Library: Performance Counters/cl_perf_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_perf_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_perf_construct</strong> macro constructs a performance\r
+       tracking container.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void\r
+<strong>cl_perf_construct</strong>(\r
+        IN      cl_perf_t* const        p_perf );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_perf\r
+               [in] Pointer to a performance counter container to construct.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_perf_construct</strong> allows calling <a href="#robo473">cl_perf_destroy</a> without first calling\r
+       <a href="#robo476">cl_perf_init</a>.\r
+\r
+       Calling <strong>cl_perf_construct</strong> is a prerequisite to calling any other\r
+       perfromance counter function except <a href="#robo476">cl_perf_init</a>.\r
+\r
+       This function is implemented as a macro and has no effect when\r
+       performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters, <a href="#robo476">cl_perf_init</a>, <a href="#robo473">cl_perf_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo473">[Functions]<a name="Component20Library3a20Performance20Counters2fcl5fperf5fdestroy">\r
+Component Library: Performance Counters/cl_perf_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_perf_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_perf_destroy</strong> function destroys a performance tracking container.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void\r
+<strong>cl_perf_destroy</strong>(\r
+        IN      cl_perf_t* const        p_perf,\r
+        IN      const boolean_t         display );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_perf\r
+               [in] Pointer to a performance counter container to destroy.\r
+\r
+       display\r
+               [in] If TRUE, causes the performance counters to be displayed.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_perf_destroy</strong> frees all resources allocated in a call to <a href="#robo476">cl_perf_init</a>.\r
+       If the display parameter is set to TRUE, displays all counter values\r
+       before deallocating resources.\r
+\r
+       This function should only be called after a call to <a href="#robo472">cl_perf_construct</a>\r
+       or <a href="#robo476">cl_perf_init</a>.\r
+\r
+       This function is implemented as a macro and has no effect when\r
+       performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters, <a href="#robo472">cl_perf_construct</a>, <a href="#robo476">cl_perf_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo474">[Functions]<a name="Component20Library3a20Performance20Counters2fcl5fperf5fdisplay">\r
+Component Library: Performance Counters/cl_perf_display</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_perf_display</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_perf_display</strong> function displays the current performance\r
+       counter values.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void\r
+<strong>cl_perf_display</strong>(\r
+        IN      const cl_perf_t* const  p_perf );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_perf\r
+               [in] Pointer to a performance counter container whose counter\r
+               values to display.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is implemented as a macro and has no effect when\r
+       performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters, <a href="#robo476">cl_perf_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo475">[Definitions]<a name="Component20Library3a20Performance20Counters2fcl5fperf5finc">\r
+Component Library: Performance Counters/cl_perf_inc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_perf_inc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_perf_inc</strong> macro increments a counter variable by one.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void\r
+<strong>cl_perf_inc</strong>(\r
+        IN      const uintn_t index );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       index\r
+               [in] Index of the performance counter to set.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This macro has no effect when performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters, <a href="#robo483">PERF_DECLARE</a>, <a href="#robo484">PERF_DECLARE_START</a>, <a href="#robo477">cl_perf_log</a>,\r
+       <a href="#robo481">cl_perf_update</a>, <a href="#robo480">cl_perf_stop</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo476">[Functions]<a name="Component20Library3a20Performance20Counters2fcl5fperf5finit">\r
+Component Library: Performance Counters/cl_perf_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_perf_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_perf_init</strong> function initializes a performance counter container\r
+       for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre><a href="./cl_types_h.html#robo304">cl_status_t</a>\r
+<strong>cl_perf_init</strong>(\r
+        IN      cl_perf_t* const        p_perf,\r
+        IN      const uintn_t           num_counters );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_perf\r
+               [in] Pointer to a performance counter container to initalize.\r
+\r
+       num_cntrs\r
+               [in] Number of counters to allocate in the container.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if initialization was successful.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize\r
+       the container.\r
+\r
+       CL_ERROR if an error was encountered initializing the locks for the\r
+       performance counters.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function allocates all memory required for the requested number of\r
+       counters and initializes all locks protecting those counters.  After a\r
+       successful initialization, <strong>cl_perf_init</strong> calibrates the counters and\r
+       resets their value.\r
+\r
+       This function is implemented as a macro and has no effect when\r
+       performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters, <a href="#robo472">cl_perf_construct</a>, <a href="#robo473">cl_perf_destroy</a>, <a href="#robo474">cl_perf_display</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo477">[Definitions]<a name="Component20Library3a20Performance20Counters2fcl5fperf5flog">\r
+Component Library: Performance Counters/cl_perf_log</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_perf_log</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_perf_log</strong> macro adds a given timing sample to a\r
+       counter in a performance counter container.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void\r
+<strong>cl_perf_log</strong>(\r
+        IN      cl_perf_t* const        p_perf,\r
+        IN      const uintn_t           index,\r
+        IN      const uint64_t          pc_total_time );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_perf\r
+               [in] Pointer to a performance counter container to whose counter\r
+               the sample should be added.\r
+\r
+       index\r
+               [in] Number of the performance counter to update with a new sample.\r
+\r
+       pc_total_time\r
+               [in] Total elapsed time for the sample being added.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This macro has no effect when performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters, <a href="#robo483">PERF_DECLARE</a>, <a href="#robo484">PERF_DECLARE_START</a>, <a href="#robo479">cl_perf_start</a>,\r
+       <a href="#robo481">cl_perf_update</a>, <a href="#robo480">cl_perf_stop</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo478">[Functions]<a name="Component20Library3a20Performance20Counters2fcl5fperf5freset">\r
+Component Library: Performance Counters/cl_perf_reset</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_perf_reset</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_perf_reset</strong> function resets the counters contained in\r
+       a performance tracking container.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void\r
+<strong>cl_perf_reset</strong>(\r
+        IN      cl_perf_t* const        p_perf );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_perf\r
+               [in] Pointer to a performance counter container whose counters\r
+               to reset.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is implemented as a macro and has no effect when\r
+       performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo479">[Definitions]<a name="Component20Library3a20Performance20Counters2fcl5fperf5fstart">\r
+Component Library: Performance Counters/cl_perf_start</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_perf_start</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_perf_start</strong> macro sets the starting value of a timed sequence.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void\r
+<strong>cl_perf_start</strong>(\r
+        IN      const uintn_t index );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       index\r
+               [in] Index of the performance counter to set.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This macro has no effect when performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters, <a href="#robo483">PERF_DECLARE</a>, <a href="#robo484">PERF_DECLARE_START</a>, <a href="#robo477">cl_perf_log</a>,\r
+       <a href="#robo481">cl_perf_update</a>, <a href="#robo480">cl_perf_stop</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo480">[Definitions]<a name="Component20Library3a20Performance20Counters2fcl5fperf5fstop">\r
+Component Library: Performance Counters/cl_perf_stop</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_perf_stop</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <a href="#robo477">cl_perf_log</a> macro updates a counter in a performance counter\r
+       container with a new timing sample.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void\r
+<strong>cl_perf_stop</strong>(\r
+        IN      cl_perf_t* const        p_perf,\r
+        IN      const uintn_t           index );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_perf\r
+               [in] Pointer to a performance counter container to whose counter\r
+               a sample should be added.\r
+\r
+       index\r
+               [in] Number of the performance counter to update with a new sample.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The ending time stamp is taken and elapsed time calculated before updating\r
+       the specified counter.\r
+\r
+       This macro has no effect when performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters, <a href="#robo483">PERF_DECLARE</a>, <a href="#robo484">PERF_DECLARE_START</a>, <a href="#robo479">cl_perf_start</a>,\r
+       <a href="#robo477">cl_perf_log</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo481">[Definitions]<a name="Component20Library3a20Performance20Counters2fcl5fperf5fupdate">\r
+Component Library: Performance Counters/cl_perf_update</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_perf_update</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_perf_update</strong> macro adds a timing sample based on a provided start\r
+       time to a counter in a performance counter container.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void\r
+<strong>cl_perf_update</strong>(\r
+        IN      cl_perf_t* const        p_perf,\r
+        IN      const uintn_t           index,\r
+        IN      const uint64_t          start_time );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_perf\r
+               [in] Pointer to a performance counter container to whose counter\r
+               the sample should be added.\r
+\r
+       index\r
+               [in] Number of the performance counter to update with a new sample.\r
+\r
+       start_time\r
+               [in] Timestamp to use as the start time for the timing sample.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This macro has no effect when performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters, <a href="#robo483">PERF_DECLARE</a>, <a href="#robo484">PERF_DECLARE_START</a>, <a href="#robo479">cl_perf_start</a>,\r
+       cl_perf_lob, <a href="#robo480">cl_perf_stop</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo482">[Definitions]<a name="Component20Library3a20Performance20Counters2fcl5fperf5fupdate5fctr">\r
+Component Library: Performance Counters/cl_perf_update_ctr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_perf_update_ctr</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_perf_update_ctr</strong> macro updates a counter in a performance\r
+       counter container.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>void\r
+<strong>cl_perf_update_ctr</strong>(\r
+        IN      cl_perf_t* const        p_perf,\r
+        IN      const uintn_t           index );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_perf\r
+               [in] Pointer to a performance counter container to whose counter\r
+               the sample should be added.\r
+\r
+       index\r
+               [in] Number of the performance counter to update with a new sample.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This macro has no effect when performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters, <a href="#robo483">PERF_DECLARE</a>, <a href="#robo484">PERF_DECLARE_START</a>, <a href="#robo479">cl_perf_start</a>,\r
+       cl_perf_lob, <a href="#robo480">cl_perf_stop</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo483">[Definitions]<a name="Component20Library3a20Performance20Counters2fPERF5fDECLARE">\r
+Component Library: Performance Counters/PERF_DECLARE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>PERF_DECLARE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>PERF_DECLARE</strong> macro declares a performance counter variable used\r
+       to store the starting time of a timing sequence.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>PERF_DECLARE</strong>( index )\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       index\r
+               [in] Index of the performance counter for which to use this\r
+               variable.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Variables should generally be declared on the stack to support\r
+       multi-threading.  In cases where a counter needs to be used to\r
+       time operations accross multiple functions, care must be taken to\r
+       ensure that the start time stored in this variable is not overwritten\r
+       before the related performance counter has been updated.\r
+\r
+       This macro has no effect when performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters, <a href="#robo484">PERF_DECLARE_START</a>, <a href="#robo479">cl_perf_start</a>, <a href="#robo477">cl_perf_log</a>,\r
+       <a href="#robo480">cl_perf_stop</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo484">[Definitions]<a name="Component20Library3a20Performance20Counters2fPERF5fDECLARE5fSTART">\r
+Component Library: Performance Counters/PERF_DECLARE_START</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>PERF_DECLARE_START</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>PERF_DECLARE_START</strong> macro declares a performance counter variable\r
+       and sets it to the starting time of a timed sequence.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>PERF_DECLARE_START</strong>( index )\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       index\r
+               [in] Index of the performance counter for which to use this\r
+               variable.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Variables should generally be declared on the stack to support\r
+       multi-threading.\r
+\r
+       This macro has no effect when performance counters are disabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Performance Counters, <a href="#robo483">PERF_DECLARE</a>, <a href="#robo479">cl_perf_start</a>, <a href="#robo477">cl_perf_log</a>,\r
+       <a href="#robo480">cl_perf_stop</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_pool_h.html b/trunk/docs/complib/cl_pool_h.html
new file mode 100644 (file)
index 0000000..d5c8f9d
--- /dev/null
@@ -0,0 +1,581 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_pool_h.html</title>\r
+<!-- Source: ./inc/complib/cl_pool.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_pool.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo24">[Modules]<a name="Component20Library2fPool">\r
+Component Library/Pool</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>Pool</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The pool provides a self-contained and self-sustaining pool\r
+       of user defined objects.\r
+\r
+       To aid in object oriented design, the pool provides the user\r
+       the ability to specify callbacks that are invoked for each object for\r
+       construction, initialization, and destruction. Constructor and destructor\r
+       callback functions may not fail.\r
+\r
+       A pool does not return memory to the system as the user returns\r
+       objects to the pool. The only method of returning memory to the system is\r
+       to destroy the pool.\r
+\r
+       The <strong>Pool</strong> functions operate on a <a href="#robo538">cl_pool_t</a> structure which should be treated\r
+       as opaque and should be manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo538">cl_pool_t</a>\r
+\r
+       Callbacks:\r
+               <a href="#robo530">cl_pfn_pool_init_t</a>, <a href="#robo529">cl_pfn_pool_dtor_t</a>\r
+\r
+       Initialization/Destruction:\r
+               <a href="#robo531">cl_pool_construct</a>, <a href="#robo536">cl_pool_init</a>, <a href="#robo533">cl_pool_destroy</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo534">cl_pool_get</a>, <a href="#robo537">cl_pool_put</a>, <a href="#robo535">cl_pool_grow</a>\r
+\r
+       Attributes:\r
+               <a href="#robo528">cl_is_pool_inited</a>, <a href="#robo532">cl_pool_count</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo528">[Functions]<a name="Component20Library3a20Pool2fcl5fis5fpool5finited">\r
+Component Library: Pool/cl_is_pool_inited</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_pool_inited</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_pool_inited</strong> function returns whether a pool was successfully\r
+       initialized.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE uint32_t CL_API\r
+<strong>cl_is_pool_inited</strong>(\r
+        IN      const <a href="#robo538">cl_pool_t</a>* const  p_pool )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_pool );\r
+        return( <a href="./cl_qcomppool_h.html#robo539">cl_is_qcpool_inited</a>( &amp;p_pool-&gt;qcpool ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo538">cl_pool_t</a> structure whose initialization state\r
+               to check.\r
+\r
+ RETURN VALUES\r
+       TRUE if the pool was initialized successfully.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows checking the state of a pool to determine if invoking member\r
+       functions is appropriate.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo529">[Definitions]<a name="Component20Library3a20Pool2fcl5fpfn5fpool5fdtor5ft">\r
+Component Library: Pool/cl_pfn_pool_dtor_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_pool_dtor_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_pool_dtor_t</strong> function type defines the prototype for\r
+       functions used as destructor for objects being deallocated by a\r
+       pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_pool_dtor_t</strong>)(\r
+        IN      void* const                     p_object,\r
+        IN      void*                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_object\r
+               [in] Pointer to an object to destruct.\r
+\r
+       context\r
+               [in] Context provided in the call to <a href="#robo536">cl_pool_init</a>.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the function provided by the user as an optional parameter to the\r
+       <a href="#robo536">cl_pool_init</a> function.\r
+\r
+       The destructor is invoked once per allocated object, allowing the user\r
+       to perform any necessary cleanup. Users should not attempt to deallocate\r
+       the memory for the object, as the pool manages object\r
+       allocation and deallocation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo24">Pool</a>, <a href="#robo536">cl_pool_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo530">[Definitions]<a name="Component20Library3a20Pool2fcl5fpfn5fpool5finit5ft">\r
+Component Library: Pool/cl_pfn_pool_init_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_pool_init_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_pool_init_t</strong> function type defines the prototype for\r
+       functions used as initializers for objects being allocated by a\r
+       pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./cl_types_h.html#robo304">cl_status_t</a>\r
+(CL_API *<strong>cl_pfn_pool_init_t</strong>)(\r
+        IN      void* const                     p_object,\r
+        IN      void*                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_object\r
+               [in] Pointer to an object to initialize.\r
+\r
+       context\r
+               [in] Context provided in a call to <a href="#robo536">cl_pool_init</a>.\r
+\r
+ RETURN VALUES\r
+       Return CL_SUCCESS to indicates that initialization of the object\r
+       was successful and initialization of further objects may continue.\r
+\r
+       Other <a href="./cl_types_h.html#robo304">cl_status_t</a> values will be returned by <a href="#robo536">cl_pool_init</a>\r
+       and <a href="#robo535">cl_pool_grow</a>.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the function provided by the user as an optional parameter to the\r
+       <a href="#robo536">cl_pool_init</a> function.\r
+\r
+       The initializer is invoked once per allocated object, allowing the user\r
+       to trap initialization failures. Returning a status other than CL_SUCCESS\r
+       aborts a grow operation, initiated either through <a href="#robo536">cl_pool_init</a> or\r
+       <a href="#robo535">cl_pool_grow</a>, and causes the initiating function to fail.\r
+       Any non-CL_SUCCESS status will be returned by the function that initiated\r
+       the grow operation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo24">Pool</a>, <a href="#robo536">cl_pool_init</a>, <a href="#robo535">cl_pool_grow</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo531">[Functions]<a name="Component20Library3a20Pool2fcl5fpool5fconstruct">\r
+Component Library: Pool/cl_pool_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pool_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pool_construct</strong> function constructs a pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_pool_construct</strong>(\r
+        IN      <a href="#robo538">cl_pool_t</a>* const        p_pool );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo538">cl_pool_t</a> structure whose state to initialize.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo536">cl_pool_init</a>, <a href="#robo533">cl_pool_destroy</a>, and <a href="#robo528">cl_is_pool_inited</a>.\r
+\r
+       Calling <strong>cl_pool_construct</strong> is a prerequisite to calling any other\r
+       pool function except <a href="#robo536">cl_pool_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo24">Pool</a>, <a href="#robo536">cl_pool_init</a>, <a href="#robo533">cl_pool_destroy</a>, <a href="#robo528">cl_is_pool_inited</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo532">[Functions]<a name="Component20Library3a20Pool2fcl5fpool5fcount">\r
+Component Library: Pool/cl_pool_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pool_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pool_count</strong> function returns the number of available objects\r
+       in a pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_pool_count</strong>(\r
+        IN      <a href="#robo538">cl_pool_t</a>* const        p_pool )\r
+{\r
+        CL_ASSERT( p_pool );\r
+        return( <a href="./cl_qcomppool_h.html#robo544">cl_qcpool_count</a>( &amp;p_pool-&gt;qcpool ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo538">cl_pool_t</a> structure for which the number of\r
+               available objects is requested.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the number of objects available in the specified pool.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo533">[Functions]<a name="Component20Library3a20Pool2fcl5fpool5fdestroy">\r
+Component Library: Pool/cl_pool_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pool_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pool_destroy</strong> function destroys a pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_pool_destroy</strong>(\r
+        IN      <a href="#robo538">cl_pool_t</a>* const        p_pool )\r
+{\r
+        CL_ASSERT( p_pool );\r
+        <a href="./cl_qcomppool_h.html#robo545">cl_qcpool_destroy</a>( &amp;p_pool-&gt;qcpool );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo538">cl_pool_t</a> structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       All memory allocated for objects is freed. The destructor callback,\r
+       if any, will be invoked for every allocated object. Further operations\r
+       on the pool should not be attempted after <strong>cl_pool_destroy</strong>\r
+       is invoked.\r
+\r
+       This function should only be called after a call to\r
+       <a href="#robo531">cl_pool_construct</a> or <a href="#robo536">cl_pool_init</a>.\r
+\r
+       In a debug build, <strong>cl_pool_destroy</strong> asserts that all objects are in\r
+       the pool.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo24">Pool</a>, <a href="#robo531">cl_pool_construct</a>, <a href="#robo536">cl_pool_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo534">[Functions]<a name="Component20Library3a20Pool2fcl5fpool5fget">\r
+Component Library: Pool/cl_pool_get</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pool_get</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pool_get</strong> function retrieves an object from a pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void* CL_API\r
+<strong>cl_pool_get</strong>(\r
+        IN      <a href="#robo538">cl_pool_t</a>* const        p_pool )\r
+{\r
+        cl_pool_obj_t   *p_pool_obj;\r
+\r
+        CL_ASSERT( p_pool );\r
+\r
+        p_pool_obj = (cl_pool_obj_t*)<a href="./cl_qcomppool_h.html#robo546">cl_qcpool_get</a>( &amp;p_pool-&gt;qcpool );\r
+        if( !p_pool_obj )\r
+                return( NULL );\r
+\r
+        CL_ASSERT( p_pool_obj-&gt;list_obj.p_object );\r
+        return( (void*)p_pool_obj-&gt;list_obj.p_object );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo538">cl_pool_t</a> structure from which to retrieve\r
+               an object.\r
+\r
+ RETURN VALUES\r
+       Returns a pointer to an object.\r
+\r
+       Returns NULL if the pool is empty and can not be grown automatically.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_pool_get</strong> returns the object at the head of the pool. If the pool is\r
+       empty, it is automatically grown to accommodate this request unless the\r
+       grow_size parameter passed to the <a href="#robo536">cl_pool_init</a> function was zero.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo24">Pool</a>, cl_pool_get_tail, <a href="#robo537">cl_pool_put</a>, <a href="#robo535">cl_pool_grow</a>, <a href="#robo532">cl_pool_count</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo535">[Functions]<a name="Component20Library3a20Pool2fcl5fpool5fgrow">\r
+Component Library: Pool/cl_pool_grow</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pool_grow</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pool_grow</strong> function grows a pool by\r
+       the specified number of objects.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_pool_grow</strong>(\r
+        IN      <a href="#robo538">cl_pool_t</a>* const        p_pool,\r
+        IN      const size_t            obj_count )\r
+{\r
+        CL_ASSERT( p_pool );\r
+        return( <a href="./cl_qcomppool_h.html#robo547">cl_qcpool_grow</a>( &amp;p_pool-&gt;qcpool, obj_count ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo538">cl_pool_t</a> structure whose capacity to grow.\r
+\r
+       obj_count\r
+               [in] Number of objects by which to grow the pool.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the pool grew successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to grow the\r
+       pool.\r
+\r
+       <a href="./cl_types_h.html#robo304">cl_status_t</a> value returned by optional initialization callback function\r
+       specified by the pfn_initializer parameter passed to the\r
+       <a href="#robo536">cl_pool_init</a> function.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       It is not necessary to call <strong>cl_pool_grow</strong> if the pool is\r
+       configured to grow automatically.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo536">[Functions]<a name="Component20Library3a20Pool2fcl5fpool5finit">\r
+Component Library: Pool/cl_pool_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pool_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pool_init</strong> function initializes a pool for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_pool_init</strong>(\r
+        IN      <a href="#robo538">cl_pool_t</a>* const                p_pool,\r
+        IN      const size_t                    min_count,\r
+        IN      const size_t                    max_count,\r
+        IN      const size_t                    grow_size,\r
+        IN      const size_t                    object_size,\r
+        IN      <a href="#robo530">cl_pfn_pool_init_t</a>              pfn_initializer OPTIONAL,\r
+        IN      <a href="#robo529">cl_pfn_pool_dtor_t</a>              pfn_destructor OPTIONAL,\r
+        IN      const void* const               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo538">cl_pool_t</a> structure to initialize.\r
+\r
+       min_count\r
+               [in] Minimum number of objects that the pool should support. All\r
+               necessary allocations to allow storing the minimum number of items\r
+               are performed at initialization time, and all necessary callbacks\r
+               invoked.\r
+\r
+       max_count\r
+               [in] Maximum number of objects to which the pool is allowed to grow.\r
+               A value of zero specifies no maximum.\r
+\r
+       grow_size\r
+               [in] Number of objects to allocate when incrementally growing the pool.\r
+               A value of zero disables automatic growth.\r
+\r
+       object_size\r
+               [in] Size, in bytes, of each object.\r
+\r
+       pfn_initializer\r
+               [in] Initialization callback to invoke for every new object when\r
+               growing the pool. This parameter is optional and may be NULL.\r
+               See the <a href="#robo530">cl_pfn_pool_init_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       pfn_destructor\r
+               [in] Destructor callback to invoke for every object before memory for\r
+               that object is freed. This parameter is optional and may be NULL.\r
+               See the <a href="#robo529">cl_pfn_pool_dtor_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the pool was initialized successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize the\r
+       pool.\r
+\r
+       CL_INVALID_SETTING if a the maximum size is non-zero and less than the\r
+       minimum size.\r
+\r
+       Other <a href="./cl_types_h.html#robo304">cl_status_t</a> value returned by optional initialization callback function\r
+       specified by the pfn_initializer parameter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_pool_init</strong> initializes, and if necessary, grows the pool to\r
+       the capacity desired.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo24">Pool</a>, <a href="#robo531">cl_pool_construct</a>, <a href="#robo533">cl_pool_destroy</a>,\r
+       <a href="#robo534">cl_pool_get</a>, <a href="#robo537">cl_pool_put</a>, <a href="#robo535">cl_pool_grow</a>,\r
+       <a href="#robo532">cl_pool_count</a>, <a href="#robo530">cl_pfn_pool_init_t</a>, <a href="#robo529">cl_pfn_pool_dtor_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo537">[Functions]<a name="Component20Library3a20Pool2fcl5fpool5fput">\r
+Component Library: Pool/cl_pool_put</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pool_put</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pool_put</strong> function returns an object to a pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_pool_put</strong>(\r
+        IN      <a href="#robo538">cl_pool_t</a>* const        p_pool,\r
+        IN      void* const                     p_object )\r
+{\r
+        cl_pool_obj_t   *p_pool_obj;\r
+\r
+        CL_ASSERT( p_pool );\r
+        CL_ASSERT( p_object );\r
+\r
+        /* Calculate the offset to the list object representing this object. */\r
+        p_pool_obj = (cl_pool_obj_t*)\r
+                (((uint8_t*)p_object) - sizeof(cl_pool_obj_t));\r
+\r
+        /* good sanity check */\r
+        CL_ASSERT( p_pool_obj-&gt;list_obj.p_object == p_object );\r
+\r
+        <a href="./cl_qcomppool_h.html#robo549">cl_qcpool_put</a>( &amp;p_pool-&gt;qcpool, (<a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>*)p_pool_obj );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo538">cl_pool_t</a> structure to which to return\r
+               an object.\r
+\r
+       p_object\r
+               [in] Pointer to an object to return to the pool.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_pool_put</strong> places the returned object at the head of the pool.\r
+\r
+       The object specified by the p_object parameter must have been\r
+       retrieved from the pool by a previous call to <a href="#robo534">cl_pool_get</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo24">Pool</a>, cl_pool_put_tail, <a href="#robo534">cl_pool_get</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo538">[Structures]<a name="Component20Library3a20Pool2fcl5fpool5ft">\r
+Component Library: Pool/cl_pool_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pool_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       pool structure.\r
+\r
+       The <strong>cl_pool_t</strong> structure should be treated as opaque and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_pool\r
+{\r
+        <a href="./cl_qcomppool_h.html#robo551">cl_qcpool_t</a>                             qcpool;\r
+        <a href="#robo530">cl_pfn_pool_init_t</a>              pfn_init;\r
+        <a href="#robo529">cl_pfn_pool_dtor_t</a>              pfn_dtor;\r
+        const void                              *context;\r
+\r
+} <strong>cl_pool_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       qcpool\r
+               Quick composite pool that manages all objects.\r
+\r
+       pfn_init\r
+               Pointer to the user's initializer callback, used by the pool\r
+               to translate the quick composite pool's initializer callback to\r
+               a pool initializer callback.\r
+\r
+       pfn_dtor\r
+               Pointer to the user's destructor callback, used by the pool\r
+               to translate the quick composite pool's destructor callback to\r
+               a pool destructor callback.\r
+\r
+       context\r
+               User's provided context for callback functions, used by the pool\r
+               to when invoking callbacks.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_ptr_vector_h.html b/trunk/docs/complib/cl_ptr_vector_h.html
new file mode 100644 (file)
index 0000000..0993f51
--- /dev/null
@@ -0,0 +1,890 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_ptr_vector_h.html</title>\r
+<!-- Source: ./inc/complib/cl_ptr_vector.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_ptr_vector.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo23">[Modules]<a name="Component20Library2fPointer20Vector">\r
+Component Library/Pointer Vector</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The Pointer <a href="./cl_vector_h.html#robo36">Vector</a> is a self-sizing array of pointers. Like a traditonal\r
+       array, a pointer vector allows efficient constant time access to elements\r
+       with a specified index.  A pointer vector grows transparently as the\r
+       user adds elements to the array.\r
+\r
+       The cl_pointer vector_t structure should be treated as opaque and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo527">cl_ptr_vector_t</a>\r
+\r
+       Callbacks:\r
+               <a href="#robo509">cl_pfn_ptr_vec_apply_t</a>, <a href="#robo510">cl_pfn_ptr_vec_find_t</a>\r
+\r
+       Item Manipulation:\r
+               cl_ptr_vector_set_obj, cl_ptr_vector_obj\r
+\r
+       Initialization:\r
+               <a href="#robo513">cl_ptr_vector_construct</a>, <a href="#robo520">cl_ptr_vector_init</a>, <a href="#robo514">cl_ptr_vector_destroy</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo518">cl_ptr_vector_get_capacity</a>, <a href="#robo524">cl_ptr_vector_set_capacity</a>,\r
+               <a href="#robo519">cl_ptr_vector_get_size</a>, <a href="#robo526">cl_ptr_vector_set_size</a>, <a href="#robo525">cl_ptr_vector_set_min_size</a>\r
+               cl_ptr_vector_get_ptr, <a href="#robo517">cl_ptr_vector_get</a>, <a href="#robo512">cl_ptr_vector_at</a>, <a href="#robo523">cl_ptr_vector_set</a>\r
+\r
+       Search:\r
+               <a href="#robo516">cl_ptr_vector_find_from_start</a>, <a href="#robo515">cl_ptr_vector_find_from_end</a>\r
+               <a href="#robo511">cl_ptr_vector_apply_func</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo509">[Definitions]<a name="Component20Library3a20Pointer20Vector2fcl5fpfn5fptr5fvec5fapply5ft">\r
+Component Library: Pointer Vector/cl_pfn_ptr_vec_apply_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_ptr_vec_apply_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_ptr_vec_apply_t</strong> function type defines the prototype for\r
+       functions used to iterate elements in a pointer vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_ptr_vec_apply_t</strong>)(\r
+        IN      const size_t            index,\r
+        IN      void* const                     element,\r
+        IN      void*                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       index\r
+               [in] Index of the element.\r
+\r
+       p_element\r
+               [in] Pointer to an element at the specified index in the pointer vector.\r
+\r
+       context\r
+               [in] Context provided in a call to <a href="#robo511">cl_ptr_vector_apply_func</a>.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the function passed by users as a parameter to the <a href="#robo511">cl_ptr_vector_apply_func</a>\r
+       function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo511">cl_ptr_vector_apply_func</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo510">[Definitions]<a name="Component20Library3a20Pointer20Vector2fcl5fpfn5fptr5fvec5ffind5ft">\r
+Component Library: Pointer Vector/cl_pfn_ptr_vec_find_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_ptr_vec_find_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_ptr_vec_find_t</strong> function type defines the prototype for\r
+       functions used to find elements in a pointer vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./cl_types_h.html#robo304">cl_status_t</a>\r
+(CL_API *<strong>cl_pfn_ptr_vec_find_t</strong>)(\r
+        IN      const size_t            index,\r
+        IN      const void* const       element,\r
+        IN      void*                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       index\r
+               [in] Index of the element.\r
+\r
+       p_element\r
+               [in] Pointer to an element at the specified index in the\r
+               pointer vector.\r
+\r
+       context\r
+               [in] Context provided in a call to <a href="#robo516">cl_ptr_vector_find_from_start</a> or\r
+               <a href="#robo515">cl_ptr_vector_find_from_end</a>.\r
+\r
+ RETURN VALUES\r
+       Return CL_SUCCESS if the element was found. This stops pointer vector\r
+       iteration.\r
+\r
+       CL_NOT_FOUND to continue the pointer vector iteration.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for the\r
+       function provided by users as a parameter to the\r
+       <a href="#robo516">cl_ptr_vector_find_from_start</a> and <a href="#robo515">cl_ptr_vector_find_from_end</a> functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo516">cl_ptr_vector_find_from_start</a>, <a href="#robo515">cl_ptr_vector_find_from_end</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo511">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5fapply5ffunc">\r
+Component Library: Pointer Vector/cl_ptr_vector_apply_func</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_apply_func</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_apply_func</strong> function invokes a specified function for\r
+       every element in a pointer vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_ptr_vector_apply_func</strong>(\r
+        IN      const <a href="#robo527">cl_ptr_vector_t</a>* const    p_vector,\r
+        IN      <a href="#robo509">cl_pfn_ptr_vec_apply_t</a>                  pfn_callback,\r
+        IN      const void* const                               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure whose elements to iterate.\r
+\r
+       pfn_callback\r
+               [in] Function invoked for every element in the array.\r
+               See the <a href="#robo509">cl_pfn_ptr_vec_apply_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback function.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_ptr_vector_apply_func</strong> invokes the specified function for every element\r
+       in the pointer vector, starting from the beginning of the pointer vector.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo516">cl_ptr_vector_find_from_start</a>, <a href="#robo515">cl_ptr_vector_find_from_end</a>,\r
+       <a href="#robo509">cl_pfn_ptr_vec_apply_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo512">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5fat">\r
+Component Library: Pointer Vector/cl_ptr_vector_at</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_at</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_at</strong> function copies an element stored in a pointer\r
+       vector at a specified index, performing boundary checks.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_ptr_vector_at</strong>(\r
+        IN      const <a href="#robo527">cl_ptr_vector_t</a>* const    p_vector,\r
+        IN      const size_t                                    index,\r
+        OUT     void** const                                    p_element );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure from which to get a copy of\r
+               an element.\r
+\r
+       index\r
+               [in] Index of the element.\r
+\r
+       p_element\r
+               [out] Pointer to storage for the pointer element. Contains a copy of\r
+               the desired pointer upon successful completion of the call.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if an element was found at the specified index.\r
+\r
+       CL_INVALID_SETTING if the index was out of range.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_ptr_vector_at</strong> provides constant time access regardless of\r
+       the index, and performs boundary checking on the pointer vector.\r
+\r
+       Upon success, the p_element parameter contains a copy of the\r
+       desired element.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo517">cl_ptr_vector_get</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo513">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5fconstruct">\r
+Component Library: Pointer Vector/cl_ptr_vector_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_construct</strong> function constructs a pointer vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_ptr_vector_construct</strong>(\r
+        IN      <a href="#robo527">cl_ptr_vector_t</a>* const  p_vector );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure to construct.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo514">cl_ptr_vector_destroy</a> without first calling\r
+       <a href="#robo520">cl_ptr_vector_init</a>.\r
+\r
+       Calling <strong>cl_ptr_vector_construct</strong> is a prerequisite to calling any other\r
+       pointer vector function except <a href="#robo520">cl_ptr_vector_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo520">cl_ptr_vector_init</a>, <a href="#robo514">cl_ptr_vector_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo514">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5fdestroy">\r
+Component Library: Pointer Vector/cl_ptr_vector_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_destroy</strong> function destroys a pointer vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_ptr_vector_destroy</strong>(\r
+        IN      <a href="#robo527">cl_ptr_vector_t</a>* const  p_vector );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_ptr_vector_destroy</strong> frees all memory allocated for the pointer vector.\r
+\r
+       This function should only be called after a call to <a href="#robo513">cl_ptr_vector_construct</a>\r
+       or <a href="#robo520">cl_ptr_vector_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo513">cl_ptr_vector_construct</a>, <a href="#robo520">cl_ptr_vector_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo515">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5ffind5ffrom5fend">\r
+Component Library: Pointer Vector/cl_ptr_vector_find_from_end</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_find_from_end</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_find_from_end</strong> function uses a specified function to\r
+       search for elements in a pointer vector starting from the highest index.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT size_t CL_API\r
+<strong>cl_ptr_vector_find_from_end</strong>(\r
+        IN      const <a href="#robo527">cl_ptr_vector_t</a>* const    p_vector,\r
+        IN      <a href="#robo510">cl_pfn_ptr_vec_find_t</a>                   pfn_callback,\r
+        IN      const void* const                               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure to inititalize.\r
+\r
+       pfn_callback\r
+               [in] Function invoked to determine if a match was found.\r
+               See the <a href="#robo510">cl_pfn_ptr_vec_find_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback function.\r
+\r
+ RETURN VALUES\r
+       Index of the element, if found.\r
+\r
+       Size of the pointer vector if the element was not found.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_ptr_vector_find_from_end</strong> does not remove the found element from\r
+       the pointer vector. The index of the element is returned when the function\r
+       provided by the pfn_callback parameter returns CL_SUCCESS.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo516">cl_ptr_vector_find_from_start</a>, <a href="#robo511">cl_ptr_vector_apply_func</a>,\r
+       <a href="#robo510">cl_pfn_ptr_vec_find_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo516">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5ffind5ffrom5fstart">\r
+Component Library: Pointer Vector/cl_ptr_vector_find_from_start</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_find_from_start</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_find_from_start</strong> function uses a specified function to\r
+       search for elements in a pointer vector starting from the lowest index.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT size_t CL_API\r
+<strong>cl_ptr_vector_find_from_start</strong>(\r
+        IN      const <a href="#robo527">cl_ptr_vector_t</a>* const    p_vector,\r
+        IN      <a href="#robo510">cl_pfn_ptr_vec_find_t</a>                   pfn_callback,\r
+        IN      const void* const                               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure to inititalize.\r
+\r
+       pfn_callback\r
+               [in] Function invoked to determine if a match was found.\r
+               See the <a href="#robo510">cl_pfn_ptr_vec_find_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback function.\r
+\r
+ RETURN VALUES\r
+       Index of the element, if found.\r
+\r
+       Size of the pointer vector if the element was not found.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_ptr_vector_find_from_start</strong> does not remove the found element from\r
+       the pointer vector. The index of the element is returned when the function\r
+       provided by the pfn_callback parameter returns CL_SUCCESS.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo515">cl_ptr_vector_find_from_end</a>, <a href="#robo511">cl_ptr_vector_apply_func</a>,\r
+       <a href="#robo510">cl_pfn_ptr_vec_find_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo517">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5fget">\r
+Component Library: Pointer Vector/cl_ptr_vector_get</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_get</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_get</strong> function returns the pointer stored in a\r
+       pointer vector at a specified index.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void* CL_API\r
+<strong>cl_ptr_vector_get</strong>(\r
+        IN      const <a href="#robo527">cl_ptr_vector_t</a>* const    p_vector,\r
+        IN      const size_t                                    index )\r
+{\r
+        CL_ASSERT( p_vector );\r
+        CL_ASSERT( p_vector-&gt;state == CL_INITIALIZED );\r
+        CL_ASSERT( p_vector-&gt;size &gt; index );\r
+\r
+        return( (void*)p_vector-&gt;p_ptr_array[index] );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure from which to get an\r
+               element.\r
+\r
+       index\r
+               [in] Index of the element.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Value of the pointer stored at the specified index.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_ptr_vector_get</strong> provides constant access times regardless of the index.\r
+\r
+       <strong>cl_ptr_vector_get</strong> does not perform boundary checking. Callers are\r
+       responsible for providing an index that is within the range of the pointer\r
+       vector.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo512">cl_ptr_vector_at</a>, <a href="#robo523">cl_ptr_vector_set</a>, <a href="#robo519">cl_ptr_vector_get_size</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo518">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5fget5fcapacity">\r
+Component Library: Pointer Vector/cl_ptr_vector_get_capacity</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_get_capacity</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_get_capacity</strong> function returns the capacity of\r
+       a pointer vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_ptr_vector_get_capacity</strong>(\r
+        IN      const <a href="#robo527">cl_ptr_vector_t</a>* const    p_vector )\r
+{\r
+        CL_ASSERT( p_vector );\r
+        CL_ASSERT( p_vector-&gt;state == CL_INITIALIZED );\r
+\r
+        return( p_vector-&gt;capacity );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure whose capacity to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Capacity, in elements, of the pointer vector.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The capacity is the number of elements that the pointer vector can store,\r
+       and can be greater than the number of elements stored. To get the number\r
+       of elements stored in the pointer vector, use <a href="#robo519">cl_ptr_vector_get_size</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo524">cl_ptr_vector_set_capacity</a>, <a href="#robo519">cl_ptr_vector_get_size</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo519">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5fget5fsize">\r
+Component Library: Pointer Vector/cl_ptr_vector_get_size</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_get_size</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_get_size</strong> function returns the size of a pointer vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_ptr_vector_get_size</strong>(\r
+        IN      const <a href="#robo527">cl_ptr_vector_t</a>* const    p_vector )\r
+{\r
+        CL_ASSERT( p_vector );\r
+        CL_ASSERT( p_vector-&gt;state == CL_UNINITIALIZED ||\r
+                p_vector-&gt;state == CL_INITIALIZED );\r
+\r
+        return( p_vector-&gt;size );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure whose size to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Size, in elements, of the pointer vector.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo526">cl_ptr_vector_set_size</a>, <a href="#robo518">cl_ptr_vector_get_capacity</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo520">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5finit">\r
+Component Library: Pointer Vector/cl_ptr_vector_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_init</strong> function initializes a pointer vector for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_ptr_vector_init</strong>(\r
+        IN      <a href="#robo527">cl_ptr_vector_t</a>* const  p_vector,\r
+        IN      const size_t                    min_cap,\r
+        IN      const size_t                    grow_size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure to inititalize.\r
+\r
+       min_cap\r
+               [in] Initial number of elements the vector will support.\r
+               The vector is always initialized with a size of zero.\r
+\r
+       grow_size\r
+               [in] Number of elements to allocate when incrementally growing\r
+               the pointer vector.  A value of zero disables automatic growth.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the pointer vector was initialized successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if the initialization failed.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo513">cl_ptr_vector_construct</a>, <a href="#robo514">cl_ptr_vector_destroy</a>,\r
+       <a href="#robo523">cl_ptr_vector_set</a>, <a href="#robo517">cl_ptr_vector_get</a>, <a href="#robo512">cl_ptr_vector_at</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo521">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5finsert">\r
+Component Library: Pointer Vector/cl_ptr_vector_insert</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_insert</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_insert</strong> function inserts an element into a pointer vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_ptr_vector_insert</strong>(\r
+        IN      <a href="#robo527">cl_ptr_vector_t</a>* const  p_vector,\r
+        IN      const void* const               element,\r
+        OUT     size_t* const                   p_index OPTIONAL )\r
+{\r
+        <a href="./cl_types_h.html#robo304">cl_status_t</a>             status;\r
+\r
+        CL_ASSERT( p_vector );\r
+        CL_ASSERT( p_vector-&gt;state == CL_INITIALIZED );\r
+\r
+        status = <a href="#robo523">cl_ptr_vector_set</a>( p_vector, p_vector-&gt;size, element );\r
+        if( status == CL_SUCCESS &amp;&amp; p_index )\r
+                *p_index = p_vector-&gt;size - 1;\r
+\r
+        return( status );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure into which to store\r
+               an element.\r
+\r
+       element\r
+               [in] Pointer to store in the pointer vector.\r
+\r
+       p_index\r
+               [out] Pointer to the index of the element.  Valid only if\r
+               insertion was successful.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the element was successfully inserted.\r
+\r
+       CL_INSUFFICIENT_MEMORY if the pointer vector could not be resized to\r
+       accommodate the new element.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_ptr_vector_insert</strong> places the new element at the end of\r
+       the pointer vector.\r
+\r
+       <strong>cl_ptr_vector_insert</strong> grows the pointer vector as needed to accommodate\r
+       the new element, unless the grow_size parameter passed into the\r
+       <a href="#robo520">cl_ptr_vector_init</a> function was zero.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo522">cl_ptr_vector_remove</a>, <a href="#robo523">cl_ptr_vector_set</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo522">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5fremove">\r
+Component Library: Pointer Vector/cl_ptr_vector_remove</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_remove</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_remove</strong> function removes and returns the pointer stored\r
+       in a pointer vector at a specified index.  Items beyond the removed item\r
+       are shifted down and the size of the pointer vector is decremented.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void* CL_API\r
+<strong>cl_ptr_vector_remove</strong>(\r
+        IN      <a href="#robo527">cl_ptr_vector_t</a>* const  p_vector,\r
+        IN      const size_t                    index );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure from which to get an\r
+               element.\r
+\r
+       index\r
+               [in] Index of the element.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Value of the pointer stored at the specified index.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <a href="#robo517">cl_ptr_vector_get</a> does not perform boundary checking. Callers are\r
+       responsible for providing an index that is within the range of the pointer\r
+       vector.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo521">cl_ptr_vector_insert</a>, <a href="#robo519">cl_ptr_vector_get_size</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo523">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5fset">\r
+Component Library: Pointer Vector/cl_ptr_vector_set</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_set</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_set</strong> function sets the element at the specified index.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_ptr_vector_set</strong>(\r
+        IN      <a href="#robo527">cl_ptr_vector_t</a>* const  p_vector,\r
+        IN      const size_t                    index,\r
+        IN      const void* const               element );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure into which to store\r
+               an element.\r
+\r
+       index\r
+               [in] Index of the element.\r
+\r
+       element\r
+               [in] Pointer to store in the pointer vector.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the element was successfully set.\r
+\r
+       CL_INSUFFICIENT_MEMORY if the pointer vector could not be resized to\r
+       accommodate the new element.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_ptr_vector_set</strong> grows the pointer vector as needed to accommodate\r
+       the new element, unless the grow_size parameter passed into the\r
+       <a href="#robo520">cl_ptr_vector_init</a> function was zero.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo517">cl_ptr_vector_get</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo524">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5fset5fcapacity">\r
+Component Library: Pointer Vector/cl_ptr_vector_set_capacity</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_set_capacity</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_set_capacity</strong> function reserves memory in a\r
+       pointer vector for a specified number of pointers.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_ptr_vector_set_capacity</strong>(\r
+        IN      <a href="#robo527">cl_ptr_vector_t</a>* const  p_vector,\r
+        IN      const size_t                    new_capacity );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure whose capacity to set.\r
+\r
+       new_capacity\r
+               [in] Total number of elements for which the pointer vector should\r
+               allocate memory.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the capacity was successfully set.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to satisfy the\r
+       operation. The pointer vector is left unchanged.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_ptr_vector_set_capacity</strong> increases the capacity of the pointer vector.\r
+       It does not change the size of the pointer vector. If the requested\r
+       capacity is less than the current capacity, the pointer vector is left\r
+       unchanged.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo518">cl_ptr_vector_get_capacity</a>, <a href="#robo526">cl_ptr_vector_set_size</a>,\r
+       <a href="#robo525">cl_ptr_vector_set_min_size</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo525">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5fset5fmin5fsize">\r
+Component Library: Pointer Vector/cl_ptr_vector_set_min_size</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_set_min_size</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_set_min_size</strong> function resizes a pointer vector to a\r
+       specified size if the pointer vector is smaller than the specified size.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_ptr_vector_set_min_size</strong>(\r
+        IN      <a href="#robo527">cl_ptr_vector_t</a>* const  p_vector,\r
+        IN      const size_t                    min_size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure whose minimum size to set.\r
+\r
+       min_size\r
+               [in] Minimum number of elements that the pointer vector should contain.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the pointer vector size is greater than or equal to min_size.\r
+       This could indicate that the pointer vector's capacity was increased to\r
+       min_size or that the pointer vector was already of sufficient size.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to resize the\r
+       pointer vector.  The pointer vector is left unchanged.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       If min_size is smaller than the current size of the pointer vector,\r
+       the pointer vector is unchanged. The pointer vector is unchanged if the\r
+       size could not be changed due to insufficient memory being available to\r
+       perform the operation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo519">cl_ptr_vector_get_size</a>, <a href="#robo526">cl_ptr_vector_set_size</a>,\r
+       <a href="#robo524">cl_ptr_vector_set_capacity</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo526">[Functions]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5fset5fsize">\r
+Component Library: Pointer Vector/cl_ptr_vector_set_size</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_set_size</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_ptr_vector_set_size</strong> function resizes a pointer vector, either\r
+       increasing or decreasing its size.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_ptr_vector_set_size</strong>(\r
+        IN      <a href="#robo527">cl_ptr_vector_t</a>* const  p_vector,\r
+        IN      const size_t                    size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo527">cl_ptr_vector_t</a> structure whose size to set.\r
+\r
+       size\r
+               [in] Number of elements desired in the pointer vector.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the size of the pointer vector was set successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to complete the\r
+       operation. The pointer vector is left unchanged.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_ptr_vector_set_size</strong> sets the pointer vector to the specified size.\r
+       If size is smaller than the current size of the pointer vector, the size\r
+       is reduced.\r
+\r
+       This function can only fail if size is larger than the current capacity.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>, <a href="#robo519">cl_ptr_vector_get_size</a>, <a href="#robo525">cl_ptr_vector_set_min_size</a>,\r
+       <a href="#robo524">cl_ptr_vector_set_capacity</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo527">[Structures]<a name="Component20Library3a20Pointer20Vector2fcl5fptr5fvector5ft">\r
+Component Library: Pointer Vector/cl_ptr_vector_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_ptr_vector_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a> structure.\r
+\r
+       The <strong>cl_ptr_vector_t</strong> structure should be treated as opaque and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_ptr_vector\r
+{\r
+        size_t                          size;\r
+        size_t                          grow_size;\r
+        size_t                          capacity;\r
+        const void                      **p_ptr_array;\r
+        cl_state_t                      state;\r
+\r
+} <strong>cl_ptr_vector_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       size\r
+                Number of elements successfully initialized in the pointer vector.\r
+\r
+       grow_size\r
+                Number of elements to allocate when growing.\r
+\r
+       capacity\r
+                total # of elements allocated.\r
+\r
+       alloc_list\r
+                <a href="./cl_list_h.html#robo15">List</a> of allocations.\r
+\r
+       p_ptr_array\r
+                Internal array of pointers to elements.\r
+\r
+       state\r
+               State of the pointer vector.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Pointer <a href="./cl_vector_h.html#robo36">Vector</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_qcomppool_h.html b/trunk/docs/complib/cl_qcomppool_h.html
new file mode 100644 (file)
index 0000000..edda741
--- /dev/null
@@ -0,0 +1,740 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_qcomppool_h.html</title>\r
+<!-- Source: ./inc/complib/cl_qcomppool.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_qcomppool.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo25">[Modules]<a name="Component20Library2fQuick20Composite20Pool">\r
+Component Library/Quick Composite Pool</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a> provides a self-contained and self-sustaining\r
+       pool of user defined composite objects.\r
+\r
+       A composite object is an object that is composed of one or more\r
+       sub-objects, each of which needs to be treated separately for\r
+       initialization. Objects can be retrieved from the pool as long as there\r
+       is memory in the system.\r
+\r
+       To aid in object oriented design, the Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a> provides users\r
+       the ability to specify callbacks that are invoked for each object for\r
+       construction, initialization, and destruction. Constructor and destructor\r
+       callback functions may not fail.\r
+\r
+       A Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a> does not return memory to the system as the user\r
+       returns objects to the pool. The only method of returning memory to the\r
+       system is to destroy the pool.\r
+\r
+       The Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a> operates on <a href="#robo542">cl_pool_item_t</a> structures that\r
+       describe composite objects. This provides for more efficient memory use.\r
+       If using a <a href="#robo542">cl_pool_item_t</a> is not desired, the Composite <a href="./cl_pool_h.html#robo24">Pool</a> provides\r
+       similar functionality but operates on opaque objects.\r
+\r
+       The Quick Composit <a href="./cl_pool_h.html#robo24">Pool</a> functions operate on a <a href="#robo551">cl_qcpool_t</a> structure\r
+       which should be treated as opaque and should be manipulated only through\r
+       the provided functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo551">cl_qcpool_t</a>, <a href="#robo542">cl_pool_item_t</a>\r
+\r
+       Callbacks:\r
+               <a href="#robo541">cl_pfn_qcpool_init_t</a>, <a href="#robo540">cl_pfn_qcpool_dtor_t</a>\r
+\r
+       Initialization/Destruction:\r
+               <a href="#robo543">cl_qcpool_construct</a>, <a href="#robo548">cl_qcpool_init</a>, <a href="#robo545">cl_qcpool_destroy</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo546">cl_qcpool_get</a>, <a href="#robo549">cl_qcpool_put</a>, <a href="#robo550">cl_qcpool_put_list</a>, <a href="#robo547">cl_qcpool_grow</a>\r
+\r
+       Attributes:\r
+               <a href="#robo539">cl_is_qcpool_inited</a>, <a href="#robo544">cl_qcpool_count</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo539">[Functions]<a name="Component20Library3a20Quick20Composite20Pool2fcl5fis5fqcpool5finited">\r
+Component Library: Quick Composite Pool/cl_is_qcpool_inited</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_qcpool_inited</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_qcpool_inited</strong> function returns whether a quick composite pool was\r
+       successfully initialized.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE uint32_t CL_API\r
+<strong>cl_is_qcpool_inited</strong>(\r
+        IN      const <a href="#robo551">cl_qcpool_t</a>* const        p_pool )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_pool );\r
+        /* CL_ASSERT that the pool is not in some invalid state. */\r
+        CL_ASSERT( <a href="./cl_types_h.html#robo441">cl_is_state_valid</a>( p_pool-&gt;state ) );\r
+\r
+        return( p_pool-&gt;state == CL_INITIALIZED );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo551">cl_qcpool_t</a> structure to check.\r
+\r
+ RETURN VALUES\r
+       TRUE if the quick composite pool was initialized successfully.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows checking the state of a quick composite pool to determine if\r
+       invoking member functions is appropriate.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo540">[Definitions]<a name="Component20Library3a20Quick20Composite20Pool2fcl5fpfn5fqcpool5fdtor5ft">\r
+Component Library: Quick Composite Pool/cl_pfn_qcpool_dtor_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_qcpool_dtor_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_qcpool_dtor_t</strong> function type defines the prototype for\r
+       functions used as destructor for objects being deallocated by a\r
+       quick composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_qcpool_dtor_t</strong>)(\r
+        IN      const <a href="#robo542">cl_pool_item_t</a>* const     p_pool_item,\r
+        IN      void*                                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool_item\r
+               [in] Pointer to a <a href="#robo542">cl_pool_item_t</a> structure representing an object.\r
+\r
+       context\r
+               [in] Context provided in a call to <a href="#robo548">cl_qcpool_init</a>.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the function provided by the user as an optional parameter to the\r
+       <a href="#robo548">cl_qcpool_init</a> function.\r
+\r
+       The destructor is invoked once per allocated object, allowing the user\r
+       to perform any necessary cleanup. Users should not attempt to deallocate\r
+       the memory for the composite object, as the quick composite pool manages\r
+       object allocation and deallocation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo548">cl_qcpool_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo541">[Definitions]<a name="Component20Library3a20Quick20Composite20Pool2fcl5fpfn5fqcpool5finit5ft">\r
+Component Library: Quick Composite Pool/cl_pfn_qcpool_init_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_qcpool_init_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_qcpool_init_t</strong> function type defines the prototype for\r
+       functions used as initializer for objects being allocated by a\r
+       quick composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./cl_types_h.html#robo304">cl_status_t</a>\r
+(CL_API *<strong>cl_pfn_qcpool_init_t</strong>)(\r
+        IN      void** const                    p_comp_array,\r
+        IN      const uint32_t                  num_components,\r
+        IN      void*                                   context,\r
+        OUT     <a href="#robo542">cl_pool_item_t</a>** const  pp_pool_item );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_comp_array\r
+               [in] Pointer to the first entry in an array of pointers, each of\r
+               which points to a component that makes up a composite object.\r
+\r
+       num_components\r
+               [in] Number of components that in the component array.\r
+\r
+       context\r
+               [in] Context provided in a call to <a href="#robo548">cl_qcpool_init</a>.\r
+\r
+       pp_pool_item\r
+               [out] Users should set this pointer to reference the <a href="#robo542">cl_pool_item_t</a>\r
+               structure that represents the composite object.  This pointer must\r
+               not be NULL if the function returns CL_SUCCESS.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Return CL_SUCCESS to indicate that initialization of the object\r
+       was successful and that initialization of further objects may continue.\r
+\r
+       Other <a href="./cl_types_h.html#robo304">cl_status_t</a> values will be returned by <a href="#robo548">cl_qcpool_init</a>\r
+       and <a href="#robo547">cl_qcpool_grow</a>.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the function provided by the user as a parameter to the\r
+       <a href="#robo548">cl_qcpool_init</a> function.\r
+\r
+       The initializer is invoked once per allocated object, allowing the user\r
+       to chain components to form a composite object and perform any necessary\r
+       initialization.  Returning a status other than CL_SUCCESS aborts a grow\r
+       operation, initiated either through <a href="#robo548">cl_qcpool_init</a> or <a href="#robo547">cl_qcpool_grow</a>,\r
+       and causes the initiating function to fail.  Any non-CL_SUCCESS status\r
+       will be returned by the function that initiated the grow operation.\r
+\r
+       All memory for the requested number of components is pre-allocated.  Users\r
+       should include space in one of their components for the <a href="#robo542">cl_pool_item_t</a>\r
+       structure that will represent the composite object to avoid having to\r
+       allocate that structure in the initialization callback.  Alternatively,\r
+       users may specify an additional component for the <a href="#robo542">cl_pool_item_t</a> structure.\r
+\r
+       When later performing a <a href="#robo546">cl_qcpool_get</a> call, the return value is a pointer\r
+       to the <a href="#robo542">cl_pool_item_t</a> returned by this function in the pp_pool_item\r
+       parameter. Users must set pp_pool_item to a valid pointer to the\r
+       <a href="#robo542">cl_pool_item_t</a> representing the object if they return CL_SUCCESS.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo548">cl_qcpool_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo542">[Structures]<a name="Component20Library3a20Quick20Composite20Pool2fcl5fpool5fitem5ft">\r
+Component Library: Quick Composite Pool/cl_pool_item_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pool_item_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pool_item_t</strong> structure is used by pools to store objects.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_pool_item\r
+{\r
+        <a href="./cl_qlist_h.html#robo554">cl_list_item_t</a>          list_item;\r
+#ifdef _DEBUG_\r
+        /* Pad to make the cl_pool_obj structure line up properly */\r
+        void                            *pad;\r
+        /* Pointer to the owner pool used for sanity checks. */\r
+        struct _cl_qcpool       *p_pool;\r
+#endif\r
+\r
+} <strong>cl_pool_item_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       list_item\r
+               Used internally by the pool. Users should not use this field.\r
+\r
+       p_pool\r
+               Used internally by the pool in debug builds to check for consistency.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The pool item structure is defined in such a way as to safely allow\r
+       users to cast from a pool item to a list item for storing items\r
+       retrieved from a quick pool in a quick list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="./cl_qlist_h.html#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo543">[Functions]<a name="Component20Library3a20Quick20Composite20Pool2fcl5fqcpool5fconstruct">\r
+Component Library: Quick Composite Pool/cl_qcpool_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qcpool_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qcpool_construct</strong> function constructs a quick composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qcpool_construct</strong>(\r
+        IN      <a href="#robo551">cl_qcpool_t</a>* const      p_pool );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo551">cl_qcpool_t</a> structure whose state to initialize.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo548">cl_qcpool_init</a>, <a href="#robo545">cl_qcpool_destroy</a>, <a href="#robo539">cl_is_qcpool_inited</a>.\r
+\r
+       Calling <strong>cl_qcpool_construct</strong> is a prerequisite to calling any other\r
+       quick composite pool function except <a href="#robo548">cl_qcpool_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo548">cl_qcpool_init</a>, <a href="#robo545">cl_qcpool_destroy</a>,\r
+       <a href="#robo539">cl_is_qcpool_inited</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo544">[Functions]<a name="Component20Library3a20Quick20Composite20Pool2fcl5fqcpool5fcount">\r
+Component Library: Quick Composite Pool/cl_qcpool_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qcpool_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qcpool_count</strong> function returns the number of available objects\r
+       in a quick composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_qcpool_count</strong>(\r
+        IN      <a href="#robo551">cl_qcpool_t</a>* const      p_pool )\r
+{\r
+        CL_ASSERT( p_pool );\r
+        CL_ASSERT( p_pool-&gt;state == CL_INITIALIZED );\r
+\r
+        return( <a href="./cl_qlist_h.html#robo559">cl_qlist_count</a>( &amp;p_pool-&gt;free_list ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo551">cl_qcpool_t</a> structure for which the number of\r
+               available objects is requested.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the number of objects available in the specified\r
+       quick composite pool.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo545">[Functions]<a name="Component20Library3a20Quick20Composite20Pool2fcl5fqcpool5fdestroy">\r
+Component Library: Quick Composite Pool/cl_qcpool_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qcpool_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qcpool_destroy</strong> function destroys a quick composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qcpool_destroy</strong>(\r
+        IN      <a href="#robo551">cl_qcpool_t</a>* const      p_pool );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo551">cl_qcpool_t</a> structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       All memory allocated for composite objects is freed. The destructor\r
+       callback, if any, will be invoked for every allocated object. Further\r
+       operations on the composite pool should not be attempted after\r
+       <strong>cl_qcpool_destroy</strong> is invoked.\r
+\r
+       This function should only be called after a call to\r
+       <a href="#robo543">cl_qcpool_construct</a> or <a href="#robo548">cl_qcpool_init</a>.\r
+\r
+       In a debug build, <strong>cl_qcpool_destroy</strong> asserts that all objects are in\r
+       the pool.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo543">cl_qcpool_construct</a>, <a href="#robo548">cl_qcpool_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo546">[Functions]<a name="Component20Library3a20Quick20Composite20Pool2fcl5fqcpool5fget">\r
+Component Library: Quick Composite Pool/cl_qcpool_get</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qcpool_get</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qcpool_get</strong> function retrieves an object from a\r
+       quick composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="#robo542">cl_pool_item_t</a>* CL_API\r
+<strong>cl_qcpool_get</strong>(\r
+        IN      <a href="#robo551">cl_qcpool_t</a>* const      p_pool );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo551">cl_qcpool_t</a> structure from which to retrieve\r
+               an object.\r
+\r
+ RETURN VALUES\r
+       Returns a pointer to a <a href="#robo542">cl_pool_item_t</a> for a composite object.\r
+\r
+       Returns NULL if the pool is empty and can not be grown automatically.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qcpool_get</strong> returns the object at the head of the pool. If the pool is\r
+       empty, it is automatically grown to accommodate this request unless the\r
+       grow_size parameter passed to the <a href="#robo548">cl_qcpool_init</a> function was zero.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>, cl_qcpool_get_tail, <a href="#robo549">cl_qcpool_put</a>,\r
+       <a href="#robo547">cl_qcpool_grow</a>, <a href="#robo544">cl_qcpool_count</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo547">[Functions]<a name="Component20Library3a20Quick20Composite20Pool2fcl5fqcpool5fgrow">\r
+Component Library: Quick Composite Pool/cl_qcpool_grow</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qcpool_grow</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qcpool_grow</strong> function grows a quick composite pool by\r
+       the specified number of objects.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_qcpool_grow</strong>(\r
+        IN      <a href="#robo551">cl_qcpool_t</a>* const              p_pool,\r
+        IN      size_t                                  obj_count );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo551">cl_qcpool_t</a> structure whose capacity to grow.\r
+\r
+       obj_count\r
+               [in] Number of objects by which to grow the pool.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the quick composite pool grew successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to grow the\r
+       quick composite pool.\r
+\r
+       <a href="./cl_types_h.html#robo304">cl_status_t</a> value returned by optional initialization callback function\r
+       specified by the pfn_initializer parameter passed to the\r
+       <a href="#robo548">cl_qcpool_init</a> function.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       It is not necessary to call <strong>cl_qcpool_grow</strong> if the pool is\r
+       configured to grow automatically.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo548">[Functions]<a name="Component20Library3a20Quick20Composite20Pool2fcl5fqcpool5finit">\r
+Component Library: Quick Composite Pool/cl_qcpool_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qcpool_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qcpool_init</strong> function initializes a quick composite pool for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_qcpool_init</strong>(\r
+        IN      <a href="#robo551">cl_qcpool_t</a>* const              p_pool,\r
+        IN      const size_t                    min_size,\r
+        IN      const size_t                    max_size,\r
+        IN      const size_t                    grow_size,\r
+        IN      const size_t* const             component_sizes,\r
+        IN      const uint32_t                  num_components,\r
+        IN      <a href="#robo541">cl_pfn_qcpool_init_t</a>    pfn_initializer OPTIONAL,\r
+        IN      <a href="#robo540">cl_pfn_qcpool_dtor_t</a>    pfn_destructor OPTIONAL,\r
+        IN      const void* const               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo551">cl_qcpool_t</a> structure to initialize.\r
+\r
+       min_size\r
+               [in] Minimum number of objects that the pool should support. All\r
+               necessary allocations to allow storing the minimum number of items\r
+               are performed at initialization time, and all necessary callbacks\r
+               successfully invoked.\r
+\r
+       max_size\r
+               [in] Maximum number of objects to which the pool is allowed to grow.\r
+               A value of zero specifies no maximum.\r
+\r
+       grow_size\r
+               [in] Number of objects to allocate when incrementally growing the pool.\r
+               A value of zero disables automatic growth.\r
+\r
+       component_sizes\r
+               [in] Pointer to the first entry in an array of sizes describing,\r
+               in order, the sizes of the components that make up a composite object.\r
+\r
+       num_components\r
+               [in] Number of components that make up a composite object.\r
+\r
+       pfn_initializer\r
+               [in] Initializer callback to invoke for every new object when growing\r
+               the pool. This parameter may be NULL only if the objects stored in\r
+               the quick composite pool consist of only one component. If NULL, the\r
+               pool assumes the <a href="#robo542">cl_pool_item_t</a> structure describing objects is\r
+               located at the head of each object. See the <a href="#robo541">cl_pfn_qcpool_init_t</a>\r
+               function type declaration for details about the callback function.\r
+\r
+       pfn_destructor\r
+               [in] Destructor callback to invoke for every object before memory for\r
+               that object is freed. This parameter is optional and may be NULL.\r
+               See the <a href="#robo540">cl_pfn_qcpool_dtor_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the quick composite pool was initialized successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize the\r
+       quick composite pool.\r
+\r
+       CL_INVALID_SETTING if a NULL constructor was provided for composite objects\r
+       consisting of more than one component.  Also returns CL_INVALID_SETTING if\r
+       the maximum size is non-zero and less than the minimum size.\r
+\r
+       Other <a href="./cl_types_h.html#robo304">cl_status_t</a> value returned by optional initialization callback function\r
+       specified by the pfn_initializer parameter.\r
+\r
+       If initialization fails, the pool is left in a destroyed state.  Callers\r
+       may still safely call <a href="#robo545">cl_qcpool_destroy</a>.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qcpool_init</strong> initializes, and if necessary, grows the pool to\r
+       the capacity desired.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo543">cl_qcpool_construct</a>, <a href="#robo545">cl_qcpool_destroy</a>,\r
+       <a href="#robo546">cl_qcpool_get</a>, <a href="#robo549">cl_qcpool_put</a>, <a href="#robo547">cl_qcpool_grow</a>,\r
+       <a href="#robo544">cl_qcpool_count</a>, <a href="#robo541">cl_pfn_qcpool_init_t</a>, <a href="#robo540">cl_pfn_qcpool_dtor_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo549">[Functions]<a name="Component20Library3a20Quick20Composite20Pool2fcl5fqcpool5fput">\r
+Component Library: Quick Composite Pool/cl_qcpool_put</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qcpool_put</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qcpool_put</strong> function returns an object to a quick composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qcpool_put</strong>(\r
+        IN      <a href="#robo551">cl_qcpool_t</a>* const              p_pool,\r
+        IN      <a href="#robo542">cl_pool_item_t</a>* const   p_pool_item )\r
+{\r
+        CL_ASSERT( p_pool );\r
+        CL_ASSERT( p_pool-&gt;state == CL_INITIALIZED );\r
+        CL_ASSERT( p_pool_item );\r
+        /* Make sure items being returned came from the specified pool. */\r
+        CL_ASSERT( p_pool_item-&gt;p_pool == p_pool );\r
+\r
+        /* return this lil' doggy to the pool */\r
+        <a href="./cl_qlist_h.html#robo569">cl_qlist_insert_head</a>( &amp;p_pool-&gt;free_list, &amp;p_pool_item-&gt;list_item );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo551">cl_qcpool_t</a> structure to which to return\r
+               an object.\r
+\r
+       p_pool_item\r
+               [in] Pointer to a <a href="#robo542">cl_pool_item_t</a> structure for the object\r
+               being returned.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qcpool_put</strong> places the returned object at the head of the pool.\r
+\r
+       The object specified by the p_pool_item parameter must have been\r
+       retrieved from the pool by a previous call to <a href="#robo546">cl_qcpool_get</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>, cl_qcpool_put_tail, <a href="#robo546">cl_qcpool_get</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo550">[Functions]<a name="Component20Library3a20Quick20Composite20Pool2fcl5fqcpool5fput5flist">\r
+Component Library: Quick Composite Pool/cl_qcpool_put_list</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qcpool_put_list</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qcpool_put_list</strong> function returns a list of objects to the head of\r
+       a quick composite pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qcpool_put_list</strong>(\r
+        IN      <a href="#robo551">cl_qcpool_t</a>* const      p_pool,\r
+        IN      <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a>* const       p_list )\r
+{\r
+#ifdef _DEBUG_\r
+        <a href="./cl_qlist_h.html#robo554">cl_list_item_t</a>  *p_item;\r
+#endif\r
+\r
+        CL_ASSERT( p_pool );\r
+        CL_ASSERT( p_pool-&gt;state == CL_INITIALIZED );\r
+        CL_ASSERT( p_list );\r
+\r
+#ifdef _DEBUG_\r
+        /* Chech that all items in the list came from this pool. */\r
+        p_item = <a href="./cl_qlist_h.html#robo565">cl_qlist_head</a>( p_list );\r
+        while( p_item != <a href="./cl_qlist_h.html#robo560">cl_qlist_end</a>( p_list ) )\r
+        {\r
+                CL_ASSERT( ((<a href="#robo542">cl_pool_item_t</a>*)p_item)-&gt;p_pool == p_pool );\r
+                p_item = <a href="./cl_qlist_h.html#robo576">cl_qlist_next</a>( p_item );\r
+        }\r
+#endif\r
+\r
+        /* return these lil' doggies to the pool */\r
+        <a href="./cl_qlist_h.html#robo570">cl_qlist_insert_list_head</a>( &amp;p_pool-&gt;free_list, p_list );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo551">cl_qcpool_t</a> structure to which to return\r
+               a list of objects.\r
+\r
+       p_list\r
+               [in] Pointer to a <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a> structure for the list of objects\r
+               being returned.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qcpool_put_list</strong> places the returned objects at the head of the pool.\r
+\r
+       The objects in the list specified by the p_list parameter must have been\r
+       retrieved from the pool by a previous call to <a href="#robo546">cl_qcpool_get</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo549">cl_qcpool_put</a>, cl_qcpool_put_tail, <a href="#robo546">cl_qcpool_get</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo551">[Structures]<a name="Component20Library3a20Quick20Composite20Pool2fcl5fqcpool5ft">\r
+Component Library: Quick Composite Pool/cl_qcpool_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qcpool_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Quick composite pool structure.\r
+\r
+       The <strong>cl_qcpool_t</strong> structure should be treated as opaque and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_qcpool\r
+{\r
+        uint32_t                                num_components;\r
+        size_t                                  *component_sizes;\r
+        void                                    **p_components;\r
+        size_t                                  num_objects;\r
+        size_t                                  max_objects;\r
+        size_t                                  grow_size;\r
+        <a href="#robo541">cl_pfn_qcpool_init_t</a>    pfn_init;\r
+        <a href="#robo540">cl_pfn_qcpool_dtor_t</a>    pfn_dtor;\r
+        const void                              *context;\r
+        <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a>                              free_list;\r
+        <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a>                              alloc_list;\r
+        cl_state_t                              state;\r
+\r
+} <strong>cl_qcpool_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       num_components\r
+               Number of components per object.\r
+\r
+       component_sizes\r
+               Array of sizes, one for each component.\r
+\r
+       p_components\r
+               Array of pointers to components, used for the constructor callback.\r
+\r
+       num_objects\r
+               Number of objects managed by the pool\r
+\r
+       grow_size\r
+               Number of objects to add when automatically growing the pool.\r
+\r
+       pfn_init\r
+               Pointer to the user's initializer callback to invoke when initializing\r
+               new objects.\r
+\r
+       pfn_dtor\r
+               Pointer to the user's destructor callback to invoke before deallocating\r
+               memory allocated for objects.\r
+\r
+       context\r
+               User's provided context for callback functions, used by the pool\r
+               when invoking callbacks.\r
+\r
+       free_list\r
+               Quick list of objects available.\r
+\r
+       alloc_list\r
+               Quick list used to store information about allocations.\r
+\r
+       state\r
+               State of the pool.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Composite <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_qlist_h.html b/trunk/docs/complib/cl_qlist_h.html
new file mode 100644 (file)
index 0000000..a6c4d7d
--- /dev/null
@@ -0,0 +1,1728 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_qlist_h.html</title>\r
+<!-- Source: ./inc/complib/cl_qlist.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_qlist.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo26">[Modules]<a name="Component20Library2fQuick20List">\r
+Component Library/Quick List</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Quick list implements a doubly linked that stores user provided\r
+       <a href="#robo554">cl_list_item_t</a> structures.\r
+       Quick list does not allocate any memory, and can therefore not fail any\r
+       operations.  Quick list can therefore be useful in minimizing the error\r
+       paths in code.\r
+\r
+       Quick list is not thread safe, and users must provide serialization when\r
+       adding and removing items from the list. Note that it is possible to\r
+       walk a quick list while simultaneously adding to it.\r
+\r
+       The Quick <a href="./cl_list_h.html#robo15">List</a> functions operate on a <a href="#robo584">cl_qlist_t</a> structure which should be\r
+       treated as opaque and should be manipulated only through the provided\r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo584">cl_qlist_t</a>, <a href="#robo554">cl_list_item_t</a>, <a href="#robo555">cl_list_obj_t</a>\r
+\r
+       Callbacks:\r
+               <a href="#robo556">cl_pfn_qlist_apply_t</a>, <a href="#robo557">cl_pfn_qlist_find_t</a>\r
+\r
+       Item Manipulation:\r
+               <a href="#robo583">cl_qlist_set_obj</a>, <a href="#robo577">cl_qlist_obj</a>\r
+\r
+       Initialization:\r
+               <a href="#robo566">cl_qlist_init</a>\r
+\r
+       Iteration:\r
+               <a href="#robo576">cl_qlist_next</a>, <a href="#robo578">cl_qlist_prev</a>, <a href="#robo565">cl_qlist_head</a>, <a href="#robo585">cl_qlist_tail</a>,\r
+               <a href="#robo560">cl_qlist_end</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo569">cl_qlist_insert_head</a>, <a href="#robo574">cl_qlist_insert_tail</a>,\r
+               <a href="#robo570">cl_qlist_insert_list_head</a>, <a href="#robo571">cl_qlist_insert_list_tail</a>,\r
+               <a href="#robo567">cl_qlist_insert_array_head</a>, <a href="#robo568">cl_qlist_insert_array_tail</a>,\r
+               <a href="#robo573">cl_qlist_insert_prev</a>, <a href="#robo572">cl_qlist_insert_next</a>,\r
+               <a href="#robo580">cl_qlist_remove_head</a>, <a href="#robo582">cl_qlist_remove_tail</a>,\r
+               <a href="#robo581">cl_qlist_remove_item</a>, <a href="#robo579">cl_qlist_remove_all</a>\r
+\r
+       Search:\r
+               <a href="#robo552">cl_is_item_in_qlist</a>, <a href="#robo563">cl_qlist_find_next</a>, <a href="#robo564">cl_qlist_find_prev</a>,\r
+               <a href="#robo561">cl_qlist_find_from_head</a>, <a href="#robo562">cl_qlist_find_from_tail</a>\r
+               <a href="#robo558">cl_qlist_apply_func</a>, <a href="#robo575">cl_qlist_move_items</a>\r
+\r
+       Attributes:\r
+               <a href="#robo559">cl_qlist_count</a>, <a href="#robo553">cl_is_qlist_empty</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo552">[Functions]<a name="Component20Library3a20Quick20List2fcl5fis5fitem5fin5fqlist">\r
+Component Library: Quick List/cl_is_item_in_qlist</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_item_in_qlist</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_item_in_qlist</strong> function checks for the presence of a\r
+       list item in a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT boolean_t CL_API\r
+<strong>cl_is_item_in_qlist</strong>(\r
+        IN      const <a href="#robo584">cl_qlist_t</a>* const         p_list,\r
+        IN      const <a href="#robo554">cl_list_item_t</a>* const     p_list_item );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure.\r
+\r
+       p_list_item\r
+               [in] Pointer to the <a href="#robo554">cl_list_item_t</a> to find.\r
+\r
+ RETURN VALUES\r
+       TRUE if the list item was found in the quick list.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo581">cl_qlist_remove_item</a>, <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo553">[Functions]<a name="Component20Library3a20Quick20List2fcl5fis5fqlist5fempty">\r
+Component Library: Quick List/cl_is_qlist_empty</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_qlist_empty</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_qlist_empty</strong> function returns whether a quick list is empty.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE boolean_t CL_API\r
+<strong>cl_is_qlist_empty</strong>(\r
+        IN      const <a href="#robo584">cl_qlist_t</a>* const p_list )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+\r
+        return( !<a href="#robo559">cl_qlist_count</a>( p_list ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure.\r
+\r
+ RETURN VALUES\r
+       TRUE if the specified quick list is empty.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo559">cl_qlist_count</a>, <a href="#robo579">cl_qlist_remove_all</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo554">[Structures]<a name="Component20Library3a20Quick20List2fcl5flist5fitem5ft">\r
+Component Library: Quick List/cl_list_item_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_item_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_item_t</strong> structure is used by lists to store objects.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_list_item\r
+{\r
+        struct _cl_list_item    *p_next;\r
+        struct _cl_list_item    *p_prev;\r
+#ifdef _DEBUG_\r
+        struct _cl_qlist                *p_list;\r
+#endif\r
+\r
+} <strong>cl_list_item_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       p_next\r
+               Used internally by the list. Users should not use this field.\r
+\r
+       p_prev\r
+               Used internally by the list. Users should not use this field.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo555">[Structures]<a name="Component20Library3a20Quick20List2fcl5flist5fobj5ft">\r
+Component Library: Quick List/cl_list_obj_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_list_obj_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_list_obj_t</strong> structure is used by lists to store objects.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _<a href="./cl_list_h.html#robo383">cl_list_obj</a>\r
+{\r
+        <a href="#robo554">cl_list_item_t</a>          list_item;\r
+        const void                      *p_object;              /* User's context */\r
+\r
+} <strong>cl_list_obj_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       list_item\r
+               Used internally by the list. Users should not use this field.\r
+\r
+       p_object\r
+               User defined context. Users should not access this field directly.\r
+               Use <a href="#robo583">cl_qlist_set_obj</a> and <a href="#robo577">cl_qlist_obj</a> to set and retrieve the value\r
+               of this field.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Users can use the <a href="#robo583">cl_qlist_set_obj</a> and <a href="#robo577">cl_qlist_obj</a> functions to store\r
+       and retrieve context information in the list item.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo583">cl_qlist_set_obj</a>, <a href="#robo577">cl_qlist_obj</a>, <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo556">[Definitions]<a name="Component20Library3a20Quick20List2fcl5fpfn5fqlist5fapply5ft">\r
+Component Library: Quick List/cl_pfn_qlist_apply_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_qlist_apply_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_qlist_apply_t</strong> function type defines the prototype for functions\r
+       used to iterate items in a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_qlist_apply_t</strong>)(\r
+        IN      <a href="#robo554">cl_list_item_t</a>* const   p_list_item,\r
+        IN      void*                                   context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list_item\r
+               [in] Pointer to a <a href="#robo554">cl_list_item_t</a> structure.\r
+\r
+       context\r
+               [in] Value passed to the callback function.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for the\r
+       function provided by users as a parameter to the <a href="#robo558">cl_qlist_apply_func</a>\r
+       function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo558">cl_qlist_apply_func</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo557">[Definitions]<a name="Component20Library3a20Quick20List2fcl5fpfn5fqlist5ffind5ft">\r
+Component Library: Quick List/cl_pfn_qlist_find_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_qlist_find_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_qlist_find_t</strong> function type defines the prototype for functions\r
+       used to find items in a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./cl_types_h.html#robo304">cl_status_t</a>\r
+(CL_API *<strong>cl_pfn_qlist_find_t</strong>)(\r
+        IN      const <a href="#robo554">cl_list_item_t</a>* const     p_list_item,\r
+        IN      void*                                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list_item\r
+               [in] Pointer to a <a href="#robo554">cl_list_item_t</a>.\r
+\r
+       context\r
+               [in] Value passed to the callback function.\r
+\r
+ RETURN VALUES\r
+       Return CL_SUCCESS if the desired item was found. This stops list iteration.\r
+\r
+       Return CL_NOT_FOUND to continue list iteration.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for the\r
+       function provided by users as a parameter to the <a href="#robo561">cl_qlist_find_from_head</a>,\r
+       <a href="#robo562">cl_qlist_find_from_tail</a>, <a href="#robo563">cl_qlist_find_next</a>, and <a href="#robo564">cl_qlist_find_prev</a>\r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo561">cl_qlist_find_from_head</a>, <a href="#robo562">cl_qlist_find_from_tail</a>,\r
+       <a href="#robo563">cl_qlist_find_next</a>, <a href="#robo564">cl_qlist_find_prev</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo558">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5fapply5ffunc">\r
+Component Library: Quick List/cl_qlist_apply_func</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_apply_func</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_apply_func</strong> function executes a specified function\r
+       for every list item stored in a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qlist_apply_func</strong>(\r
+        IN      const <a href="#robo584">cl_qlist_t</a>* const p_list,\r
+        IN      <a href="#robo556">cl_pfn_qlist_apply_t</a>    pfn_func,\r
+        IN      const void* const               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure.\r
+\r
+       pfn_func\r
+               [in] Function invoked for every item in the quick list.\r
+               See the <a href="#robo556">cl_pfn_qlist_apply_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The function provided must not perform any list operations, as these\r
+       would corrupt the quick list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo561">cl_qlist_find_from_head</a>, <a href="#robo562">cl_qlist_find_from_tail</a>,\r
+       <a href="#robo575">cl_qlist_move_items</a>, <a href="#robo556">cl_pfn_qlist_apply_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo559">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5fcount">\r
+Component Library: Quick List/cl_qlist_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_count</strong> function returns the number of list items stored\r
+       in a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_qlist_count</strong>(\r
+        IN      const <a href="#robo584">cl_qlist_t</a>* const p_list )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+\r
+        return( p_list-&gt;count );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Number of items in the list.  This function iterates though the quick\r
+       list to count the items.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo553">cl_is_qlist_empty</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo560">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5fend">\r
+Component Library: Quick List/cl_qlist_end</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_end</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_end</strong> function returns the end of a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE const <a href="#robo554">cl_list_item_t</a>* const CL_API\r
+<strong>cl_qlist_end</strong>(\r
+        IN      const <a href="#robo584">cl_qlist_t</a>* const p_list )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+\r
+        return( &amp;p_list-&gt;end );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Pointer to the end of the list.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qlist_end</strong> is useful for determining the validity of list items returned\r
+       by <a href="#robo565">cl_qlist_head</a>, <a href="#robo585">cl_qlist_tail</a>, <a href="#robo576">cl_qlist_next</a>, <a href="#robo578">cl_qlist_prev</a>, as well as\r
+       the cl_qlist_find functions.  If the list item pointer returned by any of\r
+       these functions compares to the end, the end of the list was encoutered.\r
+       When using <a href="#robo565">cl_qlist_head</a> or <a href="#robo585">cl_qlist_tail</a>, this condition indicates that\r
+       the list is empty.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo565">cl_qlist_head</a>, <a href="#robo585">cl_qlist_tail</a>, <a href="#robo576">cl_qlist_next</a>, <a href="#robo578">cl_qlist_prev</a>,\r
+       <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo561">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5ffind5ffrom5fhead">\r
+Component Library: Quick List/cl_qlist_find_from_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_find_from_head</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_find_from_head</strong> function invokes a specified function to\r
+       search for an item, starting at the head of a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo554">cl_list_item_t</a>* CL_API\r
+<strong>cl_qlist_find_from_head</strong>(\r
+        IN      const <a href="#robo584">cl_qlist_t</a>* const p_list,\r
+        IN      <a href="#robo557">cl_pfn_qlist_find_t</a>             pfn_func,\r
+        IN      const void* const               context )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+        /* CL_ASSERT that a find function is provided. */\r
+        CL_ASSERT( pfn_func );\r
+\r
+        return( <a href="#robo563">cl_qlist_find_next</a>( p_list, <a href="#robo560">cl_qlist_end</a>( p_list ), pfn_func,\r
+                context ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure.\r
+\r
+       pfn_func\r
+               [in] Function invoked to determine if a match was found.\r
+               See the <a href="#robo557">cl_pfn_qlist_find_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context if a\r
+               callback function is provided, or value compared to the quick list's\r
+               list items.\r
+\r
+ Returns:\r
+       Pointer to the list item, if found.\r
+\r
+       Pointer to the list end otherwise\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qlist_find_from_head</strong> does not remove list items from the list.\r
+       The list item is returned when the function specified by the pfn_func\r
+       parameter returns CL_SUCCESS.\r
+\r
+       The function provided by the pfn_func parameter must not perform any list\r
+       operations, as these would corrupt the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo562">cl_qlist_find_from_tail</a>, <a href="#robo563">cl_qlist_find_next</a>, <a href="#robo564">cl_qlist_find_prev</a>,\r
+       <a href="#robo560">cl_qlist_end</a>, <a href="#robo558">cl_qlist_apply_func</a>, <a href="#robo575">cl_qlist_move_items</a>, <a href="#robo554">cl_list_item_t</a>,\r
+       <a href="#robo557">cl_pfn_qlist_find_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo562">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5ffind5ffrom5ftail">\r
+Component Library: Quick List/cl_qlist_find_from_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_find_from_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_find_from_tail</strong> function invokes a specified function to\r
+       search for an item, starting at the tail of a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo554">cl_list_item_t</a>* CL_API\r
+<strong>cl_qlist_find_from_tail</strong>(\r
+        IN      const <a href="#robo584">cl_qlist_t</a>* const p_list,\r
+        IN      <a href="#robo557">cl_pfn_qlist_find_t</a>             pfn_func,\r
+        IN      const void* const               context )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+        /* CL_ASSERT that a find function is provided. */\r
+        CL_ASSERT( pfn_func );\r
+\r
+        return( <a href="#robo564">cl_qlist_find_prev</a>( p_list, <a href="#robo560">cl_qlist_end</a>( p_list ), pfn_func,\r
+                context ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure.\r
+\r
+       pfn_func\r
+               [in] Function invoked to determine if a match was found.\r
+               See the <a href="#robo557">cl_pfn_qlist_find_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context if a\r
+               callback function is provided, or value compared to the quick list's\r
+               list items.\r
+\r
+ Returns:\r
+       Pointer to the list item, if found.\r
+\r
+       Pointer to the list end otherwise\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qlist_find_from_tail</strong> does not remove list items from the list.\r
+       The list item is returned when the function specified by the pfn_func\r
+       parameter returns CL_SUCCESS.\r
+\r
+       The function provided by the pfn_func parameter must not perform any list\r
+       operations, as these would corrupt the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo561">cl_qlist_find_from_head</a>, <a href="#robo563">cl_qlist_find_next</a>, <a href="#robo564">cl_qlist_find_prev</a>,\r
+       <a href="#robo558">cl_qlist_apply_func</a>, <a href="#robo560">cl_qlist_end</a>, <a href="#robo575">cl_qlist_move_items</a>, <a href="#robo554">cl_list_item_t</a>,\r
+       <a href="#robo557">cl_pfn_qlist_find_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo563">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5ffind5fnext">\r
+Component Library: Quick List/cl_qlist_find_next</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_find_next</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_find_next</strong> function invokes a specified function to\r
+       search for an item, starting from a given list item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="#robo554">cl_list_item_t</a>* CL_API\r
+<strong>cl_qlist_find_next</strong>(\r
+        IN      const <a href="#robo584">cl_qlist_t</a>* const         p_list,\r
+        IN      const <a href="#robo554">cl_list_item_t</a>* const     p_list_item,\r
+        IN      <a href="#robo557">cl_pfn_qlist_find_t</a>                     pfn_func,\r
+        IN      const void* const                       context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure in which to search.\r
+\r
+       p_list_item\r
+               [in] Pointer to a <a href="#robo554">cl_list_item_t</a> structure from which to start the search.\r
+\r
+       pfn_func\r
+               [in] Function invoked to determine if a match was found.\r
+               See the <a href="#robo557">cl_pfn_qlist_find_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context if a\r
+               callback function is provided, or value compared to the quick list's\r
+               list items.\r
+\r
+ Returns:\r
+       Pointer to the list item, if found.\r
+\r
+       p_list_item if not found.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qlist_find_next</strong> does not remove list items from the list.\r
+       The list item is returned when the function specified by the pfn_func\r
+       parameter returns CL_SUCCESS.  The list item from which the search starts is\r
+       excluded from the search.\r
+\r
+       The function provided by the pfn_func must not perform any list operations,\r
+       as these would corrupt the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo564">cl_qlist_find_prev</a>, <a href="#robo561">cl_qlist_find_from_head</a>,\r
+       <a href="#robo562">cl_qlist_find_from_tail</a>, <a href="#robo560">cl_qlist_end</a>, <a href="#robo558">cl_qlist_apply_func</a>,\r
+       <a href="#robo575">cl_qlist_move_items</a>, <a href="#robo554">cl_list_item_t</a>, <a href="#robo557">cl_pfn_qlist_find_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo564">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5ffind5fprev">\r
+Component Library: Quick List/cl_qlist_find_prev</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_find_prev</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_find_prev</strong> function invokes a specified function to\r
+       search backward for an item, starting from a given list item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="#robo554">cl_list_item_t</a>* CL_API\r
+<strong>cl_qlist_find_prev</strong>(\r
+        IN      const <a href="#robo584">cl_qlist_t</a>* const         p_list,\r
+        IN      const <a href="#robo554">cl_list_item_t</a>* const     p_list_item,\r
+        IN      <a href="#robo557">cl_pfn_qlist_find_t</a>                     pfn_func,\r
+        IN      const void* const                       context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure in which to search.\r
+\r
+       p_list_item\r
+               [in] Pointer to a <a href="#robo554">cl_list_item_t</a> structure from which to start the search.\r
+\r
+       pfn_func\r
+               [in] Function invoked to determine if a match was found.\r
+               See the <a href="#robo557">cl_pfn_qlist_find_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context if a\r
+               callback function is provided, or value compared to the quick list's\r
+               list items.\r
+\r
+ Returns:\r
+       Pointer to the list item, if found.\r
+\r
+       p_list_item if not found.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qlist_find_prev</strong> does not remove list items from the list.\r
+       The list item is returned when the function specified by the pfn_func\r
+       parameter returns CL_SUCCESS.  The list item from which the search starts is\r
+       excluded from the search.\r
+\r
+       The function provided by the pfn_func must not perform any list operations,\r
+       as these would corrupt the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo563">cl_qlist_find_next</a>, <a href="#robo561">cl_qlist_find_from_head</a>,\r
+       <a href="#robo562">cl_qlist_find_from_tail</a>, <a href="#robo560">cl_qlist_end</a>, <a href="#robo558">cl_qlist_apply_func</a>,\r
+       <a href="#robo575">cl_qlist_move_items</a>, <a href="#robo554">cl_list_item_t</a>, <a href="#robo557">cl_pfn_qlist_find_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo565">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5fhead">\r
+Component Library: Quick List/cl_qlist_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_head</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_head</strong> function returns the list item at\r
+       the head of a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo554">cl_list_item_t</a>* CL_API\r
+<strong>cl_qlist_head</strong>(\r
+        IN      const <a href="#robo584">cl_qlist_t</a>* const p_list )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+\r
+        return( <a href="#robo576">cl_qlist_next</a>( &amp;p_list-&gt;end ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure.\r
+\r
+ RETURN VALUES\r
+       Pointer to the list item at the head of the quick list.\r
+\r
+       Pointer to the list end if the list was empty.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qlist_head</strong> does not remove the item from the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo585">cl_qlist_tail</a>, <a href="#robo576">cl_qlist_next</a>, <a href="#robo578">cl_qlist_prev</a>, <a href="#robo560">cl_qlist_end</a>,\r
+       <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo566">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5finit">\r
+Component Library: Quick List/cl_qlist_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_init</strong> function initializes a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qlist_init</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const       p_list )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+\r
+        p_list-&gt;state = CL_INITIALIZED;\r
+\r
+        /* Reset the quick list data structure. */\r
+        __cl_qlist_reset( p_list );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure to initialize.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling quick list manipulation functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo569">cl_qlist_insert_head</a>, <a href="#robo574">cl_qlist_insert_tail</a>,\r
+       <a href="#robo580">cl_qlist_remove_head</a>, <a href="#robo582">cl_qlist_remove_tail</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo567">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5finsert5farray5fhead">\r
+Component Library: Quick List/cl_qlist_insert_array_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_insert_array_head</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_insert_array_head</strong> function inserts an array of list items\r
+       at the head of a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qlist_insert_array_head</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const               p_list,\r
+        IN      <a href="#robo554">cl_list_item_t</a>* const   p_array,\r
+        IN      size_t                                  item_count,\r
+        IN      const size_t                    item_size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure into which to insert\r
+               the objects.\r
+\r
+       p_array\r
+               [in] Pointer to the first list item in an array of <a href="#robo554">cl_list_item_t</a>\r
+               structures.\r
+\r
+       item_count\r
+               [in] Number of <a href="#robo554">cl_list_item_t</a> structures in the array.\r
+\r
+       item_size\r
+               [in] Size of the items added to the list. This is the stride in the\r
+               array from one <a href="#robo554">cl_list_item_t</a> structure to the next.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Inserts all the list items in the array specified by the p_array parameter\r
+       to the head of the quick list specified by the p_list parameter,\r
+       preserving ordering of the list items.\r
+\r
+       The array pointer passed into the function points to the <a href="#robo554">cl_list_item_t</a>\r
+       in the first element of the caller's element array.  There is no\r
+       restriction on where the element is stored in the parent structure.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo568">cl_qlist_insert_array_tail</a>, <a href="#robo569">cl_qlist_insert_head</a>,\r
+       <a href="#robo574">cl_qlist_insert_tail</a>, <a href="#robo570">cl_qlist_insert_list_head</a>, <a href="#robo571">cl_qlist_insert_list_tail</a>,\r
+       <a href="#robo573">cl_qlist_insert_prev</a>, <a href="#robo572">cl_qlist_insert_next</a>, <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo568">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5finsert5farray5ftail">\r
+Component Library: Quick List/cl_qlist_insert_array_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_insert_array_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_insert_array_tail</strong> function inserts an array of list items\r
+       at the tail of a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qlist_insert_array_tail</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const               p_list,\r
+        IN      <a href="#robo554">cl_list_item_t</a>* const   p_array,\r
+        IN      size_t                                  item_count,\r
+        IN      const size_t                    item_size);\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure into which to insert\r
+               the objects.\r
+\r
+       p_array\r
+               [in] Pointer to the first list item in an array of <a href="#robo554">cl_list_item_t</a>\r
+               structures.\r
+\r
+       item_count\r
+               [in] Number of <a href="#robo554">cl_list_item_t</a> structures in the array.\r
+\r
+       item_size\r
+               [in] Size of the items added to the list. This is the stride in the\r
+               array from one <a href="#robo554">cl_list_item_t</a> structure to the next.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Inserts all the list items in the array specified by the p_array parameter\r
+       to the tail of the quick list specified by the p_list parameter,\r
+       preserving ordering of the list items.\r
+\r
+       The array pointer passed into the function points to the <a href="#robo554">cl_list_item_t</a>\r
+       in the first element of the caller's element array.  There is no\r
+       restriction on where the element is stored in the parent structure.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo567">cl_qlist_insert_array_head</a>, <a href="#robo569">cl_qlist_insert_head</a>,\r
+       <a href="#robo574">cl_qlist_insert_tail</a>, <a href="#robo570">cl_qlist_insert_list_head</a>, <a href="#robo571">cl_qlist_insert_list_tail</a>,\r
+       <a href="#robo573">cl_qlist_insert_prev</a>, <a href="#robo572">cl_qlist_insert_next</a>, <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo569">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5finsert5fhead">\r
+Component Library: Quick List/cl_qlist_insert_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_insert_head</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_insert_head</strong> function inserts a list item at the\r
+       head of a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qlist_insert_head</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const               p_list,\r
+        IN      <a href="#robo554">cl_list_item_t</a>* const   p_list_item )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list_item );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+\r
+        /*\r
+         * The list item must not already be part of the list.  Note that this\r
+         * assertion may fail if an uninitialized list item happens to have its\r
+         * list pointer equal to the specified list.  The chances of this\r
+         * happening are acceptable in light of the value of this check.\r
+         */\r
+        CL_ASSERT( p_list_item-&gt;p_list != p_list );\r
+\r
+#if defined( _DEBUG_ )\r
+        p_list_item-&gt;p_list = p_list;\r
+#endif\r
+\r
+        /* Insert before the head. */\r
+        __cl_primitive_insert( <a href="#robo565">cl_qlist_head</a>( p_list ), p_list_item );\r
+\r
+        p_list-&gt;count++;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure into which to insert the object.\r
+\r
+       p_list_item\r
+               [in] Pointer to a <a href="#robo554">cl_list_item_t</a> structure to add.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       In debug builds, <strong>cl_qlist_insert_head</strong> asserts that the specified list item\r
+       is not already in the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo574">cl_qlist_insert_tail</a>, <a href="#robo570">cl_qlist_insert_list_head</a>,\r
+       <a href="#robo571">cl_qlist_insert_list_tail</a>, <a href="#robo567">cl_qlist_insert_array_head</a>,\r
+       <a href="#robo568">cl_qlist_insert_array_tail</a>, <a href="#robo573">cl_qlist_insert_prev</a>, <a href="#robo572">cl_qlist_insert_next</a>,\r
+       <a href="#robo580">cl_qlist_remove_head</a>, <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo570">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5finsert5flist5fhead">\r
+Component Library: Quick List/cl_qlist_insert_list_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_insert_list_head</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_insert_list_head</strong> function merges two quick lists by\r
+       inserting one at the head of the other.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qlist_insert_list_head</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const       p_dest_list,\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const       p_src_list );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dest_list\r
+               [in] Pointer to destination quicklist object.\r
+\r
+       p_src_list\r
+               [in] Pointer to quicklist to add.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Inserts all list items in the source list to the head of the\r
+       destination list. The ordering of the list items is preserved.\r
+\r
+       The list pointed to by the p_src_list parameter is empty when\r
+       the call returns.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo571">cl_qlist_insert_list_tail</a>, <a href="#robo569">cl_qlist_insert_head</a>,\r
+       <a href="#robo574">cl_qlist_insert_tail</a>, <a href="#robo567">cl_qlist_insert_array_head</a>,\r
+       <a href="#robo568">cl_qlist_insert_array_tail</a>, <a href="#robo573">cl_qlist_insert_prev</a>, <a href="#robo572">cl_qlist_insert_next</a>,\r
+       <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo571">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5finsert5flist5ftail">\r
+Component Library: Quick List/cl_qlist_insert_list_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_insert_list_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_insert_list_tail</strong> function merges two quick lists by\r
+       inserting one at the tail of the other.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qlist_insert_list_tail</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const       p_dest_list,\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const       p_src_list );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dest_list\r
+               [in] Pointer to destination quicklist object\r
+\r
+       p_src_list\r
+               [in] Pointer to quicklist to add\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Inserts all list items in the source list to the tail of the\r
+       destination list. The ordering of the list items is preserved.\r
+\r
+       The list pointed to by the p_src_list parameter is empty when\r
+       the call returns.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo570">cl_qlist_insert_list_head</a>, <a href="#robo569">cl_qlist_insert_head</a>,\r
+       <a href="#robo574">cl_qlist_insert_tail</a>, <a href="#robo567">cl_qlist_insert_array_head</a>,\r
+       <a href="#robo568">cl_qlist_insert_array_tail</a>, <a href="#robo573">cl_qlist_insert_prev</a>, <a href="#robo572">cl_qlist_insert_next</a>,\r
+       <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo572">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5finsert5fnext">\r
+Component Library: Quick List/cl_qlist_insert_next</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_insert_next</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_insert_next</strong> function inserts a list item after a specified\r
+       list item in a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qlist_insert_next</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const               p_list,\r
+        IN      <a href="#robo554">cl_list_item_t</a>* const   p_list_item,\r
+        IN      <a href="#robo554">cl_list_item_t</a>* const   p_new_item )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list_item );\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_new_item );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+\r
+        /*\r
+         * The list item must not already be part of the list.  Note that this\r
+         * assertion may fail if an uninitialized list item happens to have its\r
+         * list pointer equal to the specified list.  The chances of this\r
+         * happening are acceptable in light of the value of this check.\r
+         */\r
+        CL_ASSERT( p_new_item-&gt;p_list != p_list );\r
+\r
+#if defined( _DEBUG_ )\r
+        p_new_item-&gt;p_list = p_list;\r
+#endif\r
+\r
+        __cl_primitive_insert( <a href="#robo576">cl_qlist_next</a>( p_list_item ), p_new_item );\r
+\r
+        p_list-&gt;count++;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure into which to add the new item.\r
+\r
+       p_list_item\r
+               [in] Pointer to a <a href="#robo554">cl_list_item_t</a> structure.\r
+\r
+       p_new_item\r
+               [in] Pointer to a <a href="#robo554">cl_list_item_t</a> structure to add to the quick list.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Inserts the new list item after the list item specified by p_list_item.\r
+       The list item specified by p_list_item must be in the quick list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo573">cl_qlist_insert_prev</a>, <a href="#robo569">cl_qlist_insert_head</a>,\r
+       <a href="#robo574">cl_qlist_insert_tail</a>, <a href="#robo570">cl_qlist_insert_list_head</a>, <a href="#robo571">cl_qlist_insert_list_tail</a>,\r
+       <a href="#robo567">cl_qlist_insert_array_head</a>, <a href="#robo568">cl_qlist_insert_array_tail</a>, <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo573">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5finsert5fprev">\r
+Component Library: Quick List/cl_qlist_insert_prev</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_insert_prev</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_insert_prev</strong> function inserts a list item before a\r
+       specified list item in a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qlist_insert_prev</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const               p_list,\r
+        IN      <a href="#robo554">cl_list_item_t</a>* const   p_list_item,\r
+        IN      <a href="#robo554">cl_list_item_t</a>* const   p_new_item )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list_item );\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_new_item );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+\r
+        /*\r
+         * The list item must not already be part of the list.  Note that this\r
+         * assertion may fail if an uninitialized list item happens to have its\r
+         * list pointer equal to the specified list.  The chances of this\r
+         * happening are acceptable in light of the value of this check.\r
+         */\r
+        CL_ASSERT( p_new_item-&gt;p_list != p_list );\r
+\r
+#if defined( _DEBUG_ )\r
+        p_new_item-&gt;p_list = p_list;\r
+#endif\r
+\r
+        __cl_primitive_insert( p_list_item, p_new_item );\r
+\r
+        p_list-&gt;count++;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure into which to add the new item.\r
+\r
+       p_list_item\r
+               [in] Pointer to a <a href="#robo554">cl_list_item_t</a> structure.\r
+\r
+       p_new_item\r
+               [in] Pointer to a <a href="#robo554">cl_list_item_t</a> structure to add to the quick list.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Inserts the new list item before the list item specified by p_list_item.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo572">cl_qlist_insert_next</a>, <a href="#robo569">cl_qlist_insert_head</a>,\r
+       <a href="#robo574">cl_qlist_insert_tail</a>, <a href="#robo570">cl_qlist_insert_list_head</a>, <a href="#robo571">cl_qlist_insert_list_tail</a>,\r
+       <a href="#robo567">cl_qlist_insert_array_head</a>, <a href="#robo568">cl_qlist_insert_array_tail</a>, <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo574">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5finsert5ftail">\r
+Component Library: Quick List/cl_qlist_insert_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_insert_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_insert_tail</strong> function inserts a list item at the tail\r
+       of a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qlist_insert_tail</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const               p_list,\r
+        IN      <a href="#robo554">cl_list_item_t</a>* const   p_list_item )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list_item );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+\r
+        /*\r
+         * The list item must not already be part of the list.  Note that this\r
+         * assertion may fail if an uninitialized list item happens to have its\r
+         * list pointer equal to the specified list.  The chances of this\r
+         * happening are acceptable in light of the value of this check.\r
+         */\r
+        CL_ASSERT( p_list_item-&gt;p_list != p_list );\r
+\r
+#if defined( _DEBUG_ )\r
+        p_list_item-&gt;p_list = p_list;\r
+#endif\r
+\r
+        /*\r
+         * Put the new element in front of the end which is the same\r
+         * as being at the tail\r
+         */\r
+        __cl_primitive_insert( &amp;p_list-&gt;end, p_list_item );\r
+\r
+        p_list-&gt;count++;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure into which to insert the object.\r
+\r
+       p_list_item\r
+               [in] Pointer to <a href="#robo554">cl_list_item_t</a> structure to add.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       In debug builds, <strong>cl_qlist_insert_tail</strong> asserts that the specified list item\r
+       is not already in the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo569">cl_qlist_insert_head</a>, <a href="#robo570">cl_qlist_insert_list_head</a>,\r
+       <a href="#robo571">cl_qlist_insert_list_tail</a>, <a href="#robo567">cl_qlist_insert_array_head</a>,\r
+       <a href="#robo568">cl_qlist_insert_array_tail</a>, <a href="#robo573">cl_qlist_insert_prev</a>, <a href="#robo572">cl_qlist_insert_next</a>,\r
+       <a href="#robo582">cl_qlist_remove_tail</a>, <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo575">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5fmove5fitems">\r
+Component Library: Quick List/cl_qlist_move_items</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_move_items</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_move_items</strong> function moves list items from one list to\r
+       another based on the return value of a user supplied function.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qlist_move_items</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const       p_src_list,\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const       p_dest_list,\r
+        IN      <a href="#robo557">cl_pfn_qlist_find_t</a>     pfn_func,\r
+        IN      const void* const       context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_src_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure from which\r
+               list items are removed.\r
+\r
+       p_dest_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure to which the source\r
+               list items are added.\r
+\r
+       pfn_func\r
+               [in] Function invoked to determine if a match was found.\r
+               See the <a href="#robo557">cl_pfn_qlist_find_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       If the function specified by the pfn_func parameter returns CL_SUCCESS,\r
+       the related list item is removed from p_src_list and inserted at the tail\r
+       of the p_dest_list.\r
+\r
+       The <strong>cl_qlist_move_items</strong> function continues iterating through p_src_list\r
+       from the last item moved, allowing multiple items to be located and moved\r
+       in a single list iteration.\r
+\r
+       The function specified by pfn_func must not perform any list operations,\r
+       as these would corrupt the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo561">cl_qlist_find_from_head</a>, <a href="#robo562">cl_qlist_find_from_tail</a>,\r
+       <a href="#robo558">cl_qlist_apply_func</a>, <a href="#robo557">cl_pfn_qlist_find_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo576">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5fnext">\r
+Component Library: Quick List/cl_qlist_next</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_next</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_next</strong> function returns a pointer to the list item following\r
+       a given list item in a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo554">cl_list_item_t</a>* CL_API\r
+<strong>cl_qlist_next</strong>(\r
+        IN      const <a href="#robo554">cl_list_item_t</a>* const     p_list_item )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list_item );\r
+\r
+        /* Return the next item. */\r
+        return( p_list_item-&gt;p_next );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list_item\r
+               [in] Pointer to the <a href="#robo554">cl_list_item_t</a> whose successor to return.\r
+\r
+ Returns:\r
+       Pointer to the list item following the list item specified by\r
+       the p_list_item parameter in the quick list.\r
+\r
+       Pointer to the list end if p_list_item was at the tail of the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo565">cl_qlist_head</a>, <a href="#robo585">cl_qlist_tail</a>, <a href="#robo578">cl_qlist_prev</a>, <a href="#robo560">cl_qlist_end</a>,\r
+       <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo577">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5fobj">\r
+Component Library: Quick List/cl_qlist_obj</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_obj</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <a href="#robo583">cl_qlist_set_obj</a> function returns the object stored in a list object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void* CL_API\r
+<strong>cl_qlist_obj</strong>(\r
+        IN      const <a href="#robo555">cl_list_obj_t</a>* const      p_list_obj )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list_obj );\r
+\r
+        return( (void*)p_list_obj-&gt;p_object );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list_obj\r
+               [in] Pointer to a <a href="#robo555">cl_list_obj_t</a> structure.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the value of the object pointer stored in the list object.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo583">cl_qlist_set_obj</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo578">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5fprev">\r
+Component Library: Quick List/cl_qlist_prev</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_prev</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_prev</strong> function returns a poirter to the list item preceding\r
+       a given list item in a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo554">cl_list_item_t</a>* CL_API\r
+<strong>cl_qlist_prev</strong>(\r
+        IN      const <a href="#robo554">cl_list_item_t</a>* const     p_list_item )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list_item );\r
+\r
+        /* Return the previous item. */\r
+        return( p_list_item-&gt;p_prev );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list_item\r
+               [in] Pointer to the <a href="#robo554">cl_list_item_t</a> whose predecessor to return.\r
+\r
+ Returns:\r
+       Pointer to the list item preceding the list item specified by\r
+       the p_list_item parameter in the quick list.\r
+\r
+       Pointer to the list end if p_list_item was at the tail of the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo565">cl_qlist_head</a>, <a href="#robo585">cl_qlist_tail</a>, <a href="#robo576">cl_qlist_next</a>, <a href="#robo560">cl_qlist_end</a>,\r
+       <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo579">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5fremove5fall">\r
+Component Library: Quick List/cl_qlist_remove_all</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_remove_all</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_remove_all</strong> function removes all items from a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qlist_remove_all</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const       p_list )\r
+{\r
+#if defined( _DEBUG_ )\r
+        <a href="#robo554">cl_list_item_t</a>  *p_list_item;\r
+\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+        p_list_item = <a href="#robo565">cl_qlist_head</a>( p_list );\r
+        while( p_list_item != <a href="#robo560">cl_qlist_end</a>( p_list ) )\r
+        {\r
+                p_list_item = <a href="#robo576">cl_qlist_next</a>( p_list_item );\r
+                <a href="#robo578">cl_qlist_prev</a>( p_list_item )-&gt;p_list = NULL;\r
+        }\r
+#endif\r
+\r
+        __cl_qlist_reset( p_list );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo580">cl_qlist_remove_head</a>, <a href="#robo582">cl_qlist_remove_tail</a>,\r
+       <a href="#robo581">cl_qlist_remove_item</a>, <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo580">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5fremove5fhead">\r
+Component Library: Quick List/cl_qlist_remove_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_remove_head</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_remove_head</strong> function removes and returns the list item\r
+       at the head of a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo554">cl_list_item_t</a>* CL_API\r
+<strong>cl_qlist_remove_head</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const       p_list )\r
+{\r
+        <a href="#robo554">cl_list_item_t</a>  *p_item;\r
+\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+\r
+        p_item = <a href="#robo565">cl_qlist_head</a>( p_list );\r
+        /* CL_ASSERT that the list item is part of the list. */\r
+        CL_ASSERT( p_item-&gt;p_list == p_list );\r
+\r
+        if( p_item == <a href="#robo560">cl_qlist_end</a>( p_list ) )\r
+                return( p_item );\r
+\r
+#if defined( _DEBUG_ )\r
+        /* Clear the item's link to the list. */\r
+        p_item-&gt;p_list = NULL;\r
+#endif\r
+\r
+        __cl_primitive_remove( p_item );\r
+\r
+        p_list-&gt;count--;\r
+\r
+        return( p_item );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure.\r
+\r
+ RETURN VALUES\r
+       Returns a pointer to the list item formerly at the head of the quick list.\r
+\r
+       Pointer to the list end if the list was empty.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo582">cl_qlist_remove_tail</a>, <a href="#robo579">cl_qlist_remove_all</a>, <a href="#robo581">cl_qlist_remove_item</a>,\r
+       <a href="#robo560">cl_qlist_end</a>, <a href="#robo565">cl_qlist_head</a>, <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo581">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5fremove5fitem">\r
+Component Library: Quick List/cl_qlist_remove_item</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_remove_item</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_remove_item</strong> function removes a specific list item from a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qlist_remove_item</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const               p_list,\r
+        IN      <a href="#robo554">cl_list_item_t</a>* const   p_list_item )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list_item  );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+        /* CL_ASSERT that the list item is part of the list. */\r
+        CL_ASSERT( p_list_item-&gt;p_list == p_list );\r
+\r
+        if( p_list_item == <a href="#robo560">cl_qlist_end</a>( p_list ) )\r
+                return;\r
+\r
+#if defined( _DEBUG_ )\r
+        /* Clear the item's link to the list. */\r
+        p_list_item-&gt;p_list = NULL;\r
+#endif\r
+\r
+        __cl_primitive_remove( p_list_item );\r
+\r
+        p_list-&gt;count--;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure from which to remove the item.\r
+\r
+       p_list_item\r
+               [in] Pointer to a <a href="#robo554">cl_list_item_t</a> structure to remove.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Removes the list item pointed to by the p_list_item parameter from\r
+       its list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo580">cl_qlist_remove_head</a>, <a href="#robo582">cl_qlist_remove_tail</a>, <a href="#robo579">cl_qlist_remove_all</a>,\r
+       <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo582">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5fremove5ftail">\r
+Component Library: Quick List/cl_qlist_remove_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_remove_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_remove_tail</strong> function removes and returns the list item\r
+       at the tail of a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo554">cl_list_item_t</a>* CL_API\r
+<strong>cl_qlist_remove_tail</strong>(\r
+        IN      <a href="#robo584">cl_qlist_t</a>* const       p_list )\r
+{\r
+        <a href="#robo554">cl_list_item_t</a>  *p_item;\r
+\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+\r
+        p_item = <a href="#robo585">cl_qlist_tail</a>( p_list );\r
+        /* CL_ASSERT that the list item is part of the list. */\r
+        CL_ASSERT( p_item-&gt;p_list == p_list );\r
+\r
+        if( p_item == <a href="#robo560">cl_qlist_end</a>( p_list ) )\r
+                return( p_item );\r
+\r
+#if defined( _DEBUG_ )\r
+        /* Clear the item's link to the list. */\r
+        p_item-&gt;p_list = NULL;\r
+#endif\r
+\r
+        __cl_primitive_remove( p_item );\r
+\r
+        p_list-&gt;count--;\r
+\r
+        return( p_item );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure.\r
+\r
+ RETURN VALUES\r
+       Returns a pointer to the list item formerly at the tail of the quick list.\r
+\r
+       Pointer to the list end if the list was empty.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo580">cl_qlist_remove_head</a>, <a href="#robo579">cl_qlist_remove_all</a>, <a href="#robo581">cl_qlist_remove_item</a>,\r
+       <a href="#robo560">cl_qlist_end</a>, <a href="#robo585">cl_qlist_tail</a>, <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo583">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5fset5fobj">\r
+Component Library: Quick List/cl_qlist_set_obj</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_set_obj</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_set_obj</strong> function sets the object stored in a list object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qlist_set_obj</strong>(\r
+        IN      <a href="#robo555">cl_list_obj_t</a>* const    p_list_obj,\r
+        IN      const void* const               p_object )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list_obj );\r
+        p_list_obj-&gt;p_object = p_object;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list_obj\r
+               [in] Pointer to a <a href="#robo555">cl_list_obj_t</a> structure.\r
+\r
+       p_object\r
+               [in] User defined context.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo577">cl_qlist_obj</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo584">[Structures]<a name="Component20Library3a20Quick20List2fcl5fqlist5ft">\r
+Component Library: Quick List/cl_qlist_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Quick list structure.\r
+\r
+       The <strong>cl_qlist_t</strong> structure should be treated as opaque and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_qlist\r
+{\r
+        <a href="#robo554">cl_list_item_t</a>  end;\r
+        size_t                  count;\r
+        cl_state_t              state;\r
+\r
+} <strong>cl_qlist_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       end\r
+               <a href="./cl_list_h.html#robo15">List</a> item used to mark the end of the list.\r
+\r
+       count\r
+               Number of items in the list.\r
+\r
+       state\r
+               State of the quick list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo585">[Functions]<a name="Component20Library3a20Quick20List2fcl5fqlist5ftail">\r
+Component Library: Quick List/cl_qlist_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlist_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlist_tail</strong> function returns the list item at\r
+       the tail of a quick list.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo554">cl_list_item_t</a>* CL_API\r
+<strong>cl_qlist_tail</strong>(\r
+        IN      const <a href="#robo584">cl_qlist_t</a>* const p_list )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_list );\r
+        /* CL_ASSERT that the list was initialized. */\r
+        CL_ASSERT( p_list-&gt;state == CL_INITIALIZED );\r
+\r
+        return( <a href="#robo578">cl_qlist_prev</a>( &amp;p_list-&gt;end ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_list\r
+               [in] Pointer to a <a href="#robo584">cl_qlist_t</a> structure.\r
+\r
+ RETURN VALUES\r
+       Pointer to the list item at the tail of the quick list.\r
+\r
+       Pointer to the list end if the list was empty.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qlist_tail</strong> does not remove the item from the list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_list_h.html#robo15">List</a>, <a href="#robo565">cl_qlist_head</a>, <a href="#robo576">cl_qlist_next</a>, <a href="#robo578">cl_qlist_prev</a>, <a href="#robo560">cl_qlist_end</a>,\r
+       <a href="#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_qlockpool_h.html b/trunk/docs/complib/cl_qlockpool_h.html
new file mode 100644 (file)
index 0000000..8e0f188
--- /dev/null
@@ -0,0 +1,340 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_qlockpool_h.html</title>\r
+<!-- Source: ./inc/complib/cl_qlockpool.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_qlockpool.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo27">[Modules]<a name="Component20Library2fQuick20Locking20Pool">\r
+Component Library/Quick Locking Pool</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a> represents a thread-safe quick pool.\r
+\r
+       This object should be treated as opaque and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo591">cl_qlock_pool_t</a>\r
+\r
+       Initialization:\r
+               <a href="#robo586">cl_qlock_pool_construct</a>, <a href="#robo589">cl_qlock_pool_init</a>, <a href="#robo587">cl_qlock_pool_destroy</a>\r
+\r
+       Manipulation\r
+               <a href="#robo588">cl_qlock_pool_get</a>, <a href="#robo590">cl_qlock_pool_put</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo586">[Functions]<a name="Component20Library3a20Quick20Locking20Pool2fcl5fqlock5fpool5fconstruct">\r
+Component Library: Quick Locking Pool/cl_qlock_pool_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlock_pool_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This function constructs a Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a>.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>static inline void\r
+<strong>cl_qlock_pool_construct</strong>(\r
+        IN <a href="#robo591">cl_qlock_pool_t</a>* const p_pool )\r
+{\r
+        <a href="./cl_qpool_h.html#robo618">cl_qpool_construct</a>( &amp;p_pool-&gt;pool );\r
+        <a href="./cl_spinlock_h.html#robo649">cl_spinlock_construct</a>( &amp;p_pool-&gt;lock );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a> to construct.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo589">cl_qlock_pool_init</a>, <a href="#robo587">cl_qlock_pool_destroy</a>\r
+\r
+       Calling <strong>cl_qlock_pool_construct</strong> is a prerequisite to calling any other\r
+       method except <a href="#robo589">cl_qlock_pool_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo589">cl_qlock_pool_init</a>, <a href="#robo587">cl_qlock_pool_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo587">[Functions]<a name="Component20Library3a20Quick20Locking20Pool2fcl5fqlock5fpool5fdestroy">\r
+Component Library: Quick Locking Pool/cl_qlock_pool_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlock_pool_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlock_pool_destroy</strong> function destroys a node, releasing\r
+       all resources.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>static inline void\r
+<strong>cl_qlock_pool_destroy</strong>(\r
+        IN <a href="#robo591">cl_qlock_pool_t</a>* const p_pool )\r
+{\r
+        /*\r
+                If the pool has already been put into use, grab the lock\r
+                to sync with other threads before we blow everything away.\r
+        */\r
+        if( <a href="./cl_qpool_h.html#robo615">cl_is_qpool_inited</a>( &amp;p_pool-&gt;pool ) )\r
+        {\r
+                <a href="./cl_spinlock_h.html#robo648">cl_spinlock_acquire</a>( &amp;p_pool-&gt;lock );\r
+                <a href="./cl_qpool_h.html#robo620">cl_qpool_destroy</a>( &amp;p_pool-&gt;pool );\r
+                <a href="./cl_spinlock_h.html#robo652">cl_spinlock_release</a>( &amp;p_pool-&gt;lock );\r
+        }\r
+        else\r
+                <a href="./cl_qpool_h.html#robo620">cl_qpool_destroy</a>( &amp;p_pool-&gt;pool );\r
+\r
+        <a href="./cl_spinlock_h.html#robo650">cl_spinlock_destroy</a>( &amp;p_pool-&gt;lock );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a> to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Performs any necessary cleanup of the specified Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a>.\r
+       Further operations should not be attempted on the destroyed object.\r
+       This function should only be called after a call to\r
+       <a href="#robo586">cl_qlock_pool_construct</a> or <a href="#robo589">cl_qlock_pool_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo586">cl_qlock_pool_construct</a>, <a href="#robo589">cl_qlock_pool_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo588">[Functions]<a name="Component20Library3a20Quick20Locking20Pool2fcl5fqlock5fpool5fget">\r
+Component Library: Quick Locking Pool/cl_qlock_pool_get</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlock_pool_get</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Gets an object wrapper and wire MAD from the pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>static inline <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>*\r
+<strong>cl_qlock_pool_get</strong>(\r
+        IN <a href="#robo591">cl_qlock_pool_t</a>* const p_pool )\r
+{\r
+        <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>* p_item;\r
+        <a href="./cl_spinlock_h.html#robo648">cl_spinlock_acquire</a>( &amp;p_pool-&gt;lock );\r
+        p_item = <a href="./cl_qpool_h.html#robo621">cl_qpool_get</a>( &amp;p_pool-&gt;pool );\r
+        <a href="./cl_spinlock_h.html#robo652">cl_spinlock_release</a>( &amp;p_pool-&gt;lock );\r
+        return( p_item );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to an <a href="#robo591">cl_qlock_pool_t</a> object.\r
+\r
+ RETURN VALUES\r
+       Returns a pointer to a <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a> contained in the user object.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The object must eventually be returned to the pool with a call to\r
+       <a href="#robo590">cl_qlock_pool_put</a>.\r
+\r
+       The <a href="#robo586">cl_qlock_pool_construct</a> or <a href="#robo589">cl_qlock_pool_init</a> must be called before\r
+       using this function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo590">cl_qlock_pool_put</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo589">[Functions]<a name="Component20Library3a20Quick20Locking20Pool2fcl5fqlock5fpool5finit">\r
+Component Library: Quick Locking Pool/cl_qlock_pool_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlock_pool_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qlock_pool_init</strong> function initializes a Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a> for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>static inline <a href="./cl_types_h.html#robo304">cl_status_t</a>\r
+<strong>cl_qlock_pool_init</strong>(\r
+        IN <a href="#robo591">cl_qlock_pool_t</a>*                     const p_pool,\r
+        IN      const size_t                    min_size,\r
+        IN      const size_t                    max_size,\r
+        IN      const size_t                    grow_size,\r
+        IN      const size_t                    object_size,\r
+        IN      <a href="./cl_qpool_h.html#robo617">cl_pfn_qpool_init_t</a>             pfn_initializer OPTIONAL,\r
+        IN      <a href="./cl_qpool_h.html#robo616">cl_pfn_qpool_dtor_t</a>             pfn_destructor OPTIONAL,\r
+        IN      const void* const               context )\r
+{\r
+        <a href="./cl_types_h.html#robo304">cl_status_t</a> status;\r
+\r
+        <a href="#robo586">cl_qlock_pool_construct</a>( p_pool );\r
+\r
+        status = <a href="./cl_spinlock_h.html#robo651">cl_spinlock_init</a>( &amp;p_pool-&gt;lock );\r
+        if( status )\r
+                return( status );\r
+\r
+        status = <a href="./cl_qpool_h.html#robo623">cl_qpool_init</a>( &amp;p_pool-&gt;pool, min_size, max_size, grow_size,\r
+                        object_size, pfn_initializer, pfn_destructor, context );\r
+\r
+        return( status );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to an <a href="#robo591">cl_qlock_pool_t</a> object to initialize.\r
+\r
+       min_size\r
+               [in] Minimum number of objects that the pool should support. All\r
+               necessary allocations to allow storing the minimum number of items\r
+               are performed at initialization time, and all necessary callbacks\r
+               successfully invoked.\r
+\r
+       max_size\r
+               [in] Maximum number of objects to which the pool is allowed to grow.\r
+               A value of zero specifies no maximum.\r
+\r
+       grow_size\r
+               [in] Number of objects to allocate when incrementally growing the pool.\r
+               A value of zero disables automatic growth.\r
+\r
+       object_size\r
+               [in] Size, in bytes, of each object.\r
+\r
+       pfn_initializer\r
+               [in] Initialization callback to invoke for every new object when\r
+               growing the pool. This parameter is optional and may be NULL. If NULL,\r
+               the pool assumes the <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a> structure describing objects is\r
+               located at the head of each object. See the <a href="./cl_qpool_h.html#robo617">cl_pfn_qpool_init_t</a>\r
+               function type declaration for details about the callback function.\r
+\r
+       pfn_destructor\r
+               [in] Destructor callback to invoke for every object before memory for\r
+               that object is freed. This parameter is optional and may be NULL.\r
+               See the <a href="./cl_qpool_h.html#robo616">cl_pfn_qpool_dtor_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the quick pool was initialized successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize the\r
+       quick pool.\r
+\r
+       CL_INVALID_SETTING if a the maximum size is non-zero and less than the\r
+       minimum size.\r
+\r
+       Other <a href="./cl_types_h.html#robo304">cl_status_t</a> value returned by optional initialization callback function\r
+       specified by the pfn_initializer parameter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling other Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a> methods.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo586">cl_qlock_pool_construct</a>, <a href="#robo587">cl_qlock_pool_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo590">[Functions]<a name="Component20Library3a20Quick20Locking20Pool2fcl5fqlock5fpool5fput">\r
+Component Library: Quick Locking Pool/cl_qlock_pool_put</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlock_pool_put</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns an object to the pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>static inline void\r
+<strong>cl_qlock_pool_put</strong>(\r
+        IN <a href="#robo591">cl_qlock_pool_t</a>* const p_pool,\r
+        IN <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>* const p_item )\r
+{\r
+        <a href="./cl_spinlock_h.html#robo648">cl_spinlock_acquire</a>( &amp;p_pool-&gt;lock );\r
+        <a href="./cl_qpool_h.html#robo624">cl_qpool_put</a>( &amp;p_pool-&gt;pool, p_item );\r
+        <a href="./cl_spinlock_h.html#robo652">cl_spinlock_release</a>( &amp;p_pool-&gt;lock );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to an <a href="#robo591">cl_qlock_pool_t</a> object.\r
+\r
+       p_item\r
+               [in] Pointer to the <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a> in an object that was previously\r
+               retrieved from the pool.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The <a href="#robo586">cl_qlock_pool_construct</a> or <a href="#robo589">cl_qlock_pool_init</a> must be called before\r
+       using this function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo588">cl_qlock_pool_get</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo591">[Structures]<a name="Component20Library3a20Quick20Locking20Pool2fcl5fqlock5fpool5ft">\r
+Component Library: Quick Locking Pool/cl_qlock_pool_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qlock_pool_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a> structure.\r
+\r
+       This object should be treated as opaque and should\r
+       be manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_qlock_pool\r
+{\r
+        cl_spinlock_t                           lock;\r
+        <a href="./cl_qpool_h.html#robo626">cl_qpool_t</a>                                      pool;\r
+\r
+} <strong>cl_qlock_pool_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       lock\r
+               <a href="./cl_spinlock_h.html#robo32">Spinlock</a> guarding the pool.\r
+\r
+       pool\r
+               quick_pool of user objects.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick Locking <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_qmap_h.html b/trunk/docs/complib/cl_qmap_h.html
new file mode 100644 (file)
index 0000000..0208686
--- /dev/null
@@ -0,0 +1,998 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_qmap_h.html</title>\r
+<!-- Source: ./inc/complib/cl_qmap.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_qmap.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo28">[Modules]<a name="Component20Library2fQuick20Map">\r
+Component Library/Quick Map</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Quick map implements a binary tree that stores user provided <a href="#robo593">cl_map_item_t</a>\r
+       structures.  Each item stored in a quick map has a unique 64-bit key\r
+       (duplicates are not allowed).  Quick map provides the ability to\r
+       efficiently search for an item given a key.\r
+\r
+       Quick map does not allocate any memory, and can therefore not fail\r
+       any operations due to insufficient memory.  Quick map can thus be useful\r
+       in minimizing the error paths in code.\r
+\r
+       Quick map is not thread safe, and users must provide serialization when\r
+       adding and removing items from the map.\r
+\r
+       The quick map functions operate on a <a href="#robo613">cl_qmap_t</a> structure which should be\r
+       treated as opaque and should be manipulated only through the provided\r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo613">cl_qmap_t</a>, <a href="#robo593">cl_map_item_t</a>, <a href="#robo594">cl_map_obj_t</a>\r
+\r
+       Callbacks:\r
+               <a href="#robo595">cl_pfn_qmap_apply_t</a>\r
+\r
+       Item Manipulation:\r
+               <a href="#robo612">cl_qmap_set_obj</a>, <a href="#robo607">cl_qmap_obj</a>, <a href="#robo604">cl_qmap_key</a>\r
+\r
+       Initialization:\r
+               <a href="#robo602">cl_qmap_init</a>\r
+\r
+       Iteration:\r
+               <a href="#robo599">cl_qmap_end</a>, <a href="#robo601">cl_qmap_head</a>, <a href="#robo614">cl_qmap_tail</a>, <a href="#robo606">cl_qmap_next</a>, <a href="#robo608">cl_qmap_prev</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo603">cl_qmap_insert</a>, <a href="#robo600">cl_qmap_get</a>, <a href="#robo611">cl_qmap_remove_item</a>, <a href="#robo609">cl_qmap_remove</a>,\r
+               <a href="#robo610">cl_qmap_remove_all</a>, <a href="#robo605">cl_qmap_merge</a>, <a href="#robo598">cl_qmap_delta</a>\r
+\r
+       Search:\r
+               <a href="#robo596">cl_qmap_apply_func</a>\r
+\r
+       Attributes:\r
+               <a href="#robo597">cl_qmap_count</a>, <a href="#robo592">cl_is_qmap_empty</a>,\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo592">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fis5fqmap5fempty">\r
+Component Library: Quick Map/cl_is_qmap_empty</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_qmap_empty</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_qmap_empty</strong> function returns whether a quick map is empty.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE boolean_t CL_API\r
+<strong>cl_is_qmap_empty</strong>(\r
+        IN      const <a href="#robo613">cl_qmap_t</a>* const  p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+\r
+        return( p_map-&gt;count == 0 );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo613">cl_qmap_t</a> structure to test for emptiness.\r
+\r
+ RETURN VALUES\r
+       TRUE if the quick map is empty.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo597">cl_qmap_count</a>, <a href="#robo610">cl_qmap_remove_all</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo593">[Structures]<a name="Component20Library3a20Quick20Map2fcl5fmap5fitem5ft">\r
+Component Library: Quick Map/cl_map_item_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_item_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_item_t</strong> structure is used by maps to store objects.\r
+\r
+       The <strong>cl_map_item_t</strong> structure should be treated as opaque and should\r
+       be manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_map_item\r
+{\r
+        /* Must be first to allow casting. */\r
+        <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>                  pool_item;\r
+        struct _cl_map_item             *p_left;\r
+        struct _cl_map_item             *p_right;\r
+        struct _cl_map_item             *p_up;\r
+        cl_map_color_t                  color;\r
+        uint64_t                                key;\r
+#ifdef _DEBUG_\r
+        struct _cl_qmap                 *p_map;\r
+#endif\r
+\r
+} <strong>cl_map_item_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pool_item\r
+               Used to store the item in a doubly linked list, allowing more\r
+               efficient map traversal.\r
+\r
+       p_left\r
+               Pointer to the map item that is a child to the left of the node.\r
+\r
+       p_right\r
+               Pointer to the map item that is a child to the right of the node.\r
+\r
+       p_up\r
+               Pointer to the map item that is the parent of the node.\r
+\r
+       p_nil\r
+               Pointer to the map's NIL item, used as a terminator for leaves.\r
+               The NIL sentinel is in the <a href="#robo613">cl_qmap_t</a> structure.\r
+\r
+       color\r
+               Indicates whether a node is red or black in the map.\r
+\r
+       key\r
+               Value that uniquely represents a node in a map.  This value is set by\r
+               calling <a href="#robo603">cl_qmap_insert</a> and can be retrieved by calling <a href="#robo604">cl_qmap_key</a>.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       None of the fields of this structure should be manipulated by users, as\r
+       they are crititcal to the proper operation of the map in which they\r
+       are stored.\r
+\r
+       To allow storing items in either a quick list, a quick pool, or a quick\r
+       map, the map implementation guarantees that the map item can be safely\r
+       cast to a pool item used for storing an object in a quick pool, or cast to\r
+       a list item used for storing an object in a quick list.  This removes the\r
+       need to embed a map item, a list item, and a pool item in objects that need\r
+       to be stored in a quick list, a quick pool, and a quick map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo603">cl_qmap_insert</a>, <a href="#robo604">cl_qmap_key</a>, <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>, <a href="./cl_qlist_h.html#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo594">[Structures]<a name="Component20Library3a20Quick20Map2fcl5fmap5fobj5ft">\r
+Component Library: Quick Map/cl_map_obj_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_map_obj_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_map_obj_t</strong> structure is used to store objects in maps.\r
+\r
+       The <strong>cl_map_obj_t</strong> structure should be treated as opaque and should\r
+       be manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _<a href="./cl_map_h.html#robo410">cl_map_obj</a>\r
+{\r
+        <a href="#robo593">cl_map_item_t</a>                   item;\r
+        const void                              *p_object;\r
+\r
+} <strong>cl_map_obj_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       item\r
+               <a href="./cl_map_h.html#robo17">Map</a> item used by internally by the map to store an object.\r
+\r
+       p_object\r
+               User defined context. Users should not access this field directly.\r
+               Use <a href="#robo612">cl_qmap_set_obj</a> and <a href="#robo607">cl_qmap_obj</a> to set and retrieve the value\r
+               of this field.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       None of the fields of this structure should be manipulated by users, as\r
+       they are crititcal to the proper operation of the map in which they\r
+       are stored.\r
+\r
+       Use <a href="#robo612">cl_qmap_set_obj</a> and <a href="#robo607">cl_qmap_obj</a> to set and retrieve the object\r
+       stored in a map item, respectively.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo612">cl_qmap_set_obj</a>, <a href="#robo607">cl_qmap_obj</a>, <a href="#robo593">cl_map_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo595">[Definitions]<a name="Component20Library3a20Quick20Map2fcl5fpfn5fqmap5fapply5ft">\r
+Component Library: Quick Map/cl_pfn_qmap_apply_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_qmap_apply_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_qmap_apply_t</strong> function type defines the prototype for functions\r
+       used to iterate items in a quick map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_qmap_apply_t</strong>)(\r
+        IN      <a href="#robo593">cl_map_item_t</a>* const    p_map_item,\r
+        IN      void*                                   context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map_item\r
+               [in] Pointer to a <a href="#robo593">cl_map_item_t</a> structure.\r
+\r
+       context\r
+               [in] Value passed to the callback function.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for the\r
+       function provided by users as a parameter to the <a href="#robo596">cl_qmap_apply_func</a>\r
+       function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo596">cl_qmap_apply_func</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo596">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fapply5ffunc">\r
+Component Library: Quick Map/cl_qmap_apply_func</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_apply_func</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_apply_func</strong> function executes a specified function\r
+       for every item stored in a quick map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qmap_apply_func</strong>(\r
+        IN      const <a href="#robo613">cl_qmap_t</a>* const  p_map,\r
+        IN      <a href="#robo595">cl_pfn_qmap_apply_t</a>             pfn_func,\r
+        IN      const void* const               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo613">cl_qmap_t</a> structure.\r
+\r
+       pfn_func\r
+               [in] Function invoked for every item in the quick map.\r
+               See the <a href="#robo595">cl_pfn_qmap_apply_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The function provided must not perform any map operations, as these\r
+       would corrupt the quick map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo595">cl_pfn_qmap_apply_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo597">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fcount">\r
+Component Library: Quick Map/cl_qmap_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_count</strong> function returns the number of items stored\r
+       in a quick map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_qmap_count</strong>(\r
+        IN      const <a href="#robo613">cl_qmap_t</a>* const  p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+        return( p_map-&gt;count );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo613">cl_qmap_t</a> structure whose item count to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the number of items stored in the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo592">cl_is_qmap_empty</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo598">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fdelta">\r
+Component Library: Quick Map/cl_qmap_delta</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_delta</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_delta</strong> function computes the differences between two maps.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qmap_delta</strong>(\r
+        IN OUT  <a href="#robo613">cl_qmap_t</a>* const        p_map1,\r
+        IN OUT  <a href="#robo613">cl_qmap_t</a>* const        p_map2,\r
+        OUT             <a href="#robo613">cl_qmap_t</a>* const        p_new,\r
+        OUT             <a href="#robo613">cl_qmap_t</a>* const        p_old );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map1\r
+               [in/out] Pointer to the first of two <a href="#robo613">cl_qmap_t</a> structures whose\r
+               differences to compute.\r
+\r
+       p_map2\r
+               [in/out] Pointer to the second of two <a href="#robo613">cl_qmap_t</a> structures whose\r
+               differences to compute.\r
+\r
+       p_new\r
+               [out] Pointer to an empty <a href="#robo613">cl_qmap_t</a> structure that contains the items\r
+               unique to p_map2 upon return from the function.\r
+\r
+       p_old\r
+               [out] Pointer to an empty <a href="#robo613">cl_qmap_t</a> structure that contains the items\r
+               unique to p_map1 upon return from the function.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Items are evaluated based on their keys.  Items that exist in both\r
+       p_map1 and p_map2 remain in their respective maps.  Items that\r
+       exist only p_map1 are moved to p_old.  Likewise, items that exist only\r
+       in p_map2 are moved to p_new.  This function can be usefull in evaluating\r
+       changes between two maps.\r
+\r
+       Both maps pointed to by p_new and p_old must be empty on input.  This\r
+       requirement removes the possibility of failures.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo605">cl_qmap_merge</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo599">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fend">\r
+Component Library: Quick Map/cl_qmap_end</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_end</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_end</strong> function returns the end of a quick map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE const <a href="#robo593">cl_map_item_t</a>* const CL_API\r
+<strong>cl_qmap_end</strong>(\r
+        IN      const <a href="#robo613">cl_qmap_t</a>* const  p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+        /* Nil is the end of the map. */\r
+        return( &amp;p_map-&gt;nil );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo613">cl_qmap_t</a> structure whose end to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Pointer to the end of the map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qmap_end</strong> is useful for determining the validity of map items returned\r
+       by <a href="#robo601">cl_qmap_head</a>, <a href="#robo614">cl_qmap_tail</a>, <a href="#robo606">cl_qmap_next</a>, or <a href="#robo608">cl_qmap_prev</a>.  If the map\r
+       item pointer returned by any of these functions compares to the end, the\r
+       end of the map was encoutered.\r
+       When using <a href="#robo601">cl_qmap_head</a> or <a href="#robo614">cl_qmap_tail</a>, this condition indicates that\r
+       the map is empty.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo601">cl_qmap_head</a>, <a href="#robo614">cl_qmap_tail</a>, <a href="#robo606">cl_qmap_next</a>, <a href="#robo608">cl_qmap_prev</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo600">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fget">\r
+Component Library: Quick Map/cl_qmap_get</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_get</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_get</strong> function returns the map item associated with a key.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="#robo593">cl_map_item_t</a>* CL_API\r
+<strong>cl_qmap_get</strong>(\r
+        IN      const <a href="#robo613">cl_qmap_t</a>* const  p_map,\r
+        IN      const uint64_t                  key );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo613">cl_qmap_t</a> structure from which to retrieve the\r
+               item with the specified key.\r
+\r
+       key\r
+               [in] Key value used to search for the desired map item.\r
+\r
+ RETURN VALUES\r
+       Pointer to the map item with the desired key value.\r
+\r
+       Pointer to the map end if there was no item with the desired key value\r
+       stored in the quick map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qmap_get</strong> does not remove the item from the quick map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo609">cl_qmap_remove</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo601">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fhead">\r
+Component Library: Quick Map/cl_qmap_head</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_head</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_head</strong> function returns the map item with the lowest key\r
+       value stored in a quick map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo593">cl_map_item_t</a>* CL_API\r
+<strong>cl_qmap_head</strong>(\r
+        IN      const <a href="#robo613">cl_qmap_t</a>* const  p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+        return( (<a href="#robo593">cl_map_item_t</a>*)p_map-&gt;nil.pool_item.list_item.p_next );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo613">cl_qmap_t</a> structure whose item with the lowest key\r
+               is returned.\r
+\r
+ RETURN VALUES\r
+       Pointer to the map item with the lowest key in the quick map.\r
+\r
+       Pointer to the map end if the quick map was empty.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qmap_head</strong> does not remove the item from the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo614">cl_qmap_tail</a>, <a href="#robo606">cl_qmap_next</a>, <a href="#robo608">cl_qmap_prev</a>, <a href="#robo599">cl_qmap_end</a>,\r
+       cl_qmap_item_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo602">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5finit">\r
+Component Library: Quick Map/cl_qmap_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_init</strong> function initialized a quick map for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qmap_init</strong>(\r
+        IN      <a href="#robo613">cl_qmap_t</a>* const        p_map );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo613">cl_qmap_t</a> structure to initialize.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling quick map manipulation functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo603">cl_qmap_insert</a>, <a href="#robo609">cl_qmap_remove</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo603">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5finsert">\r
+Component Library: Quick Map/cl_qmap_insert</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_insert</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_insert</strong> function inserts a map item into a quick map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="#robo593">cl_map_item_t</a>* CL_API\r
+<strong>cl_qmap_insert</strong>(\r
+        IN      <a href="#robo613">cl_qmap_t</a>* const                p_map,\r
+        IN      const uint64_t                  key,\r
+        IN      <a href="#robo593">cl_map_item_t</a>* const    p_item );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo613">cl_qmap_t</a> structure into which to add the item.\r
+\r
+       key\r
+               [in] Value to assign to the item.\r
+\r
+       p_item\r
+               [in] Pointer to a <a href="#robo593">cl_map_item_t</a> stucture to insert into the quick map.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Pointer to the item in the map with the specified key.  If insertion\r
+       was successful, this is the pointer to the item.  If an item with the\r
+       specified key already exists in the map, the pointer to that item is\r
+       returned.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Insertion operations may cause the quick map to rebalance.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo609">cl_qmap_remove</a>, <a href="#robo593">cl_map_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo604">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fkey">\r
+Component Library: Quick Map/cl_qmap_key</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_key</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_key</strong> function retrieves the key value of a map item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE uint64_t CL_API\r
+<strong>cl_qmap_key</strong>(\r
+        IN      const <a href="#robo593">cl_map_item_t</a>* const      p_item )\r
+{\r
+        CL_ASSERT( p_item );\r
+        return( p_item-&gt;key );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               [in] Pointer to a map item whose key value to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the 64-bit key value for the specified map item.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The key value is set in a call to <a href="#robo603">cl_qmap_insert</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo603">cl_qmap_insert</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo605">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fmerge">\r
+Component Library: Quick Map/cl_qmap_merge</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_merge</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_merge</strong> function moves all items from one map to another,\r
+       excluding duplicates.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qmap_merge</strong>(\r
+        OUT             <a href="#robo613">cl_qmap_t</a>* const        p_dest_map,\r
+        IN OUT  <a href="#robo613">cl_qmap_t</a>* const        p_src_map );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dest_map\r
+               [out] Pointer to a <a href="#robo613">cl_qmap_t</a> structure to which items should be added.\r
+\r
+       p_src_map\r
+               [in/out] Pointer to a <a href="#robo613">cl_qmap_t</a> structure whose items to add\r
+               to p_dest_map.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Items are evaluated based on their keys only.\r
+\r
+       Upon return from <strong>cl_qmap_merge</strong>, the quick map referenced by p_src_map\r
+       contains all duplicate items.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo598">cl_qmap_delta</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo606">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fnext">\r
+Component Library: Quick Map/cl_qmap_next</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_next</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_next</strong> function returns the map item with the next higher\r
+       key value than a specified map item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo593">cl_map_item_t</a>* CL_API\r
+<strong>cl_qmap_next</strong>(\r
+        IN      const <a href="#robo593">cl_map_item_t</a>* const      p_item )\r
+{\r
+        CL_ASSERT( p_item );\r
+        return( (<a href="#robo593">cl_map_item_t</a>*)p_item-&gt;pool_item.list_item.p_next );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               [in] Pointer to a map item whose successor to return.\r
+\r
+ RETURN VALUES\r
+       Pointer to the map item with the next higher key value in a quick map.\r
+\r
+       Pointer to the map end if the specified item was the last item in\r
+       the quick map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo601">cl_qmap_head</a>, <a href="#robo614">cl_qmap_tail</a>, <a href="#robo608">cl_qmap_prev</a>, <a href="#robo599">cl_qmap_end</a>,\r
+       <a href="#robo593">cl_map_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo607">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fobj">\r
+Component Library: Quick Map/cl_qmap_obj</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_obj</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_obj</strong> function returns the object stored in a map object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void* CL_API\r
+<strong>cl_qmap_obj</strong>(\r
+        IN      const <a href="#robo594">cl_map_obj_t</a>* const       p_map_obj )\r
+{\r
+        CL_ASSERT( p_map_obj );\r
+        return( (void*)p_map_obj-&gt;p_object );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map_obj\r
+               [in] Pointer to a map object stucture whose object pointer to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the value of the object pointer stored in the map object.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo612">cl_qmap_set_obj</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo608">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fprev">\r
+Component Library: Quick Map/cl_qmap_prev</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_prev</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_prev</strong> function returns the map item with the next lower\r
+       key value than a precified map item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo593">cl_map_item_t</a>* CL_API\r
+<strong>cl_qmap_prev</strong>(\r
+        IN      const <a href="#robo593">cl_map_item_t</a>* const      p_item )\r
+{\r
+        CL_ASSERT( p_item );\r
+        return( (<a href="#robo593">cl_map_item_t</a>*)p_item-&gt;pool_item.list_item.p_prev );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               [in] Pointer to a map item whose predecessor to return.\r
+\r
+ RETURN VALUES\r
+       Pointer to the map item with the next lower key value in a quick map.\r
+\r
+       Pointer to the map end if the specifid item was the first item in\r
+       the quick map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo601">cl_qmap_head</a>, <a href="#robo614">cl_qmap_tail</a>, <a href="#robo606">cl_qmap_next</a>, <a href="#robo599">cl_qmap_end</a>,\r
+       <a href="#robo593">cl_map_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo609">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fremove">\r
+Component Library: Quick Map/cl_qmap_remove</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_remove</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_remove</strong> function removes the map item with the specified key\r
+       from a quick map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="#robo593">cl_map_item_t</a>* CL_API\r
+<strong>cl_qmap_remove</strong>(\r
+        IN      <a href="#robo613">cl_qmap_t</a>* const        p_map,\r
+        IN      const uint64_t          key );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo613">cl_qmap_t</a> structure from which to remove the item\r
+               with the specified key.\r
+\r
+       key\r
+               [in] Key value used to search for the map item to remove.\r
+\r
+ RETURN VALUES\r
+       Pointer to the removed map item if it was found.\r
+\r
+       Pointer to the map end if no item with the specified key exists in the\r
+       quick map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo611">cl_qmap_remove_item</a>, <a href="#robo610">cl_qmap_remove_all</a>, <a href="#robo603">cl_qmap_insert</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo610">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fremove5fall">\r
+Component Library: Quick Map/cl_qmap_remove_all</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_remove_all</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_remove_all</strong> function removes all items in a quick map,\r
+       leaving it empty.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qmap_remove_all</strong>(\r
+        IN      <a href="#robo613">cl_qmap_t</a>* const        p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+\r
+        p_map-&gt;root.p_left = &amp;p_map-&gt;nil;\r
+        p_map-&gt;nil.pool_item.list_item.p_next = &amp;p_map-&gt;nil.pool_item.list_item;\r
+        p_map-&gt;nil.pool_item.list_item.p_prev = &amp;p_map-&gt;nil.pool_item.list_item;\r
+        p_map-&gt;count = 0;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo613">cl_qmap_t</a> structure to empty.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo609">cl_qmap_remove</a>, <a href="#robo611">cl_qmap_remove_item</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo611">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fremove5fitem">\r
+Component Library: Quick Map/cl_qmap_remove_item</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_remove_item</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_remove_item</strong> function removes the specified map item\r
+       from a quick map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qmap_remove_item</strong>(\r
+        IN      <a href="#robo613">cl_qmap_t</a>* const                p_map,\r
+        IN      <a href="#robo593">cl_map_item_t</a>* const    p_item );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               [in] Pointer to a map item to remove from its quick map.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+\r
+       In a debug build, <strong>cl_qmap_remove_item</strong> asserts that the item being removed\r
+       is in the specified map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Removes the map item pointed to by p_item from its quick map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo609">cl_qmap_remove</a>, <a href="#robo610">cl_qmap_remove_all</a>, <a href="#robo603">cl_qmap_insert</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo612">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5fset5fobj">\r
+Component Library: Quick Map/cl_qmap_set_obj</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_set_obj</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_set_obj</strong> function sets the object stored in a map object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qmap_set_obj</strong>(\r
+        IN      <a href="#robo594">cl_map_obj_t</a>* const     p_map_obj,\r
+        IN      const void* const       p_object )\r
+{\r
+        CL_ASSERT( p_map_obj );\r
+        p_map_obj-&gt;p_object = p_object;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map_obj\r
+               [in] Pointer to a map object stucture whose object pointer\r
+               is to be set.\r
+\r
+       p_object\r
+               [in] User defined context.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo607">cl_qmap_obj</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo613">[Structures]<a name="Component20Library3a20Quick20Map2fcl5fqmap5ft">\r
+Component Library: Quick Map/cl_qmap_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Quick map structure.\r
+\r
+       The <strong>cl_qmap_t</strong> structure should be treated as opaque and should\r
+       be manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_qmap\r
+{\r
+        <a href="#robo593">cl_map_item_t</a>   root;\r
+        <a href="#robo593">cl_map_item_t</a>   nil;\r
+        cl_state_t              state;\r
+        size_t                  count;\r
+\r
+} <strong>cl_qmap_t</strong>;\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       root\r
+               <a href="./cl_map_h.html#robo17">Map</a> item that serves as root of the map.  The root is set up to\r
+               always have itself as parent.  The left pointer is set to point to\r
+               the item at the root.\r
+\r
+       nil\r
+               <a href="./cl_map_h.html#robo17">Map</a> item that serves as terminator for all leaves, as well as providing\r
+               the list item used as quick list for storing map items in a list for\r
+               faster traversal.\r
+\r
+       state\r
+               State of the map, used to verify that operations are permitted.\r
+\r
+       count\r
+               Number of items in the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo614">[Functions]<a name="Component20Library3a20Quick20Map2fcl5fqmap5ftail">\r
+Component Library: Quick Map/cl_qmap_tail</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qmap_tail</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qmap_tail</strong> function returns the map item with the highest key\r
+       value stored in a quick map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo593">cl_map_item_t</a>* CL_API\r
+<strong>cl_qmap_tail</strong>(\r
+        IN      const <a href="#robo613">cl_qmap_t</a>* const  p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+        return( (<a href="#robo593">cl_map_item_t</a>*)p_map-&gt;nil.pool_item.list_item.p_prev );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo613">cl_qmap_t</a> structure whose item with the highest key\r
+               is returned.\r
+\r
+ RETURN VALUES\r
+       Pointer to the map item with the highest key in the quick map.\r
+\r
+       Pointer to the map end if the quick map was empty.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <a href="#robo599">cl_qmap_end</a> does not remove the item from the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo601">cl_qmap_head</a>, <a href="#robo606">cl_qmap_next</a>, <a href="#robo608">cl_qmap_prev</a>, <a href="#robo599">cl_qmap_end</a>,\r
+       cl_qmap_item_t\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_qpool_h.html b/trunk/docs/complib/cl_qpool_h.html
new file mode 100644 (file)
index 0000000..49d3888
--- /dev/null
@@ -0,0 +1,628 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_qpool_h.html</title>\r
+<!-- Source: ./inc/complib/cl_qpool.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_qpool.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo29">[Modules]<a name="Component20Library2fQuick20Pool">\r
+Component Library/Quick Pool</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Quick <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The quick pool provides a self-contained and self-sustaining pool\r
+       of user defined objects.\r
+\r
+       To aid in object oriented design, the quick pool provides the user\r
+       the ability to specify callbacks that are invoked for each object for\r
+       construction, initialization, and destruction. Constructor and destructor\r
+       callback functions may not fail.\r
+\r
+       A quick pool does not return memory to the system as the user returns\r
+       objects to the pool. The only method of returning memory to the system is\r
+       to destroy the pool.\r
+\r
+       The quick pool operates on <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a> structures that describe\r
+       objects. This can provides for more efficient memory use and operation.\r
+       If using a <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a> is not desired, the <a href="./cl_pool_h.html#robo24">Pool</a> provides similar\r
+       functionality but operates on opaque objects.\r
+\r
+       The quick pool functions operates on a <a href="#robo626">cl_qpool_t</a> structure which should\r
+       be treated as opaque and should be manipulated only through the provided\r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo626">cl_qpool_t</a>, <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>\r
+\r
+       Callbacks:\r
+               <a href="#robo617">cl_pfn_qpool_init_t</a>, <a href="#robo616">cl_pfn_qpool_dtor_t</a>\r
+\r
+       Initialization/Destruction:\r
+               <a href="#robo618">cl_qpool_construct</a>, <a href="#robo623">cl_qpool_init</a>, <a href="#robo620">cl_qpool_destroy</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo621">cl_qpool_get</a>, <a href="#robo624">cl_qpool_put</a>, <a href="#robo625">cl_qpool_put_list</a>, <a href="#robo622">cl_qpool_grow</a>\r
+\r
+       Attributes:\r
+               <a href="#robo615">cl_is_qpool_inited</a>, <a href="#robo619">cl_qpool_count</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo615">[Functions]<a name="Component20Library3a20Quick20Pool2fcl5fis5fqpool5finited">\r
+Component Library: Quick Pool/cl_is_qpool_inited</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_qpool_inited</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_qpool_inited</strong> function returns whether a quick pool was\r
+       successfully initialized.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE uint32_t CL_API\r
+<strong>cl_is_qpool_inited</strong>(\r
+        IN      const <a href="#robo626">cl_qpool_t</a>* const p_pool )\r
+{\r
+        /* CL_ASSERT that a non-null pointer is provided. */\r
+        CL_ASSERT( p_pool );\r
+        return( <a href="./cl_qcomppool_h.html#robo539">cl_is_qcpool_inited</a>( &amp;p_pool-&gt;qcpool ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo626">cl_qpool_t</a> structure whose initialization state\r
+               to check.\r
+\r
+ RETURN VALUES\r
+       TRUE if the quick pool was initialized successfully.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows checking the state of a quick pool to determine if\r
+       invoking member functions is appropriate.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo616">[Definitions]<a name="Component20Library3a20Quick20Pool2fcl5fpfn5fqpool5fdtor5ft">\r
+Component Library: Quick Pool/cl_pfn_qpool_dtor_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_qpool_dtor_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_qpool_dtor_t</strong> function type defines the prototype for\r
+       functions used as destructor for objects being deallocated by a\r
+       quick pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_qpool_dtor_t</strong>)(\r
+        IN      const <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>* const     p_pool_item,\r
+        IN      void*                                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool_item\r
+               [in] Pointer to a <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a> structure representing an object.\r
+\r
+       context\r
+               [in] Context provided in a call to <a href="#robo623">cl_qpool_init</a>.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the function provided by the user as an optional parameter to the\r
+       <a href="#robo623">cl_qpool_init</a> function.\r
+\r
+       The destructor is invoked once per allocated object, allowing the user\r
+       to perform any necessary cleanup. Users should not attempt to deallocate\r
+       the memory for the object, as the quick pool manages object\r
+       allocation and deallocation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo623">cl_qpool_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo617">[Definitions]<a name="Component20Library3a20Quick20Pool2fcl5fpfn5fqpool5finit5ft">\r
+Component Library: Quick Pool/cl_pfn_qpool_init_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_qpool_init_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_qpool_init_t</strong> function type defines the prototype for\r
+       functions used as constructor for objects being allocated by a\r
+       quick pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./cl_types_h.html#robo304">cl_status_t</a>\r
+(CL_API *<strong>cl_pfn_qpool_init_t</strong>)(\r
+        IN      void* const                             p_object,\r
+        IN      void*                                   context,\r
+        OUT     <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>** const  pp_pool_item );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_object\r
+               [in] Pointer to an object to initialize.\r
+\r
+       context\r
+               [in] Context provided in a call to <a href="#robo623">cl_qpool_init</a>.\r
+\r
+ RETURN VALUES\r
+       Return CL_SUCCESS to indicate that initialization of the object\r
+       was successful and that initialization of further objects may continue.\r
+\r
+       Other <a href="./cl_types_h.html#robo304">cl_status_t</a> values will be returned by <a href="./cl_qcomppool_h.html#robo548">cl_qcpool_init</a>\r
+       and <a href="./cl_qcomppool_h.html#robo547">cl_qcpool_grow</a>.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the function provided by the user as an optional parameter to the\r
+       <a href="#robo623">cl_qpool_init</a> function.\r
+\r
+       The initializer is invoked once per allocated object, allowing the user\r
+       to perform any necessary initialization.  Returning a status other than\r
+       CL_SUCCESS aborts a grow operation, initiated either through <a href="./cl_qcomppool_h.html#robo548">cl_qcpool_init</a>\r
+       or <a href="./cl_qcomppool_h.html#robo547">cl_qcpool_grow</a>, causing the initiating function to fail.\r
+       Any non-CL_SUCCESS status will be returned by the function that initiated\r
+       the grow operation.\r
+\r
+       All memory for the object is pre-allocated.  Users should include space in\r
+       their objects for the <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a> structure that will represent the\r
+       object to avoid having to allocate that structure in the initialization\r
+       callback.\r
+\r
+       When later performing a <a href="./cl_qcomppool_h.html#robo546">cl_qcpool_get</a> call, the return value is a pointer\r
+       to the <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a> returned by this function in the pp_pool_item\r
+       parameter.  Users must set pp_pool_item to a valid pointer to the\r
+       <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a> representing the object if they return CL_SUCCESS.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo623">cl_qpool_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo618">[Functions]<a name="Component20Library3a20Quick20Pool2fcl5fqpool5fconstruct">\r
+Component Library: Quick Pool/cl_qpool_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qpool_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qpool_construct</strong> function constructs a quick pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_qpool_construct</strong>(\r
+        IN      <a href="#robo626">cl_qpool_t</a>* const       p_pool );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo626">cl_qpool_t</a> structure whose state to initialize.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo623">cl_qpool_init</a>, <a href="#robo620">cl_qpool_destroy</a>, <a href="#robo615">cl_is_qpool_inited</a>.\r
+\r
+       Calling <strong>cl_qpool_construct</strong> is a prerequisite to calling any other\r
+       quick pool function except <a href="./cl_pool_h.html#robo536">cl_pool_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo623">cl_qpool_init</a>, <a href="#robo620">cl_qpool_destroy</a>, <a href="#robo615">cl_is_qpool_inited</a>.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo619">[Functions]<a name="Component20Library3a20Quick20Pool2fcl5fqpool5fcount">\r
+Component Library: Quick Pool/cl_qpool_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qpool_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qpool_count</strong> function returns the number of available objects\r
+       in a quick pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_qpool_count</strong>(\r
+        IN      <a href="#robo626">cl_qpool_t</a>* const       p_pool )\r
+{\r
+        CL_ASSERT( p_pool );\r
+        return( <a href="./cl_qcomppool_h.html#robo544">cl_qcpool_count</a>( &amp;p_pool-&gt;qcpool ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo626">cl_qpool_t</a> structure for which the number of\r
+               available objects is requested.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the number of objects available in the specified quick pool.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo620">[Functions]<a name="Component20Library3a20Quick20Pool2fcl5fqpool5fdestroy">\r
+Component Library: Quick Pool/cl_qpool_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qpool_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qpool_destroy</strong> function destroys a quick pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qpool_destroy</strong>(\r
+        IN      <a href="#robo626">cl_qpool_t</a>* const       p_pool )\r
+{\r
+        CL_ASSERT( p_pool );\r
+        <a href="./cl_qcomppool_h.html#robo545">cl_qcpool_destroy</a>( &amp;p_pool-&gt;qcpool );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo626">cl_qpool_t</a> structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       All memory allocated for objects is freed. The destructor callback,\r
+       if any, will be invoked for every allocated object. Further operations\r
+       on the pool should not be attempted after <strong>cl_qpool_destroy</strong>\r
+       is invoked.\r
+\r
+       This function should only be called after a call to\r
+       <a href="#robo618">cl_qpool_construct</a> or <a href="#robo623">cl_qpool_init</a>.\r
+\r
+       In a debug build, <strong>cl_qpool_destroy</strong> asserts that all objects are in\r
+       the pool.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo618">cl_qpool_construct</a>, <a href="#robo623">cl_qpool_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo621">[Functions]<a name="Component20Library3a20Quick20Pool2fcl5fqpool5fget">\r
+Component Library: Quick Pool/cl_qpool_get</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qpool_get</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qpool_get</strong> function retrieves an object from a\r
+       quick pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>* CL_API\r
+<strong>cl_qpool_get</strong>(\r
+        IN      <a href="#robo626">cl_qpool_t</a>* const       p_pool )\r
+{\r
+        CL_ASSERT( p_pool );\r
+        return( <a href="./cl_qcomppool_h.html#robo546">cl_qcpool_get</a>( &amp;p_pool-&gt;qcpool ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo626">cl_qpool_t</a> structure from which to retrieve\r
+               an object.\r
+\r
+ RETURN VALUES\r
+       Returns a pointer to a <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a> for an object.\r
+\r
+       Returns NULL if the pool is empty and can not be grown automatically.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qpool_get</strong> returns the object at the head of the pool. If the pool is\r
+       empty, it is automatically grown to accommodate this request unless the\r
+       grow_size parameter passed to the <a href="#robo623">cl_qpool_init</a> function was zero.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_pool_h.html#robo24">Pool</a>, cl_qpool_get_tail, <a href="#robo624">cl_qpool_put</a>, <a href="#robo622">cl_qpool_grow</a>, <a href="#robo619">cl_qpool_count</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo622">[Functions]<a name="Component20Library3a20Quick20Pool2fcl5fqpool5fgrow">\r
+Component Library: Quick Pool/cl_qpool_grow</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qpool_grow</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qpool_grow</strong> function grows a quick pool by\r
+       the specified number of objects.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_qpool_grow</strong>(\r
+        IN      <a href="#robo626">cl_qpool_t</a>* const       p_pool,\r
+        IN      const size_t            obj_count )\r
+{\r
+        CL_ASSERT( p_pool );\r
+        return( <a href="./cl_qcomppool_h.html#robo547">cl_qcpool_grow</a>( &amp;p_pool-&gt;qcpool, obj_count ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo626">cl_qpool_t</a> structure whose capacity to grow.\r
+\r
+       obj_count\r
+               [in] Number of objects by which to grow the pool.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the quick pool grew successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to grow the\r
+       quick pool.\r
+\r
+       <a href="./cl_types_h.html#robo304">cl_status_t</a> value returned by optional initialization callback function\r
+       specified by the pfn_initializer parameter passed to the\r
+       <a href="#robo623">cl_qpool_init</a> function.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       It is not necessary to call <strong>cl_qpool_grow</strong> if the pool is\r
+       configured to grow automatically.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo623">[Functions]<a name="Component20Library3a20Quick20Pool2fcl5fqpool5finit">\r
+Component Library: Quick Pool/cl_qpool_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qpool_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qpool_init</strong> function initializes a quick pool for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_qpool_init</strong>(\r
+        IN      <a href="#robo626">cl_qpool_t</a>* const               p_pool,\r
+        IN      const size_t                    min_size,\r
+        IN      const size_t                    max_size,\r
+        IN      const size_t                    grow_size,\r
+        IN      const size_t                    object_size,\r
+        IN      <a href="#robo617">cl_pfn_qpool_init_t</a>             pfn_initializer OPTIONAL,\r
+        IN      <a href="#robo616">cl_pfn_qpool_dtor_t</a>             pfn_destructor OPTIONAL,\r
+        IN      const void* const               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo626">cl_qpool_t</a> structure to initialize.\r
+\r
+       min_size\r
+               [in] Minimum number of objects that the pool should support. All\r
+               necessary allocations to allow storing the minimum number of items\r
+               are performed at initialization time, and all necessary callbacks\r
+               successfully invoked.\r
+\r
+       max_size\r
+               [in] Maximum number of objects to which the pool is allowed to grow.\r
+               A value of zero specifies no maximum.\r
+\r
+       grow_size\r
+               [in] Number of objects to allocate when incrementally growing the pool.\r
+               A value of zero disables automatic growth.\r
+\r
+       object_size\r
+               [in] Size, in bytes, of each object.\r
+\r
+       pfn_initializer\r
+               [in] Initialization callback to invoke for every new object when\r
+               growing the pool. This parameter is optional and may be NULL. If NULL,\r
+               the pool assumes the <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a> structure describing objects is\r
+               located at the head of each object. See the <a href="#robo617">cl_pfn_qpool_init_t</a>\r
+               function type declaration for details about the callback function.\r
+\r
+       pfn_destructor\r
+               [in] Destructor callback to invoke for every object before memory for\r
+               that object is freed. This parameter is optional and may be NULL.\r
+               See the <a href="#robo616">cl_pfn_qpool_dtor_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the quick pool was initialized successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize the\r
+       quick pool.\r
+\r
+       CL_INVALID_SETTING if a the maximum size is non-zero and less than the\r
+       minimum size.\r
+\r
+       Other <a href="./cl_types_h.html#robo304">cl_status_t</a> value returned by optional initialization callback function\r
+       specified by the pfn_initializer parameter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qpool_init</strong> initializes, and if necessary, grows the pool to\r
+       the capacity desired.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo618">cl_qpool_construct</a>, <a href="#robo620">cl_qpool_destroy</a>,\r
+       <a href="#robo621">cl_qpool_get</a>, <a href="#robo624">cl_qpool_put</a>, <a href="#robo622">cl_qpool_grow</a>,\r
+       <a href="#robo619">cl_qpool_count</a>, <a href="#robo617">cl_pfn_qpool_init_t</a>, <a href="#robo617">cl_pfn_qpool_init_t</a>,\r
+       <a href="#robo616">cl_pfn_qpool_dtor_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo624">[Functions]<a name="Component20Library3a20Quick20Pool2fcl5fqpool5fput">\r
+Component Library: Quick Pool/cl_qpool_put</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qpool_put</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qpool_put</strong> function returns an object to the head of a quick pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qpool_put</strong>(\r
+        IN      <a href="#robo626">cl_qpool_t</a>* const               p_pool,\r
+        IN      <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>* const   p_pool_item )\r
+{\r
+        CL_ASSERT( p_pool );\r
+        <a href="./cl_qcomppool_h.html#robo549">cl_qcpool_put</a>( &amp;p_pool-&gt;qcpool, p_pool_item );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo626">cl_qpool_t</a> structure to which to return\r
+               an object.\r
+\r
+       p_pool_item\r
+               [in] Pointer to a <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a> structure for the object\r
+               being returned.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qpool_put</strong> places the returned object at the head of the pool.\r
+\r
+       The object specified by the p_pool_item parameter must have been\r
+       retrieved from the pool by a previous call to <a href="#robo621">cl_qpool_get</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_pool_h.html#robo24">Pool</a>, cl_qpool_put_tail, <a href="#robo621">cl_qpool_get</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo625">[Functions]<a name="Component20Library3a20Quick20Pool2fcl5fqpool5fput5flist">\r
+Component Library: Quick Pool/cl_qpool_put_list</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qpool_put_list</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_qpool_put_list</strong> function returns a list of objects to the head\r
+       of a quick pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_qpool_put_list</strong>(\r
+        IN      <a href="#robo626">cl_qpool_t</a>* const       p_pool,\r
+        IN      <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a>* const       p_list )\r
+{\r
+        CL_ASSERT( p_pool );\r
+        <a href="./cl_qcomppool_h.html#robo550">cl_qcpool_put_list</a>( &amp;p_pool-&gt;qcpool, p_list );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pool\r
+               [in] Pointer to a <a href="#robo626">cl_qpool_t</a> structure to which to return\r
+               a list of objects.\r
+\r
+       p_list\r
+               [in] Pointer to a <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a> structure for the list of objects\r
+               being returned.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_qpool_put_list</strong> places the returned objects at the head of the pool.\r
+\r
+       The objects in the list specified by the p_list parameter must have been\r
+       retrieved from the pool by a previous call to <a href="#robo621">cl_qpool_get</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo624">cl_qpool_put</a>, cl_qpool_put_tail, <a href="#robo621">cl_qpool_get</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo626">[Structures]<a name="Component20Library3a20Quick20Pool2fcl5fqpool5ft">\r
+Component Library: Quick Pool/cl_qpool_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_qpool_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Quick pool structure.\r
+\r
+       The <strong>cl_qpool_t</strong> structure should be treated as opaque and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_qpool\r
+{\r
+        <a href="./cl_qcomppool_h.html#robo551">cl_qcpool_t</a>                             qcpool;\r
+        <a href="#robo617">cl_pfn_qpool_init_t</a>             pfn_init;\r
+        <a href="#robo616">cl_pfn_qpool_dtor_t</a>             pfn_dtor;\r
+        const void                              *context;\r
+\r
+} <strong>cl_qpool_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       qcpool\r
+               Quick composite pool that manages all objects.\r
+\r
+       pfn_init\r
+               Pointer to the user's initializer callback, used by the pool\r
+               to translate the quick composite pool's initializer callback to\r
+               a quick pool initializer callback.\r
+\r
+       pfn_dtor\r
+               Pointer to the user's destructor callback, used by the pool\r
+               to translate the quick composite pool's destructor callback to\r
+               a quick pool destructor callback.\r
+\r
+       context\r
+               User's provided context for callback functions, used by the pool\r
+               to when invoking callbacks.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Quick <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_rbmap_h.html b/trunk/docs/complib/cl_rbmap_h.html
new file mode 100644 (file)
index 0000000..3af410b
--- /dev/null
@@ -0,0 +1,563 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_rbmap_h.html</title>\r
+<!-- Source: ./inc/complib/cl_rbmap.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_rbmap.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo30">[Modules]<a name="Component20Library2fRB20Map">\r
+Component Library/RB Map</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       RB <a href="./cl_map_h.html#robo17">Map</a>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       RB map implements a binary tree that stores user provided <a href="#robo632">cl_rbmap_item_t</a>\r
+       structures.  Each item stored in a RB map has a unique key\r
+       (duplicates are not allowed).  RB map provides the ability to\r
+       efficiently search for an item given a key.\r
+\r
+       RB map does not allocate any memory, and can therefore not fail\r
+       any operations due to insufficient memory.  RB map can thus be useful\r
+       in minimizing the error paths in code.\r
+\r
+       RB map is not thread safe, and users must provide serialization when\r
+       adding and removing items from the map.\r
+\r
+       The RB map functions operate on a <a href="#robo638">cl_rbmap_t</a> structure which should be\r
+       treated as opaque and should be manipulated only through the provided\r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo638">cl_rbmap_t</a>, <a href="#robo632">cl_rbmap_item_t</a>\r
+\r
+       Initialization:\r
+               <a href="#robo630">cl_rbmap_init</a>\r
+\r
+       Iteration:\r
+               <a href="#robo637">cl_rbmap_root</a>, <a href="#robo629">cl_rbmap_end</a>, <a href="#robo633">cl_rbmap_left</a>, <a href="#robo636">cl_rbmap_right</a>, cl_rbmap_up\r
+\r
+       Manipulation:\r
+               <a href="#robo631">cl_rbmap_insert</a>, cl_rbmap_get, <a href="#robo634">cl_rbmap_remove_item</a>, cl_rbmap_remove,\r
+               <a href="#robo635">cl_rbmap_reset</a>, cl_rbmap_merge, cl_rbmap_delta\r
+\r
+       Search:\r
+               cl_rbmap_apply_func\r
+\r
+       Attributes:\r
+               <a href="#robo628">cl_rbmap_count</a>, <a href="#robo627">cl_is_rbmap_empty</a>,\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo627">[Functions]<a name="Component20Library3a20RB20Map2fcl5fis5frbmap5fempty">\r
+Component Library: RB Map/cl_is_rbmap_empty</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_rbmap_empty</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_rbmap_empty</strong> function returns whether a RB map is empty.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE boolean_t CL_API\r
+<strong>cl_is_rbmap_empty</strong>(\r
+        IN      const <a href="#robo638">cl_rbmap_t</a>* const p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+\r
+        return( p_map-&gt;count == 0 );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo638">cl_rbmap_t</a> structure to test for emptiness.\r
+\r
+ RETURN VALUES\r
+       TRUE if the RB map is empty.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       RB <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo628">cl_rbmap_count</a>, <a href="#robo635">cl_rbmap_reset</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo628">[Functions]<a name="Component20Library3a20RB20Map2fcl5frbmap5fcount">\r
+Component Library: RB Map/cl_rbmap_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rbmap_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_rbmap_count</strong> function returns the number of items stored\r
+       in a RB map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_rbmap_count</strong>(\r
+        IN      const <a href="#robo638">cl_rbmap_t</a>* const p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+        return( p_map-&gt;count );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo638">cl_rbmap_t</a> structure whose item count to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the number of items stored in the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       RB <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo627">cl_is_rbmap_empty</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo629">[Functions]<a name="Component20Library3a20RB20Map2fcl5frbmap5fend">\r
+Component Library: RB Map/cl_rbmap_end</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rbmap_end</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_rbmap_end</strong> function returns the end of a RB map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE const <a href="#robo632">cl_rbmap_item_t</a>* const CL_API\r
+<strong>cl_rbmap_end</strong>(\r
+        IN      const <a href="#robo638">cl_rbmap_t</a>* const p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+        /* Nil is the end of the map. */\r
+        return( &amp;p_map-&gt;nil );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo638">cl_rbmap_t</a> structure whose end to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Pointer to the end of the map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_rbmap_end</strong> is useful for determining the validity of map items returned\r
+       by cl_rbmap_head, cl_rbmap_tail, cl_rbmap_next, or cl_rbmap_prev.  If the map\r
+       item pointer returned by any of these functions compares to the end, the\r
+       end of the map was encoutered.\r
+       When using cl_rbmap_head or cl_rbmap_tail, this condition indicates that\r
+       the map is empty.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       RB <a href="./cl_map_h.html#robo17">Map</a>, cl_rbmap_head, cl_rbmap_tail, cl_rbmap_next, cl_rbmap_prev\r
+       <a href="#robo637">cl_rbmap_root</a>, <a href="#robo633">cl_rbmap_left</a>, <a href="#robo636">cl_rbmap_right</a>, cl_rbmap_up\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo630">[Functions]<a name="Component20Library3a20RB20Map2fcl5frbmap5finit">\r
+Component Library: RB Map/cl_rbmap_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rbmap_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_rbmap_init</strong> function initialized a RB map for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_rbmap_init</strong>(\r
+        IN      <a href="#robo638">cl_rbmap_t</a>* const       p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+\r
+        /* special setup for the root node */\r
+        p_map-&gt;root.p_left = &amp;p_map-&gt;nil;\r
+        p_map-&gt;root.p_right = &amp;p_map-&gt;nil;\r
+        p_map-&gt;root.p_up = &amp;p_map-&gt;root;\r
+        p_map-&gt;root.color = CL_MAP_BLACK;\r
+\r
+        /* Setup the node used as terminator for all leaves. */\r
+        p_map-&gt;nil.p_left = &amp;p_map-&gt;nil;\r
+        p_map-&gt;nil.p_right = &amp;p_map-&gt;nil;\r
+        p_map-&gt;nil.p_up = &amp;p_map-&gt;nil;\r
+        p_map-&gt;nil.color = CL_MAP_BLACK;\r
+\r
+#ifdef _DEBUG_\r
+        p_map-&gt;root.p_map = p_map;\r
+        p_map-&gt;nil.p_map = p_map;\r
+#endif\r
+\r
+        p_map-&gt;state = CL_INITIALIZED;\r
+\r
+        p_map-&gt;count = 0;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo638">cl_rbmap_t</a> structure to initialize.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling RB map manipulation functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       RB <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo631">cl_rbmap_insert</a>, cl_rbmap_remove\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo631">[Functions]<a name="Component20Library3a20RB20Map2fcl5frbmap5finsert">\r
+Component Library: RB Map/cl_rbmap_insert</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rbmap_insert</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_rbmap_insert</strong> function inserts a map item into a RB map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_rbmap_insert</strong>(\r
+        IN      <a href="#robo638">cl_rbmap_t</a>* const               p_map,\r
+        IN      <a href="#robo632">cl_rbmap_item_t</a>* const  p_insert_at,\r
+        IN      <a href="#robo632">cl_rbmap_item_t</a>* const  p_item,\r
+        IN      boolean_t                               left );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo638">cl_rbmap_t</a> structure into which to add the item.\r
+\r
+       p_insert_at\r
+               [in] Pointer to a <a href="#robo632">cl_rbmap_item_t</a> structure to serve as parent\r
+               to p_item.\r
+\r
+       p_item\r
+               [in] Pointer to a <a href="#robo632">cl_rbmap_item_t</a> stucture to insert into the RB map.\r
+\r
+       left\r
+               [in] Indicates that p_item should be inserted to the left of p_insert_at.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Pointer to the item in the map with the specified key.  If insertion\r
+       was successful, this is the pointer to the item.  If an item with the\r
+       specified key already exists in the map, the pointer to that item is\r
+       returned.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Insertion operations may cause the RB map to rebalance.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       RB <a href="./cl_map_h.html#robo17">Map</a>, cl_rbmap_remove, <a href="#robo632">cl_rbmap_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo632">[Structures]<a name="Component20Library3a20RB20Map2fcl5frbmap5fitem5ft">\r
+Component Library: RB Map/cl_rbmap_item_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rbmap_item_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_rbmap_item_t</strong> structure is used by maps to store objects.\r
+\r
+       The <strong>cl_rbmap_item_t</strong> structure should be treated as opaque and should\r
+       be manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_rbmap_item\r
+{\r
+        struct _cl_rbmap_item           *p_left;\r
+        struct _cl_rbmap_item           *p_right;\r
+        struct _cl_rbmap_item           *p_up;\r
+        cl_map_color_t                          color;\r
+#ifdef _DEBUG_\r
+        struct _cl_rbmap                        *p_map;\r
+#endif\r
+\r
+} <strong>cl_rbmap_item_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       p_left\r
+               Pointer to the map item that is a child to the left of the node.\r
+\r
+       p_right\r
+               Pointer to the map item that is a child to the right of the node.\r
+\r
+       p_up\r
+               Pointer to the map item that is the parent of the node.\r
+\r
+       color\r
+               Indicates whether a node is red or black in the map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       None of the fields of this structure should be manipulated by users, as\r
+       they are crititcal to the proper operation of the map in which they\r
+       are stored.\r
+\r
+       To allow storing items in either a quick list, a quick pool, or a quick\r
+       map, the map implementation guarantees that the map item can be safely\r
+       cast to a pool item used for storing an object in a quick pool, or cast to\r
+       a list item used for storing an object in a quick list.  This removes the\r
+       need to embed a map item, a list item, and a pool item in objects that need\r
+       to be stored in a quick list, a quick pool, and a RB map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       RB <a href="./cl_map_h.html#robo17">Map</a>, <a href="#robo631">cl_rbmap_insert</a>, cl_rbmap_key, <a href="./cl_qcomppool_h.html#robo542">cl_pool_item_t</a>, <a href="./cl_qlist_h.html#robo554">cl_list_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo633">[Functions]<a name="Component20Library3a20RB20Map2fcl5frbmap5fleft">\r
+Component Library: RB Map/cl_rbmap_left</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rbmap_left</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_rbmap_left</strong> function returns the map item to the left\r
+       of the specified map item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo632">cl_rbmap_item_t</a>* CL_API\r
+<strong>cl_rbmap_left</strong>(\r
+        IN      const <a href="#robo632">cl_rbmap_item_t</a>* const    p_item )\r
+{\r
+        CL_ASSERT( p_item );\r
+        return( (<a href="#robo632">cl_rbmap_item_t</a>*)p_item-&gt;p_left );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               [in] Pointer to a map item whose predecessor to return.\r
+\r
+ RETURN VALUES\r
+       Pointer to the map item to the left in a RB map.\r
+\r
+       Pointer to the map end if no item is to the left.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       RB <a href="./cl_map_h.html#robo17">Map</a>, cl_rbmap_head, cl_rbmap_tail, cl_rbmap_next, <a href="#robo629">cl_rbmap_end</a>,\r
+       <a href="#robo632">cl_rbmap_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo634">[Functions]<a name="Component20Library3a20RB20Map2fcl5frbmap5fremove5fitem">\r
+Component Library: RB Map/cl_rbmap_remove_item</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rbmap_remove_item</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_rbmap_remove_item</strong> function removes the specified map item\r
+       from a RB map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_rbmap_remove_item</strong>(\r
+        IN      <a href="#robo638">cl_rbmap_t</a>* const               p_map,\r
+        IN      <a href="#robo632">cl_rbmap_item_t</a>* const  p_item );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               [in] Pointer to a map item to remove from its RB map.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+\r
+       In a debug build, <strong>cl_rbmap_remove_item</strong> asserts that the item being removed\r
+       is in the specified map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Removes the map item pointed to by p_item from its RB map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       RB <a href="./cl_map_h.html#robo17">Map</a>, cl_rbmap_remove, <a href="#robo635">cl_rbmap_reset</a>, <a href="#robo631">cl_rbmap_insert</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo635">[Functions]<a name="Component20Library3a20RB20Map2fcl5frbmap5freset">\r
+Component Library: RB Map/cl_rbmap_reset</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rbmap_reset</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_rbmap_reset</strong> function removes all items in a RB map,\r
+       leaving it empty.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_rbmap_reset</strong>(\r
+        IN      <a href="#robo638">cl_rbmap_t</a>* const       p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        CL_ASSERT( p_map-&gt;state == CL_INITIALIZED );\r
+\r
+        p_map-&gt;root.p_left = &amp;p_map-&gt;nil;\r
+        p_map-&gt;count = 0;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo638">cl_rbmap_t</a> structure to empty.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       RB <a href="./cl_map_h.html#robo17">Map</a>, cl_rbmap_remove, <a href="#robo634">cl_rbmap_remove_item</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo636">[Functions]<a name="Component20Library3a20RB20Map2fcl5frbmap5fright">\r
+Component Library: RB Map/cl_rbmap_right</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rbmap_right</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_rbmap_right</strong> function returns the map item to the right\r
+       of the specified map item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo632">cl_rbmap_item_t</a>* CL_API\r
+<strong>cl_rbmap_right</strong>(\r
+        IN      const <a href="#robo632">cl_rbmap_item_t</a>* const    p_item )\r
+{\r
+        CL_ASSERT( p_item );\r
+        return( (<a href="#robo632">cl_rbmap_item_t</a>*)p_item-&gt;p_right );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               [in] Pointer to a map item whose predecessor to return.\r
+\r
+ RETURN VALUES\r
+       Pointer to the map item to the right in a RB map.\r
+\r
+       Pointer to the map end if no item is to the right.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       RB <a href="./cl_map_h.html#robo17">Map</a>, cl_rbmap_head, cl_rbmap_tail, cl_rbmap_next, <a href="#robo629">cl_rbmap_end</a>,\r
+       <a href="#robo632">cl_rbmap_item_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo637">[Functions]<a name="Component20Library3a20RB20Map2fcl5frbmap5froot">\r
+Component Library: RB Map/cl_rbmap_root</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rbmap_root</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_rbmap_root</strong> function returns the root of a RB map.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE <a href="#robo632">cl_rbmap_item_t</a>* const CL_API\r
+<strong>cl_rbmap_root</strong>(\r
+        IN      const <a href="#robo638">cl_rbmap_t</a>* const p_map )\r
+{\r
+        CL_ASSERT( p_map );\r
+        return( p_map-&gt;root.p_left );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_map\r
+               [in] Pointer to a <a href="#robo638">cl_rbmap_t</a> structure whose root to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Pointer to the end of the map.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <a href="#robo629">cl_rbmap_end</a> is useful for determining the validity of map items returned\r
+       by cl_rbmap_head, cl_rbmap_tail, cl_rbmap_next, or cl_rbmap_prev.  If the map\r
+       item pointer returned by any of these functions compares to the end, the\r
+       end of the map was encoutered.\r
+       When using cl_rbmap_head or cl_rbmap_tail, this condition indicates that\r
+       the map is empty.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       RB <a href="./cl_map_h.html#robo17">Map</a>, cl_rbmap_head, cl_rbmap_tail, cl_rbmap_next, cl_rbmap_prev,\r
+       <a href="#robo629">cl_rbmap_end</a>, <a href="#robo633">cl_rbmap_left</a>, <a href="#robo636">cl_rbmap_right</a>, cl_rbmap_up\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo638">[Structures]<a name="Component20Library3a20RB20Map2fcl5frbmap5ft">\r
+Component Library: RB Map/cl_rbmap_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rbmap_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Quick map structure.\r
+\r
+       The <strong>cl_rbmap_t</strong> structure should be treated as opaque and should\r
+       be manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_rbmap\r
+{\r
+        <a href="#robo632">cl_rbmap_item_t</a> root;\r
+        <a href="#robo632">cl_rbmap_item_t</a> nil;\r
+        cl_state_t              state;\r
+        size_t                  count;\r
+\r
+} <strong>cl_rbmap_t</strong>;\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       root\r
+               <a href="./cl_map_h.html#robo17">Map</a> item that serves as root of the map.  The root is set up to\r
+               always have itself as parent.  The left pointer is set to point to\r
+               the item at the root.\r
+\r
+       nil\r
+               <a href="./cl_map_h.html#robo17">Map</a> item that serves as terminator for all leaves, as well as providing\r
+               the list item used as quick list for storing map items in a list for\r
+               faster traversal.\r
+\r
+       state\r
+               State of the map, used to verify that operations are permitted.\r
+\r
+       count\r
+               Number of items in the map.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       RB <a href="./cl_map_h.html#robo17">Map</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_reqmgr_h.html b/trunk/docs/complib/cl_reqmgr_h.html
new file mode 100644 (file)
index 0000000..b952eb0
--- /dev/null
@@ -0,0 +1,463 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_reqmgr_h.html</title>\r
+<!-- Source: ./inc/complib/cl_reqmgr.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_reqmgr.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo31">[Modules]<a name="Component20Library2fRequest20Manager">\r
+Component Library/Request Manager</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Request Manager\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The Request Manager manages synchronous as well as asynchronous\r
+       requests for objects.\r
+\r
+       Request manager does not supply the objects, but merely returns whether\r
+       objects are available to satisfy requests. This allows users to use\r
+       various sources for objects.\r
+\r
+       While the request manager manages synchronous and asynchronous requests\r
+       for objects, it does not itself operate asynchronously. Instead, the\r
+       <a href="#robo645">cl_req_mgr_resume</a> function returns information for resuming asynchronous\r
+       requests. If a call to <a href="#robo645">cl_req_mgr_resume</a> returns CL_SUCCESS, additional\r
+       requests may be able to resume. It is recommended that users flush\r
+       pending requests by calling <a href="#robo645">cl_req_mgr_resume</a> while CL_SUCCESS is returned.\r
+\r
+       The request manager functions operates on a <a href="#robo646">cl_req_mgr_t</a> structure which\r
+       should be treated as opaque and should be manipulated only through the\r
+       provided functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Types:\r
+               <a href="#robo647">cl_req_type_t</a>\r
+\r
+       Structures:\r
+               <a href="#robo646">cl_req_mgr_t</a>\r
+\r
+       Callbacks:\r
+               <a href="#robo639">cl_pfn_req_cb_t</a>, <a href="#robo640">cl_pfn_reqmgr_get_count_t</a>\r
+\r
+       Initialization/Destruction:\r
+               <a href="#robo641">cl_req_mgr_construct</a>, <a href="#robo644">cl_req_mgr_init</a>, <a href="#robo642">cl_req_mgr_destroy</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo643">cl_req_mgr_get</a>, <a href="#robo645">cl_req_mgr_resume</a>\r
+\r
+       Attributes:\r
+               cl_is_req_mgr_inited, cl_req_mgr_count\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo639">[Definitions]<a name="Component20Library3a20Request20Manager2fcl5fpfn5freq5fcb5ft">\r
+Component Library: Request Manager/cl_pfn_req_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_req_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_req_cb_t</strong> function type defines the prototype for functions\r
+       used to store a function pointer to a user defined function.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_req_cb_t</strong>)( void );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       This function does not take parameters.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Function pointers specified by this parameter do not have to match the\r
+       defined syntax, as these callbacks are never invoked directly by the\r
+       request manager.  When specifying a function with a different prototype,\r
+       cast the function pointer to this type.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Request Manager, <a href="#robo643">cl_req_mgr_get</a>, <a href="#robo645">cl_req_mgr_resume</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo640">[Definitions]<a name="Component20Library3a20Request20Manager2fcl5fpfn5freqmgr5fget5fcount5ft">\r
+Component Library: Request Manager/cl_pfn_reqmgr_get_count_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_reqmgr_get_count_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_reqmgr_get_count_t</strong> function type defines the prototype for\r
+       functions used to retrieve the number of available objects in a pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef size_t\r
+(CL_API *<strong>cl_pfn_reqmgr_get_count_t</strong>)(\r
+        IN      void*   context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       Context\r
+               [in] Context provided in a call to <a href="#robo644">cl_req_mgr_init</a> by\r
+               the get_context parameter.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the number of objects available in an object pool for which\r
+       requests are managed by a request manager.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for the\r
+       function passed into <a href="#robo644">cl_req_mgr_init</a>. This function is invoked by the\r
+       request manager when trying to fulfill requests for resources, either\r
+       through a call to <a href="#robo643">cl_req_mgr_get</a> or <a href="#robo645">cl_req_mgr_resume</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Request Manager, <a href="#robo644">cl_req_mgr_init</a>, <a href="#robo643">cl_req_mgr_get</a>, <a href="#robo645">cl_req_mgr_resume</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo641">[Functions]<a name="Component20Library3a20Request20Manager2fcl5freq5fmgr5fconstruct">\r
+Component Library: Request Manager/cl_req_mgr_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_req_mgr_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_req_mgr_construct</strong> function constructs a request manager.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_req_mgr_construct</strong>(\r
+        IN      <a href="#robo646">cl_req_mgr_t</a>* const     p_req_mgr );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_req_mgr\r
+               [in] Pointer to a <a href="#robo646">cl_req_mgr_t</a> structure to construct.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_req_mgr_construct</strong> allows calling <a href="#robo642">cl_req_mgr_destroy</a> without first\r
+       calling <a href="#robo644">cl_req_mgr_init</a>.\r
+\r
+       Calling <strong>cl_req_mgr_construct</strong> is a prerequisite to calling any other\r
+       request manager function except <a href="#robo644">cl_req_mgr_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Request Manager, <a href="#robo644">cl_req_mgr_init</a>, <a href="#robo642">cl_req_mgr_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo642">[Functions]<a name="Component20Library3a20Request20Manager2fcl5freq5fmgr5fdestroy">\r
+Component Library: Request Manager/cl_req_mgr_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_req_mgr_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_req_mgr_destroy</strong> function destroys a request manager.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_req_mgr_destroy</strong>(\r
+        IN      <a href="#robo646">cl_req_mgr_t</a>* const     p_req_mgr );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_req_mgr\r
+               [in] Pointer to a <a href="#robo646">cl_req_mgr_t</a> structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_req_mgr_destroy</strong> frees all memory allocated by the request manager.\r
+       Further operations on the request manager should not be attempted.\r
+\r
+       This function should only be called after a call to <a href="#robo641">cl_req_mgr_construct</a>\r
+       or <a href="#robo644">cl_req_mgr_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Request Manager, <a href="#robo641">cl_req_mgr_construct</a>, <a href="#robo644">cl_req_mgr_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo643">[Functions]<a name="Component20Library3a20Request20Manager2fcl5freq5fmgr5fget">\r
+Component Library: Request Manager/cl_req_mgr_get</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_req_mgr_get</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_req_mgr_get</strong> function handles synchronous and asynchronous\r
+       requests for objects.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_req_mgr_get</strong>(\r
+        IN              <a href="#robo646">cl_req_mgr_t</a>* const     p_req_mgr,\r
+        IN OUT  size_t* const           p_count,\r
+        IN              const <a href="#robo647">cl_req_type_t</a>     req_type,\r
+        IN              <a href="#robo639">cl_pfn_req_cb_t</a>         pfn_callback,\r
+        IN              const void* const       context1,\r
+        IN              const void* const       context2 );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_req_mgr\r
+               [in] Pointer to a <a href="#robo646">cl_req_mgr_t</a> structure from which to check\r
+               for resources.\r
+\r
+       p_count\r
+               [in/out] On input, contains the number of objects requested.\r
+               On output, contains the number of objects available.\r
+\r
+       req_type\r
+               [in] Enumerated type describing the type of request. Valid values are:\r
+                       ReqGetSync\r
+                               Synchronous request.\r
+                       ReqGetAsync\r
+                               Asynchronous requests for which all objects are required at\r
+                               once.\r
+                       ReqGetAsyncPartialOk\r
+                               Asynchronous requests that may be broken into multiple smaller\r
+                               requests.\r
+\r
+       pfn_callback\r
+               [in] Pointer to a callback function for use by the caller. This\r
+               callback function is never invoked by the request manager.\r
+\r
+       context1\r
+               [in] First of two contexts for a resource request.\r
+\r
+       context2\r
+               [in] Second of two contexts for a resource request.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if all objects requested are available.\r
+\r
+       CL_PENDING if the request could not be completed in its entirety.\r
+       The p_count parameter contains the number of objects immediately available.\r
+\r
+       CL_INSUFFICIENT_RESOURCES if the request could not be completed due to\r
+       insufficient objects being available.\r
+\r
+       CL_INSUFFICIENT_MEMORY if the request failed due to a lack of system memory.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Upon successful completion of this function, the p_count parameter contains\r
+       the number of objects available.\r
+\r
+       Synchronous requests fail if there are any asynchronous requests pending,\r
+       or if there are not enough resources to immediately satisfy the request in\r
+       its entirety .\r
+\r
+       Asynchronous requests fail if there is insufficient system memory to\r
+       queue them.\r
+\r
+       Once an asynchronous request is queued, use <a href="#robo645">cl_req_mgr_resume</a> to retrieve\r
+       information for resuming queued requests.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Request Manager, <a href="#robo645">cl_req_mgr_resume</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo644">[Functions]<a name="Component20Library3a20Request20Manager2fcl5freq5fmgr5finit">\r
+Component Library: Request Manager/cl_req_mgr_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_req_mgr_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_req_mgr_init</strong> function initializes a request manager for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_req_mgr_init</strong>(\r
+        IN      <a href="#robo646">cl_req_mgr_t</a>* const                     p_req_mgr,\r
+        IN      <a href="#robo640">cl_pfn_reqmgr_get_count_t</a>       pfn_get_count,\r
+        IN      const void* const                       get_context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_req_mgr\r
+               [in] Pointer to a <a href="#robo646">cl_req_mgr_t</a> structure to initialize.\r
+\r
+       pfn_get_count\r
+               [in] Callback function invoked by the request manager to get the\r
+               number of objects available in a pool of objects for which the\r
+               request manager is managing requests.\r
+               See the cl_pfn_req_mgr_get_count_t function type declaration for\r
+               details about the callback function.\r
+\r
+       get_context\r
+               [in] Context to pass into the function specified by the\r
+               pfn_get_count parameter.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the request manager was successfully initialized.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize\r
+       the request manager.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Request Manager, <a href="#robo641">cl_req_mgr_construct</a>, <a href="#robo642">cl_req_mgr_destroy</a>, <a href="#robo643">cl_req_mgr_get</a>,\r
+       <a href="#robo645">cl_req_mgr_resume</a>, cl_pfn_req_mgr_get_count_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo645">[Functions]<a name="Component20Library3a20Request20Manager2fcl5freq5fmgr5fresume">\r
+Component Library: Request Manager/cl_req_mgr_resume</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_req_mgr_resume</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_req_mgr_resume</strong> function attempts to resume queued requests.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_req_mgr_resume</strong>(\r
+        IN      <a href="#robo646">cl_req_mgr_t</a>* const             p_req_mgr,\r
+        OUT     size_t* const                   p_count,\r
+        OUT     <a href="#robo639">cl_pfn_req_cb_t</a>* const  ppfn_callback,\r
+        OUT     const void** const              p_context1,\r
+        OUT     const void** const              p_context2 );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_req_mgr\r
+               [in] Pointer to a <a href="#robo646">cl_req_mgr_t</a> structure from which to resume requests.\r
+\r
+       p_count\r
+               [out] Contains the number of objects available for a resuming request.\r
+\r
+       ppfn_callback\r
+               [out] Contains the pfn_callback value for the resuming request, as\r
+               provided to the call to the <a href="#robo643">cl_req_mgr_get</a> function.\r
+\r
+       p_context1\r
+               [out] Contains the context1 value for the resuming request, as provided\r
+               to the call to the <a href="#robo643">cl_req_mgr_get</a> function.\r
+\r
+       p_context2\r
+               [out] Contains the context2 value for the resuming request, as provided\r
+               to the call to the <a href="#robo643">cl_req_mgr_get</a> function.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if a request was completed.\r
+\r
+       CL_PENDING if a request was continued, but not completed.\r
+\r
+       CL_INSUFFICIENT_RESOURCES if a request could not be continued due to\r
+       a lack of resources.\r
+\r
+       CL_NOT_DONE if there were no pending requests.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_req_mgr_resume</strong> resumes at most one request. Further requests may be\r
+       able to be resumed if this call returns CL_SUCCESS.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Request Manager, <a href="#robo643">cl_req_mgr_get</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo646">[Structures]<a name="Component20Library3a20Request20Manager2fcl5freq5fmgr5ft">\r
+Component Library: Request Manager/cl_req_mgr_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_req_mgr_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Quick composite pool structure.\r
+\r
+       The <strong>cl_req_mgr_t</strong> structure should be treated as opaque and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_req_mgr\r
+{\r
+        <a href="#robo640">cl_pfn_reqmgr_get_count_t</a>       pfn_get_count;\r
+        const void                                      *get_context;\r
+        <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a>                                      request_queue;\r
+        <a href="./cl_qpool_h.html#robo626">cl_qpool_t</a>                                      request_pool;\r
+\r
+} <strong>cl_req_mgr_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pfn_get_count\r
+               Pointer to the count callback function.\r
+\r
+       get_context\r
+               Context to pass as single parameter to count callback.\r
+\r
+       request_queue\r
+               Pending requests for elements.\r
+\r
+       request_pool\r
+               <a href="./cl_pool_h.html#robo24">Pool</a> of request structures for storing requests in the request queue.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Request Manager\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo647">[Definitions]<a name="Component20Library3a20Request20Manager2fcl5freq5ftype5ft">\r
+Component Library: Request Manager/cl_req_type_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_req_type_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_req_type_t</strong> enumerated type describes the type of request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _cl_req_type\r
+{\r
+        REQ_GET_SYNC,\r
+        REQ_GET_ASYNC,\r
+        REQ_GET_PARTIAL_OK\r
+\r
+} <strong>cl_req_type_t</strong>;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       REQ_GET_SYNC\r
+               Synchronous request.\r
+\r
+       REQ_GET_ASYNC\r
+               Asynchronous requests for which all objects are required at once.\r
+\r
+       REQ_GET_PARTIAL_OK\r
+               Asynchronous requests that may be broken into multiple smaller requests.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Request Manager, <a href="#robo643">cl_req_mgr_get</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_spinlock_h.html b/trunk/docs/complib/cl_spinlock_h.html
new file mode 100644 (file)
index 0000000..f2a1320
--- /dev/null
@@ -0,0 +1,210 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_spinlock_h.html</title>\r
+<!-- Source: ./inc/complib/cl_spinlock.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_spinlock.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo32">[Modules]<a name="Component20Library2fSpinlock">\r
+Component Library/Spinlock</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>Spinlock</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>Spinlock</strong> provides synchronization between threads for exclusive access to\r
+       a resource.\r
+\r
+       The spinlock functions manipulate a cl_spinlock_t structure which should\r
+       be treated as opaque and should be manipulated only through the provided\r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               cl_spinlock_t\r
+\r
+       Initialization:\r
+               <a href="#robo649">cl_spinlock_construct</a>, <a href="#robo651">cl_spinlock_init</a>, <a href="#robo650">cl_spinlock_destroy</a>\r
+\r
+       Manipulation\r
+               <a href="#robo648">cl_spinlock_acquire</a>, <a href="#robo652">cl_spinlock_release</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo648">[Functions]<a name="Component20Library3a20Spinlock2fcl5fspinlock5facquire">\r
+Component Library: Spinlock/cl_spinlock_acquire</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_spinlock_acquire</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_spinlock_acquire</strong> function acquires a spin lock.\r
+       This version of lock does not prevent an interrupt from\r
+       occuring on the processor on which the code is being\r
+       executed.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_spinlock_acquire</strong>(\r
+        IN      cl_spinlock_t* const    p_spinlock );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_spinlock\r
+               [in] Pointer to a spin lock structure to acquire.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo32">Spinlock</a>, <a href="#robo652">cl_spinlock_release</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo649">[Functions]<a name="Component20Library3a20Spinlock2fcl5fspinlock5fconstruct">\r
+Component Library: Spinlock/cl_spinlock_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_spinlock_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_spinlock_construct</strong> function initializes the state of a\r
+       spin lock.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_spinlock_construct</strong>(\r
+        IN      cl_spinlock_t* const    p_spinlock );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_spinlock\r
+               [in] Pointer to a spin lock structure whose state to initialize.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo650">cl_spinlock_destroy</a> without first calling\r
+       <a href="#robo651">cl_spinlock_init</a>.\r
+\r
+       Calling <strong>cl_spinlock_construct</strong> is a prerequisite to calling any other\r
+       spin lock function except <a href="#robo651">cl_spinlock_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo32">Spinlock</a>, <a href="#robo651">cl_spinlock_init</a>, <a href="#robo650">cl_spinlock_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo650">[Functions]<a name="Component20Library3a20Spinlock2fcl5fspinlock5fdestroy">\r
+Component Library: Spinlock/cl_spinlock_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_spinlock_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_spinlock_destroy</strong> function performs all necessary cleanup of a\r
+       spin lock.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_spinlock_destroy</strong>(\r
+        IN      cl_spinlock_t* const    p_spinlock );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_spinlock\r
+               [in] Pointer to a spin lock structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Performs any necessary cleanup of a spin lock. This function must only\r
+       be called if either <a href="#robo649">cl_spinlock_construct</a> or <a href="#robo651">cl_spinlock_init</a> has been\r
+       called.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo32">Spinlock</a>, <a href="#robo649">cl_spinlock_construct</a>, <a href="#robo651">cl_spinlock_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo651">[Functions]<a name="Component20Library3a20Spinlock2fcl5fspinlock5finit">\r
+Component Library: Spinlock/cl_spinlock_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_spinlock_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_spinlock_init</strong> function initializes a spin lock for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_spinlock_init</strong>(\r
+        IN      cl_spinlock_t* const    p_spinlock );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_spinlock\r
+               [in] Pointer to a spin lock structure to initialize.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if initialization succeeded.\r
+\r
+       CL_ERROR if initialization failed. Callers should call\r
+       <a href="#robo650">cl_spinlock_destroy</a> to clean up any resources allocated during\r
+       initialization.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Initialize the spin lock structure. Allows calling cl_spinlock_aquire\r
+       and <a href="#robo652">cl_spinlock_release</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo32">Spinlock</a>, <a href="#robo649">cl_spinlock_construct</a>, <a href="#robo650">cl_spinlock_destroy</a>,\r
+       <a href="#robo648">cl_spinlock_acquire</a>, <a href="#robo652">cl_spinlock_release</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo652">[Functions]<a name="Component20Library3a20Spinlock2fcl5fspinlock5frelease">\r
+Component Library: Spinlock/cl_spinlock_release</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_spinlock_release</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_spinlock_release</strong> function releases a spin lock object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_spinlock_release</strong>(\r
+        IN      cl_spinlock_t* const    p_spinlock );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_spinlock\r
+               [in] Pointer to a spin lock structure to release.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Releases a spin lock after a call to <a href="#robo648">cl_spinlock_acquire</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo32">Spinlock</a>, <a href="#robo648">cl_spinlock_acquire</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_syscallback_h.html b/trunk/docs/complib/cl_syscallback_h.html
new file mode 100644 (file)
index 0000000..be83d3b
--- /dev/null
@@ -0,0 +1,243 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_syscallback_h.html</title>\r
+<!-- Source: ./inc/complib/cl_syscallback.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_syscallback.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo33">[Modules]<a name="Component20Library2fSystem20Callback">\r
+Component Library/System Callback</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       System Callback\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The System Callback provider uses threads from a system thread-pool to\r
+       invoke specified callback functions.\r
+\r
+       Callbacks can be queued in a low- or high-priority queue for processing.\r
+\r
+       <a href="./cl_thread_h.html#robo667">cl_thread_suspend</a> and <a href="./cl_thread_h.html#robo666">cl_thread_stall</a> can be used to delay or stall the\r
+       callback thread.\r
+\r
+       Environments that do not have a native system thread-pool emulate this\r
+       functionality to provide cross-environment support.\r
+\r
+       The cl_sys_callback_item_t structure should be treated as opaque and be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo653">[Functions]<a name="Component20Library3a20System20Callback2fcl5fis5fsys5fcallback5finited">\r
+Component Library: System Callback/cl_is_sys_callback_inited</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_sys_callback_inited</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_sys_callback_inited</strong> function returns whether the system\r
+       callback provider was initialized successfully\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>boolean_t\r
+__cl_is_sys_callback_inited( void );\r
+/*\r
+* RETURN VALUES\r
+*       TRUE if the system callback provider was initialized successfully.\r
+*\r
+*       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows checking the state of the system callback provider to determine\r
+       if invoking member functions is appropriate.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       System Callback\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo654">[Definitions]<a name="Component20Library3a20System20Callback2fcl5fpfn5fsys5fcallback5ft">\r
+Component Library: System Callback/cl_pfn_sys_callback_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_sys_callback_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_sys_callback_t</strong> function type defines the prototype for\r
+       functions invoked by the system callback provider.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_sys_callback_t</strong>)(\r
+        IN      void*   get_context,\r
+        IN      void*   queue_context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       get_context\r
+               [in] Value of the get_context parameter specified in a call\r
+               to <a href="#robo655">cl_sys_callback_get</a>.\r
+\r
+       queue_context\r
+               [in] Value of the queue_context parameter specified in a call\r
+               to <a href="#robo657">cl_sys_callback_queue</a>.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the function provided by users as a parameter to the\r
+       <a href="#robo657">cl_sys_callback_queue</a> function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       System Callback, <a href="#robo657">cl_sys_callback_queue</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo655">[Functions]<a name="Component20Library3a20System20Callback2fcl5fsys5fcallback5fget">\r
+Component Library: System Callback/cl_sys_callback_get</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_sys_callback_get</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_sys_callback_get</strong> function retrieves a system callback item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT cl_sys_callback_item_t* CL_API\r
+<strong>cl_sys_callback_get</strong>(\r
+        IN      const void* const get_context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       get_context\r
+               [in] Context value to pass into the callback function.\r
+\r
+ RETURN VALUES\r
+       Returns a pointer to a system callback item if successful.\r
+\r
+       Returns NULL if the call fails.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       A system callback item must be released with a call to <a href="#robo656">cl_sys_callback_put</a>.\r
+\r
+       Care must be taken to prevent a system callback item from being returned\r
+       to the pool while it is queued. Callers of <a href="#robo657">cl_sys_callback_queue</a> must not\r
+       return the system callback item to the pool until their callback has been\r
+       invoked.\r
+\r
+       In Windows 2000 Kernel Mode, the get_context is a pointer to the device\r
+       object for which the system callback is being used.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       System Callback, SysCallbackPut, SysCallbackQueue\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo656">[Functions]<a name="Component20Library3a20System20Callback2fcl5fsys5fcallback5fput">\r
+Component Library: System Callback/cl_sys_callback_put</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_sys_callback_put</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_sys_callback_put</strong> function releases the specified\r
+       system callback item.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_sys_callback_put</strong>(\r
+        IN      cl_sys_callback_item_t* const   p_item );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               [in] Pointer to a system callback item to release.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The p_item parameter points to a system callback item returned by\r
+       a previous call to <a href="#robo655">cl_sys_callback_get</a>.\r
+\r
+       The specified system callback item must not be queued when making\r
+       a call to this function.  This function can, however, be called\r
+       from the callback function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       System Callback, <a href="#robo655">cl_sys_callback_get</a>, <a href="#robo657">cl_sys_callback_queue</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo657">[Functions]<a name="Component20Library3a20System20Callback2fcl5fsys5fcallback5fqueue">\r
+Component Library: System Callback/cl_sys_callback_queue</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_sys_callback_queue</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_sys_callback_queue</strong> function queues the specified system callback item\r
+       for execution.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_sys_callback_queue</strong>(\r
+        IN      cl_sys_callback_item_t* const   p_item,\r
+        IN      <a href="#robo654">cl_pfn_sys_callback_t</a>                   pfn_callback,\r
+        IN      const void* const                               queue_context,\r
+        IN      const boolean_t                                 high_priority );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_item\r
+               [in] Pointer to a system callback item.\r
+\r
+       pfn_callback\r
+               [in] Pointer to a function to be invoked by the system callback module.\r
+               See the <a href="#robo654">cl_pfn_sys_callback_t</a> function type definition for details\r
+               about the callback function.\r
+\r
+       queue_context\r
+               [in] Value passed to the system callback function.\r
+\r
+       high_priority\r
+               [in] Specifies whether the request should be queued in the high- or\r
+               low-priority queue.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the system callback item was successfully queued.\r
+\r
+       CL_ERROR otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       A thread from the system thread pool will invoke the specified callback\r
+       function with the get_context value specified in the call to\r
+       <a href="#robo655">cl_sys_callback_get</a> and the specified context as parameters.\r
+\r
+       The high priority queue is processed before the low priority queue. There\r
+       is no fairness algorithm implemented for removing items from the queues.\r
+\r
+       Care should be taken to only queue a given system callback item once\r
+       at a time.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       System Callback, <a href="#robo655">cl_sys_callback_get</a>, <a href="#robo654">cl_pfn_sys_callback_t</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_thread_h.html b/trunk/docs/complib/cl_thread_h.html
new file mode 100644 (file)
index 0000000..a5cd9fd
--- /dev/null
@@ -0,0 +1,164 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_thread_h.html</title>\r
+<!-- Source: ./inc/complib/cl_thread.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_thread.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo663">[Functions]<a name="Component20Library3a20Thread2fcl5fis5fblockable">\r
+Component Library: Thread/cl_is_blockable</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_blockable</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_blockable</strong> indicates if the current caller context is\r
+       blockable.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT boolean_t CL_API\r
+<strong>cl_is_blockable</strong>( void );\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       TRUE if the caller's thread context can be blocked, i.e it is safe\r
+       to perform a sleep, or call a down operation on a semaphore.\r
+\r
+       FALSE otherwise\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Thread\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo664">[Definitions]<a name="Component20Library3a20Thread2fcl5fpfn5fthread5fcallback5ft">\r
+Component Library: Thread/cl_pfn_thread_callback_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_thread_callback_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_thread_callback_t</strong> function type defines the prototype\r
+       for functions invoked by thread objects\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_thread_callback_t</strong>)(\r
+        IN      void*   context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       context\r
+               [in] Value specified in a call to cl_thread_init or\r
+               cl_thread_pool_create.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the function provided by users as a parameter to the cl_thread_init\r
+       and cl_thread_pool_create functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Thread <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo665">[Functions]<a name="Component20Library3a20Thread2fcl5fproc5fcount">\r
+Component Library: Thread/cl_proc_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_proc_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_proc_count</strong> function returns the number of processors in the system.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT uint32_t CL_API\r
+<strong>cl_proc_count</strong>( void );\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the number of processors in the system.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo666">[Functions]<a name="Component20Library3a20Thread2fcl5fthread5fstall">\r
+Component Library: Thread/cl_thread_stall</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_thread_stall</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_thread_stall</strong> function stalls the calling thread for a minimum of\r
+       the specified number of microseconds.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_thread_stall</strong>(\r
+        IN      const uint32_t  pause_us );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       pause_us\r
+               [in] Number of microseconds to stall the calling thread.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The <strong>cl_thread_stall</strong> function performs a busy wait for the specified\r
+       number of microseconds. Care should be taken when using this function as\r
+       it does not relinquish its quantum of operation. For longer wait\r
+       operations, users should call <a href="#robo667">cl_thread_suspend</a> if possible.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Thread, <a href="#robo667">cl_thread_suspend</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo667">[Functions]<a name="Component20Library3a20Thread2fcl5fthread5fsuspend">\r
+Component Library: Thread/cl_thread_suspend</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_thread_suspend</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_thread_suspend</strong> function suspends the calling thread for a minimum\r
+       of the specified number of milliseconds.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_thread_suspend</strong>(\r
+        IN      const uint32_t  pause_ms );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       pause_ms\r
+               [in] Number of milliseconds to suspend the calling thread.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function should only be called if it is valid for the caller's thread\r
+       to enter a wait state. For stalling a thread that cannot enter a wait\r
+       state, callers should use <a href="#robo666">cl_thread_stall</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Thread, <a href="#robo666">cl_thread_stall</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_threadpool_h.html b/trunk/docs/complib/cl_threadpool_h.html
new file mode 100644 (file)
index 0000000..271413a
--- /dev/null
@@ -0,0 +1,273 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_threadpool_h.html</title>\r
+<!-- Source: ./inc/complib/cl_threadpool.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_threadpool.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo34">[Modules]<a name="Component20Library2fThread20Pool">\r
+Component Library/Thread Pool</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Thread <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The Thread <a href="./cl_pool_h.html#robo24">Pool</a> manages a user specified number of threads.\r
+\r
+       Each thread in the thread pool waits for a user initiated signal before\r
+       invoking a user specified callback function. All threads in the thread\r
+       pool invoke the same callback function.\r
+\r
+       The thread pool functions operate on a <a href="#robo662">cl_thread_pool_t</a> structure which\r
+       should be treated as opaque, and should be manipulated only through the\r
+       provided functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo662">cl_thread_pool_t</a>\r
+\r
+       Initialization:\r
+               <a href="#robo658">cl_thread_pool_construct</a>, <a href="#robo660">cl_thread_pool_init</a>, <a href="#robo659">cl_thread_pool_destroy</a>\r
+\r
+       Manipulation\r
+               <a href="#robo661">cl_thread_pool_signal</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo658">[Functions]<a name="Component20Library3a20Thread20Pool2fcl5fthread5fpool5fconstruct">\r
+Component Library: Thread Pool/cl_thread_pool_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_thread_pool_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_thread_pool_construct</strong> function initializes the state of a\r
+       thread pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_thread_pool_construct</strong>(\r
+        IN      <a href="#robo662">cl_thread_pool_t</a>* const p_thread_pool );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_thread_pool\r
+               [in] Pointer to a thread pool structure.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo659">cl_thread_pool_destroy</a> without first calling\r
+       <a href="#robo660">cl_thread_pool_init</a>.\r
+\r
+       Calling <strong>cl_thread_pool_construct</strong> is a prerequisite to calling any other\r
+       thread pool function except <a href="#robo660">cl_thread_pool_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Thread <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo660">cl_thread_pool_init</a>, <a href="#robo659">cl_thread_pool_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo659">[Functions]<a name="Component20Library3a20Thread20Pool2fcl5fthread5fpool5fdestroy">\r
+Component Library: Thread Pool/cl_thread_pool_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_thread_pool_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_thread_pool_destroy</strong> function performs any necessary cleanup\r
+       for a thread pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_thread_pool_destroy</strong>(\r
+        IN      <a href="#robo662">cl_thread_pool_t</a>* const p_thread_pool );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_thread_pool\r
+               [in] Pointer to a thread pool structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function blocks until all threads exit, and must therefore not\r
+       be called from any of the thread pool's threads. Because of its blocking\r
+       nature, callers of <strong>cl_thread_pool_destroy</strong> must ensure that entering a wait\r
+       state is valid from the calling thread context.\r
+\r
+       This function should only be called after a call to\r
+       <a href="#robo658">cl_thread_pool_construct</a> or <a href="#robo660">cl_thread_pool_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Thread <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo658">cl_thread_pool_construct</a>, <a href="#robo660">cl_thread_pool_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo660">[Functions]<a name="Component20Library3a20Thread20Pool2fcl5fthread5fpool5finit">\r
+Component Library: Thread Pool/cl_thread_pool_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_thread_pool_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_thread_pool_init</strong> function creates the threads to be\r
+       managed by a thread pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_thread_pool_init</strong>(\r
+        IN      <a href="#robo662">cl_thread_pool_t</a>* const         p_thread_pool,\r
+        IN      uint32_t                                        thread_count,\r
+        IN      <a href="./cl_thread_h.html#robo664">cl_pfn_thread_callback_t</a>        pfn_callback,\r
+        IN      const void* const                       context,\r
+        IN      const char* const                       name );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_thread_pool\r
+               [in] Pointer to a thread pool structure to initialize.\r
+\r
+       thread_count\r
+               [in] Number of threads to be managed by the thread pool.\r
+\r
+       pfn_callback\r
+               [in] Address of a function to be invoked by a thread.\r
+               See the <a href="./cl_thread_h.html#robo664">cl_pfn_thread_callback_t</a> function type definition for\r
+               details about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback function.\r
+\r
+       name\r
+               [in] Name to associate with the threads.  The name may be up to 16\r
+               characters, including a terminating null character.  All threads\r
+               created in the pool have the same name.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the thread pool creation succeeded.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to inititalize\r
+       the thread pool.\r
+\r
+       CL_ERROR if the threads could not be created.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_thread_pool_init</strong> creates and starts the specified number of threads.\r
+       If thread_count is zero, the thread pool creates as many threads as there\r
+       are processors in the system.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Thread <a href="./cl_pool_h.html#robo24">Pool</a>, <a href="#robo658">cl_thread_pool_construct</a>, <a href="#robo659">cl_thread_pool_destroy</a>,\r
+       <a href="#robo661">cl_thread_pool_signal</a>, <a href="./cl_thread_h.html#robo664">cl_pfn_thread_callback_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo661">[Functions]<a name="Component20Library3a20Thread20Pool2fcl5fthread5fpool5fsignal">\r
+Component Library: Thread Pool/cl_thread_pool_signal</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_thread_pool_signal</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_thread_pool_signal</strong> function signals a single thread of\r
+       the thread pool to invoke the thread pool\92s callback function.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_thread_pool_signal</strong>(\r
+        IN      <a href="#robo662">cl_thread_pool_t</a>* const p_thread_pool );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_thread_pool\r
+               [in] Pointer to a thread pool structure to signal.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the thread pool was successfully signalled.\r
+\r
+       CL_ERROR otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Each call to this function wakes up at most one waiting thread in\r
+       the thread pool.\r
+\r
+       If all threads are running, <strong>cl_thread_pool_signal</strong> has no effect.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Thread <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo662">[Structures]<a name="Component20Library3a20Thread20Pool2fcl5fthread5fpool5ft">\r
+Component Library: Thread Pool/cl_thread_pool_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_thread_pool_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Thread pool structure.\r
+\r
+       The <strong>cl_thread_pool_t</strong> structure should be treated as opaque, and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_thread_pool\r
+{\r
+        <a href="./cl_thread_h.html#robo664">cl_pfn_thread_callback_t</a>        pfn_callback;\r
+        const void                                      *context;\r
+        <a href="./cl_list_h.html#robo390">cl_list_t</a>                                       thread_list;\r
+        cl_event_t                                      wakeup_event;\r
+        cl_event_t                                      destroy_event;\r
+        boolean_t                                       exit;\r
+        cl_state_t                                      state;\r
+        atomic32_t                                      running_count;\r
+\r
+} <strong>cl_thread_pool_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pfn_callback\r
+               Callback function for the thread to invoke.\r
+\r
+       context\r
+               Context to pass to the thread callback function.\r
+\r
+       thread_list\r
+               <a href="./cl_list_h.html#robo15">List</a> of threads managed by the thread pool.\r
+\r
+       event\r
+               <a href="./cl_event_h.html#robo11">Event</a> used to signal threads to wake up and do work.\r
+\r
+       destroy_event\r
+               <a href="./cl_event_h.html#robo11">Event</a> used to signal threads to exit.\r
+\r
+       exit\r
+               Flag used to indicates threads to exit.\r
+\r
+       state\r
+               State of the thread pool.\r
+\r
+       running_count\r
+               Number of threads running.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Thread <a href="./cl_pool_h.html#robo24">Pool</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_timer_h.html b/trunk/docs/complib/cl_timer_h.html
new file mode 100644 (file)
index 0000000..8ab6448
--- /dev/null
@@ -0,0 +1,432 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_timer_h.html</title>\r
+<!-- Source: ./inc/complib/cl_timer.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_timer.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:23\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo35">[Modules]<a name="Component20Library2fTimer">\r
+Component Library/Timer</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>Timer</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>Timer</strong> provides the ability to schedule a function to be invoked at\r
+       a given time in the future.\r
+\r
+       The timer callback function must not perform any blocking operations.\r
+\r
+       The timer functions operate on a cl_timer_t structure which should be\r
+       treated as opaque and should be manipulated only through the provided\r
+       functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               cl_timer_t\r
+\r
+       Callbacks:\r
+               <a href="#robo673">cl_pfn_timer_callback_t</a>\r
+\r
+       Initialization:\r
+               <a href="#robo674">cl_timer_construct</a>, <a href="#robo676">cl_timer_init</a>, <a href="#robo675">cl_timer_destroy</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo677">cl_timer_start</a>, <a href="#robo678">cl_timer_stop</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo668">[Functions]<a name="Component20Library3a20Time20Stamp2fcl5fget5ftick5fcount">\r
+Component Library: Time Stamp/cl_get_tick_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_get_tick_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_get_tick_count</strong> function returns the raw high-resolution\r
+       performance counter value.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT uint64_t CL_API\r
+<strong>cl_get_tick_count</strong>( void );\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Value of the high-resolution performance counter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo35">Timer</a>, <a href="#robo670">cl_get_time_stamp</a>, <a href="#robo669">cl_get_tick_freq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo669">[Functions]<a name="Component20Library3a20Time20Stamp2fcl5fget5ftick5ffreq">\r
+Component Library: Time Stamp/cl_get_tick_freq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_get_tick_freq</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_get_tick_freq</strong> function returns the frequency of the\r
+       high-resolution performance counter.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT uint64_t CL_API\r
+<strong>cl_get_tick_freq</strong>( void );\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       The frequency of the high-resolution performance counter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo35">Timer</a>, <a href="#robo670">cl_get_time_stamp</a>, <a href="#robo668">cl_get_tick_count</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo670">[Functions]<a name="Component20Library3a20Time20Stamp2fcl5fget5ftime5fstamp">\r
+Component Library: Time Stamp/cl_get_time_stamp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_get_time_stamp</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_get_time_stamp</strong> function returns the current time stamp in\r
+       microseconds since the system was booted.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT uint64_t CL_API\r
+<strong>cl_get_time_stamp</strong>( void );\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Time elapsed, in microseconds, since the system was booted.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo35">Timer</a>, <a href="#robo672">cl_get_time_stamp_usec</a>, <a href="#robo671">cl_get_time_stamp_sec</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo671">[Functions]<a name="Component20Library3a20Time20Stamp2fcl5fget5ftime5fstamp5fsec">\r
+Component Library: Time Stamp/cl_get_time_stamp_sec</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_get_time_stamp_sec</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_get_time_stamp_sec</strong> function returns the current time stamp in\r
+       seconds since the system was booted.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT uint32_t CL_API\r
+<strong>cl_get_time_stamp_sec</strong>( void );\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Time elapsed, in seconds, since the system was booted.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo35">Timer</a>, <a href="#robo670">cl_get_time_stamp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo672">[Functions]<a name="Component20Library3a20Time20Stamp2fcl5fget5ftime5fstamp5fusec">\r
+Component Library: Time Stamp/cl_get_time_stamp_usec</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_get_time_stamp_usec</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_get_time_stamp_usec</strong> function returns the current time stamp in\r
+       microseconds since the system was booted.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE uint64_t CL_API\r
+<strong>cl_get_time_stamp_usec</strong>( void )\r
+{\r
+        return <a href="#robo670">cl_get_time_stamp</a>();\r
+}\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Time elapsed, in microseconds, since the system was booted.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo35">Timer</a>, <a href="#robo670">cl_get_time_stamp</a>, <a href="#robo671">cl_get_time_stamp_sec</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo673">[Definitions]<a name="Component20Library3a20Timer2fcl5fpfn5ftimer5fcallback5ft">\r
+Component Library: Timer/cl_pfn_timer_callback_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_timer_callback_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_timer_callback_t</strong> function type defines the prototype for\r
+       functions used to notify users of a timer expiration.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_timer_callback_t</strong>)(\r
+        IN void*        context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       context\r
+               [in] Value specified in a previous call to <a href="#robo676">cl_timer_init</a>.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for the\r
+       function provided by users as a parameter to the <a href="#robo676">cl_timer_init</a> function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo35">Timer</a>, <a href="#robo676">cl_timer_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo674">[Functions]<a name="Component20Library3a20Timer2fcl5ftimer5fconstruct">\r
+Component Library: Timer/cl_timer_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_timer_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_timer_construct</strong> function initializes the state of a timer.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_timer_construct</strong>(\r
+        IN      cl_timer_t* const       p_timer );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_timer\r
+               [in] Pointer to a cl_timer_t structure whose state to initialize.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo675">cl_timer_destroy</a> without first calling <a href="#robo676">cl_timer_init</a>.\r
+\r
+       Calling <strong>cl_timer_construct</strong> is a prerequisite to calling any other\r
+       timer function except <a href="#robo676">cl_timer_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo35">Timer</a>, <a href="#robo676">cl_timer_init</a>, <a href="#robo675">cl_timer_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo675">[Functions]<a name="Component20Library3a20Timer2fcl5ftimer5fdestroy">\r
+Component Library: Timer/cl_timer_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_timer_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_timer_destroy</strong> function performs any necessary cleanup of a timer.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_timer_destroy</strong>(\r
+        IN      cl_timer_t* const       p_timer );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_timer\r
+               [in] Pointer to a cl_timer_t structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_timer_destroy</strong> cancels any pending callbacks.\r
+\r
+       This function should only be called after a call to <a href="#robo674">cl_timer_construct</a>\r
+       or <a href="#robo676">cl_timer_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo35">Timer</a>, <a href="#robo674">cl_timer_construct</a>, <a href="#robo676">cl_timer_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo676">[Functions]<a name="Component20Library3a20Timer2fcl5ftimer5finit">\r
+Component Library: Timer/cl_timer_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_timer_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_timer_init</strong> function initializes a timer for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_timer_init</strong>(\r
+        IN      cl_timer_t* const               p_timer,\r
+        IN      <a href="#robo673">cl_pfn_timer_callback_t</a> pfn_callback,\r
+        IN      const void* const               context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_timer\r
+               [in] Pointer to a cl_timer_t structure to initialize.\r
+\r
+       pfn_callback\r
+               [in] Address of a callback function to be invoked when a timer expires.\r
+               See the <a href="#robo673">cl_pfn_timer_callback_t</a> function type definition for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback function.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the timer was successfully initialized.\r
+\r
+       CL_ERROR otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo677">cl_timer_start</a> and <a href="#robo678">cl_timer_stop</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo35">Timer</a>, <a href="#robo674">cl_timer_construct</a>, <a href="#robo675">cl_timer_destroy</a>, <a href="#robo677">cl_timer_start</a>,\r
+       <a href="#robo678">cl_timer_stop</a>, <a href="#robo673">cl_pfn_timer_callback_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo677">[Functions]<a name="Component20Library3a20Timer2fcl5ftimer5fstart">\r
+Component Library: Timer/cl_timer_start</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_timer_start</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_timer_start</strong> function sets a timer to expire after a given interval.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_timer_start</strong>(\r
+        IN      cl_timer_t* const       p_timer,\r
+        IN      const uint32_t          time_ms );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_timer\r
+               [in] Pointer to a cl_timer_t structure to schedule.\r
+\r
+       time_ms\r
+               [in] Time, in milliseconds, before the timer should expire.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the timer was successfully scheduled.\r
+\r
+       CL_ERROR otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_timer_start</strong> implicitly stops the timer before being scheduled.\r
+\r
+       The interval specified by the time_ms parameter is a minimum interval.\r
+       The timer is guaranteed to expire no sooner than the desired interval, but\r
+       may take longer to expire.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo35">Timer</a>, <a href="#robo678">cl_timer_stop</a>, <a href="#robo679">cl_timer_trim</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo678">[Functions]<a name="Component20Library3a20Timer2fcl5ftimer5fstop">\r
+Component Library: Timer/cl_timer_stop</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_timer_stop</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_timer_stop</strong> function stops a pending timer from expiring.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_timer_stop</strong>(\r
+        IN      cl_timer_t* const       p_timer );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_timer\r
+               [in] Pointer to a cl_timer_t structure.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo35">Timer</a>, <a href="#robo677">cl_timer_start</a>, <a href="#robo679">cl_timer_trim</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo679">[Functions]<a name="Component20Library3a20Timer2fcl5ftimer5ftrim">\r
+Component Library: Timer/cl_timer_trim</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_timer_trim</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_timer_trim</strong> function pulls in the absolute expiration\r
+       time of a timer if the current expiration time exceeds the specified\r
+       interval.\r
+\r
+       sets a timer to expire after a given\r
+       interval if that interval is less than the current timer expiration.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_timer_trim</strong>(\r
+        IN      cl_timer_t* const       p_timer,\r
+        IN      const uint32_t          time_ms );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_timer\r
+               [in] Pointer to a cl_timer_t structure to schedule.\r
+\r
+       time_ms\r
+               [in] Maximum time, in milliseconds, before the timer should expire.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the timer was successfully scheduled.\r
+\r
+       CL_ERROR otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_timer_trim</strong> has no effect if the time interval is greater than the\r
+       remaining time when the timer is set.\r
+\r
+       If the new interval time is less than the remaining time, <strong>cl_timer_trim</strong>\r
+       implicitly stops the timer before reseting it.\r
+\r
+       If the timer is reset, it is guaranteed to expire no sooner than the\r
+       new interval, but may take longer to expire.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo35">Timer</a>, <a href="#robo677">cl_timer_start</a>, <a href="#robo678">cl_timer_stop</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_types_h.html b/trunk/docs/complib/cl_types_h.html
new file mode 100644 (file)
index 0000000..4436b0f
--- /dev/null
@@ -0,0 +1,410 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_types_h.html</title>\r
+<!-- Source: ./inc/complib/cl_types.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_types.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:23\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo263">[Definitions]<a name="Component20Library2fData20Types">\r
+Component Library/Data Types</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Data Types\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The component library provides and uses explicitly sized types.\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       char\r
+               8-bit, defined by compiler.\r
+\r
+       void\r
+               0-bit, defined by compiler.\r
+\r
+       int8_t\r
+               8-bit signed integer.\r
+\r
+       uint8_t\r
+               8-bit unsigned integer.\r
+\r
+       int16_t\r
+               16-bit signed integer.\r
+\r
+       uint16_t\r
+               16-bit unsigned integer.\r
+\r
+       net16_t\r
+               16-bit network byte order value.\r
+\r
+       int32_t\r
+               32-bit signed integer.\r
+\r
+       uint32_t\r
+               32-bit unsigned integer.\r
+\r
+       net32_t\r
+               32-bit network byte order value.\r
+\r
+       int64_t\r
+               64-bit signed integer.\r
+\r
+       uint64_t\r
+               64-bit unsigned integer.\r
+\r
+       net64_t\r
+               64-bit network byte order value.\r
+\r
+       intn_t\r
+               Signed natural sized integer.  32-bit on a 32-bit platform, 64-bit on\r
+               a 64-bit platform.\r
+\r
+       uintn_t\r
+               Unsigned natural sized integer.  32-bit on a 32-bit platform, 64-bit on\r
+               a 64-bit platform.\r
+\r
+       boolean_t\r
+               integral sized.  Set to TRUE or FALSE and used in logical expressions.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Pointer types are not defined as these provide no value and can potentially\r
+       lead to naming confusion.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo264">[Definitions]<a name="Component20Library2fObject20States">\r
+Component Library/Object States</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <a href="./cl_obj_h.html#robo18">Object</a> States\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The object states enumerated type defines the valid states of components.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _cl_state\r
+{\r
+        CL_UNINITIALIZED = 1,\r
+        CL_INITIALIZED,\r
+        CL_DESTROYING,\r
+        CL_DESTROYED\r
+\r
+} cl_state_t;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       CL_UNINITIALIZED\r
+               Indicates that initialization was not invoked successfully.\r
+\r
+       CL_INITIALIZED\r
+               Indicates initialization was successful.\r
+\r
+       CL_DESTROYING\r
+               Indicates that the object is undergoing destruction.\r
+\r
+       CL_DESTROYED\r
+               Indicates that the object's destructor has already been called.  Most\r
+               objects set their final state to CL_DESTROYED before freeing the\r
+               memory associated with the object.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo265">[Definitions]<a name="Component20Library2fParameter20Keywords">\r
+Component Library/Parameter Keywords</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Parameter Keywords\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The Parameter Keywords can be used to clarify the usage of function\r
+       parameters to users.\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IN\r
+               Designates that the parameter is used as input to a function.\r
+\r
+       OUT\r
+               Designates that the parameter's value will be set by the function.\r
+\r
+       OPTIONAL\r
+               Designates that the parameter is optional, and may be NULL.\r
+               The OPTIONAL keyword, if used, follows the parameter name.\r
+</pre>\r
+</span><p><strong>EXAMPLE</strong></p>\r
+<span class="EXAMPLE"><pre>       // Function declaration.\r
+       void*\r
+       my_func(\r
+           IN void* const p_param1,\r
+           OUT void** const p_handle OPTIONAL );\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Multiple keywords can apply to a single parameter. The IN and OUT\r
+       keywords precede the parameter type. The OPTIONAL\r
+       keyword, if used, follows the parameter name.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo303">[Definitions]<a name="Component20Library3a20Data20Types2fCL5fSTATUS5fMSG">\r
+Component Library: Data Types/CL_STATUS_MSG</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>CL_STATUS_MSG</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>CL_STATUS_MSG</strong> macro returns a textual representation of\r
+       an <a href="#robo304">cl_status_t</a> code.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       const char*\r
+*       <strong>CL_STATUS_MSG</strong>(\r
+*               IN <a href="#robo304">cl_status_t</a> errcode );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       errcode\r
+               [in] <a href="#robo304">cl_status_t</a> code for which to return a text representation.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Pointer to a string containing a textual representation of the errcode\r
+       parameter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function performs boundary checking on the <a href="#robo304">cl_status_t</a> value,\r
+       masking off the upper 24-bits. If the value is out of bounds, the string\r
+       "invalid status code" is returned.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo304">cl_status_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo304">[Definitions]<a name="Component20Library3a20Data20Types2fcl5fstatus5ft">\r
+Component Library: Data Types/cl_status_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_status_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_status_t</strong> return types are used by the component library to\r
+       provide detailed function return values.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _cl_status\r
+{\r
+        CL_SUCCESS = 0,\r
+        CL_ERROR,\r
+        CL_INVALID_STATE,\r
+        CL_INVALID_OPERATION,\r
+        CL_INVALID_SETTING,\r
+        CL_INVALID_PARAMETER,\r
+        CL_INSUFFICIENT_RESOURCES,\r
+        CL_INSUFFICIENT_MEMORY,\r
+        CL_INVALID_PERMISSION,\r
+        CL_COMPLETED,\r
+        CL_NOT_DONE,\r
+        CL_PENDING,\r
+        CL_TIMEOUT,\r
+        CL_CANCELED,\r
+        CL_REJECT,\r
+        CL_OVERRUN,\r
+        CL_NOT_FOUND,\r
+        CL_UNAVAILABLE,\r
+        CL_BUSY,\r
+        CL_DISCONNECT,\r
+        CL_DUPLICATE,\r
+        CL_INVALID_REQUEST,\r
+\r
+        CL_STATUS_COUNT                 /* should be the last value */\r
+\r
+} <strong>cl_status_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Data Types, <a href="#robo303">CL_STATUS_MSG</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo315">[Functions]<a name="Component20Library3a20Error20Trapping2fcl5fpanic">\r
+Component Library: Error Trapping/cl_panic</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_panic</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Halts execution of the current process.  Halts the system if called in\r
+       from the kernel.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_panic</strong>(\r
+        IN      const char* const       message,\r
+        IN      ... );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       message\r
+               [in] ANSI string formatted identically as for a call to the standard C\r
+               function printf describing the cause for the panic.\r
+\r
+       ...\r
+               [in] Extra parameters for string formatting, as defined for the\r
+               standard C function printf.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The formatting of the message string is the same as for printf\r
+\r
+       <strong>cl_panic</strong> sends the message to the current message logging target.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo441">[Definitions]<a name="Component20Library3a20Object20States2fcl5fis5fstate5fvalid">\r
+Component Library: Object States/cl_is_state_valid</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_is_state_valid</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_is_state_valid</strong> function returns whether a state has a valid value.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE boolean_t CL_API\r
+<strong>cl_is_state_valid</strong>(\r
+        IN      const cl_state_t        state )\r
+{\r
+        return( (state == CL_UNINITIALIZED) || (state == CL_INITIALIZED) ||\r
+                (state == CL_DESTROYING) || (state == CL_DESTROYED) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       state\r
+               State whose value to validate.\r
+\r
+ RETURN VALUES\r
+       TRUE if the specified state has a valid value.\r
+\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is used in debug builds to check for valid states.  If an\r
+       uninitialized object is passed, the memory for the state may cause the\r
+       state to have an invalid value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="./cl_obj_h.html#robo18">Object</a> States\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo507">[Definitions]<a name="Component20Library3a20Pointer20Manipulation2foffsetof">\r
+Component Library: Pointer Manipulation/offsetof</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>offsetof</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>offsetof</strong> macro returns the offset of a member within a structure.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       uintn_t\r
+*       <strong>offsetof</strong>(\r
+*               IN TYPE,\r
+*               IN MEMBER );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       TYPE\r
+               [in] Name of the structure containing the specified member.\r
+\r
+       MEMBER\r
+               [in] Name of the member whose offset in the specified structure\r
+               is to be returned.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Number of bytes from the beginning of the structure to the\r
+       specified member.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo508">PARENT_STRUCT</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo508">[Definitions]<a name="Component20Library3a20Pointer20Manipulation2fPARENT5fSTRUCT">\r
+Component Library: Pointer Manipulation/PARENT_STRUCT</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>PARENT_STRUCT</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>PARENT_STRUCT</strong> macro returns a pointer to a structure\r
+       given a name and pointer to one of its members.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       PARENT_TYPE*\r
+*       <strong>PARENT_STRUCT</strong>(\r
+*               IN void* const p_member,\r
+*               IN PARENT_TYPE,\r
+*               IN MEMBER_NAME );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_member\r
+               [in] Pointer to the MEMBER_NAME member of a PARENT_TYPE structure.\r
+\r
+       PARENT_TYPE\r
+               [in] Name of the structure containing the specified member.\r
+\r
+       MEMBER_NAME\r
+               [in] Name of the member whose address is passed in the p_member\r
+               parameter.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Pointer to a structure of type PARENT_TYPE whose MEMBER_NAME member is\r
+       located at p_member.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo507">offsetof</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo680">[Definitions]<a name="Component20Library3a20Unreferenced20Parameters2fUNUSED5fPARAM">\r
+Component Library: Unreferenced Parameters/UNUSED_PARAM</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>UNUSED_PARAM</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>UNUSED_PARAM</strong> macro can be used to eliminates compiler warnings related\r
+       to intentionally unused formal parameters in function implementations.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*       <strong>UNUSED_PARAM</strong>( P )\r
+</pre>\r
+</span><p><strong>EXAMPLE</strong></p>\r
+<span class="EXAMPLE"><pre>       void my_func( int32_t value )\r
+       {\r
+               <strong>UNUSED_PARAM</strong>( value );\r
+       }\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_vector_h.html b/trunk/docs/complib/cl_vector_h.html
new file mode 100644 (file)
index 0000000..d343226
--- /dev/null
@@ -0,0 +1,984 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_vector_h.html</title>\r
+<!-- Source: ./inc/complib/cl_vector.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_vector.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:23\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo36">[Modules]<a name="Component20Library2fVector">\r
+Component Library/Vector</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>Vector</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>Vector</strong> is a self-sizing array. Like a traditonal array, a vector\r
+       allows efficient constant time access to elements with a specified index.\r
+       A vector grows transparently as the user adds elements to the array.\r
+\r
+       As the vector grows in size, it does not relocate existing elements in\r
+       memory. This allows using pointers to elements stored in a <strong>Vector</strong>.\r
+\r
+       Users can supply an initializer functions that allow a vector to ensure\r
+       that new items added to the vector are properly initialized. A vector\r
+       calls the initializer function on a per object basis when growing the\r
+       array. The initializer is optional.\r
+\r
+       The initializer function can fail, and returns a <a href="./cl_types_h.html#robo304">cl_status_t</a>. The vector\r
+       will call the destructor function, if provided, for an element that\r
+       failed initialization. If an initializer fails, a vector does not call\r
+       the initializer for objects in the remainder of the new memory allocation.\r
+\r
+       The <a href="#robo700">cl_vector_t</a> structure should be treated as opaque and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo700">cl_vector_t</a>\r
+\r
+       Callbacks:\r
+               <a href="#robo684">cl_pfn_vec_init_t</a>, <a href="#robo682">cl_pfn_vec_dtor_t</a>, <a href="#robo681">cl_pfn_vec_apply_t</a>,\r
+               <a href="#robo683">cl_pfn_vec_find_t</a>\r
+\r
+       Item Manipulation:\r
+               cl_vector_set_obj, cl_vector_obj\r
+\r
+       Initialization:\r
+               <a href="#robo687">cl_vector_construct</a>, <a href="#robo695">cl_vector_init</a>, <a href="#robo688">cl_vector_destroy</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo692">cl_vector_get_capacity</a>, <a href="#robo697">cl_vector_set_capacity</a>,\r
+               <a href="#robo694">cl_vector_get_size</a>, <a href="#robo699">cl_vector_set_size</a>, <a href="#robo698">cl_vector_set_min_size</a>\r
+               <a href="#robo693">cl_vector_get_ptr</a>, <a href="#robo691">cl_vector_get</a>, <a href="#robo686">cl_vector_at</a>, <a href="#robo696">cl_vector_set</a>\r
+\r
+       Search:\r
+               <a href="#robo690">cl_vector_find_from_start</a>, <a href="#robo689">cl_vector_find_from_end</a>\r
+               <a href="#robo685">cl_vector_apply_func</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo681">[Definitions]<a name="Component20Library3a20Vector2fcl5fpfn5fvec5fapply5ft">\r
+Component Library: Vector/cl_pfn_vec_apply_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_vec_apply_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_vec_apply_t</strong> function type defines the prototype for functions\r
+       used to iterate elements in a vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_vec_apply_t</strong>)(\r
+        IN      const size_t            index,\r
+        IN      void* const                     p_element,\r
+        IN      void*                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       index\r
+               [in] Index of the element.\r
+\r
+       p_element\r
+               [in] Pointer to an element at the specified index in the vector.\r
+\r
+       context\r
+               [in] Context provided in a call to <a href="#robo685">cl_vector_apply_func</a>.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the function passed by users as a parameter to the <a href="#robo685">cl_vector_apply_func</a>\r
+       function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo685">cl_vector_apply_func</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo682">[Definitions]<a name="Component20Library3a20Vector2fcl5fpfn5fvec5fdtor5ft">\r
+Component Library: Vector/cl_pfn_vec_dtor_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_vec_dtor_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_vec_dtor_t</strong> function type defines the prototype for functions\r
+       used as destructor for elements being deallocated from a vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(CL_API *<strong>cl_pfn_vec_dtor_t</strong>)(\r
+        IN      void* const                     p_element,\r
+        IN      void*                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_element\r
+               [in] Pointer to an element being deallocated from a vector.\r
+\r
+       context\r
+               [in] Context provided in a call to <a href="#robo695">cl_vector_init</a>.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the destructor function provided by users as an optional parameter to\r
+       the <a href="#robo695">cl_vector_init</a> function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo695">cl_vector_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo683">[Definitions]<a name="Component20Library3a20Vector2fcl5fpfn5fvec5ffind5ft">\r
+Component Library: Vector/cl_pfn_vec_find_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_vec_find_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_vec_find_t</strong> function type defines the prototype for functions\r
+       used to find elements in a vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./cl_types_h.html#robo304">cl_status_t</a>\r
+(CL_API *<strong>cl_pfn_vec_find_t</strong>)(\r
+        IN      const size_t            index,\r
+        IN      const void* const       p_element,\r
+        IN      void*                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       index\r
+               [in] Index of the element.\r
+\r
+       p_element\r
+               [in] Pointer to an element at the specified index in the vector.\r
+\r
+       context\r
+               [in] Context provided in a call to <a href="#robo690">cl_vector_find_from_start</a> or\r
+               <a href="#robo689">cl_vector_find_from_end</a>.\r
+\r
+ RETURN VALUES\r
+       Return CL_SUCCESS if the element was found. This stops vector iteration.\r
+\r
+       CL_NOT_FOUND to continue the vector iteration.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for the\r
+       function provided by users as a parameter to the <a href="#robo690">cl_vector_find_from_start</a>\r
+       and <a href="#robo689">cl_vector_find_from_end</a> functions.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo690">cl_vector_find_from_start</a>, <a href="#robo689">cl_vector_find_from_end</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo684">[Definitions]<a name="Component20Library3a20Vector2fcl5fpfn5fvec5finit5ft">\r
+Component Library: Vector/cl_pfn_vec_init_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_vec_init_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_pfn_vec_init_t</strong> function type defines the prototype for functions\r
+       used as initializer for elements being allocated by a vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./cl_types_h.html#robo304">cl_status_t</a>\r
+(CL_API *<strong>cl_pfn_vec_init_t</strong>)(\r
+        IN      void* const                     p_element,\r
+        IN      void*                           context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_element\r
+               [in] Pointer to an element being added to a vector.\r
+\r
+       context\r
+               [in] Context provided in a call to <a href="#robo695">cl_vector_init</a>.\r
+\r
+ RETURN VALUES\r
+       Return CL_SUCCESS to indicate that the element was initialized successfully.\r
+\r
+       Other <a href="./cl_types_h.html#robo304">cl_status_t</a> values will be returned by the <a href="#robo695">cl_vector_init</a>,\r
+       <a href="#robo699">cl_vector_set_size</a>, and <a href="#robo698">cl_vector_set_min_size</a> functions.\r
+\r
+       In situations where the vector's size needs to grows in order to satisfy\r
+       a call to <a href="#robo696">cl_vector_set</a>, a non-successful status returned by the\r
+       initializer callback causes the growth to stop.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function type is provided as function prototype reference for\r
+       the initializer function provided by users as an optional parameter to\r
+       the <a href="#robo695">cl_vector_init</a> function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo695">cl_vector_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo685">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5fapply5ffunc">\r
+Component Library: Vector/cl_vector_apply_func</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_apply_func</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_apply_func</strong> function invokes a specified function for every\r
+       element in a vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_vector_apply_func</strong>(\r
+        IN      const <a href="#robo700">cl_vector_t</a>* const        p_vector,\r
+        IN      <a href="#robo681">cl_pfn_vec_apply_t</a>                      pfn_callback,\r
+        IN      const void* const                       context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure whose elements to iterate.\r
+\r
+       pfn_callback\r
+               [in] Function invoked for every element in the array.\r
+               See the <a href="#robo681">cl_pfn_vec_apply_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback function.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_vector_apply_func</strong> invokes the specified function for every element\r
+       in the vector, starting from the beginning of the vector.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo690">cl_vector_find_from_start</a>, <a href="#robo689">cl_vector_find_from_end</a>,\r
+       <a href="#robo681">cl_pfn_vec_apply_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo686">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5fat">\r
+Component Library: Vector/cl_vector_at</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_at</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_at</strong> function copies an element stored in a vector at a\r
+       specified index, performing boundary checks.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_vector_at</strong>(\r
+        IN      const <a href="#robo700">cl_vector_t</a>* const        p_vector,\r
+        IN      const size_t                            index,\r
+        OUT     void* const                                     p_element );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure from which to get a copy of\r
+               an element.\r
+\r
+       index\r
+               [in] Index of the element.\r
+\r
+       p_element\r
+               [out] Pointer to storage for the element. Contains a copy of the\r
+               desired element upon successful completion of the call.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if an element was found at the specified index.\r
+\r
+       CL_INVALID_SETTING if the index was out of range.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_vector_at</strong> provides constant time access regardless of the index, and\r
+       performs boundary checking on the vector.\r
+\r
+       Upon success, the p_element parameter contains a copy of the desired element.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo691">cl_vector_get</a>, <a href="#robo693">cl_vector_get_ptr</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo687">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5fconstruct">\r
+Component Library: Vector/cl_vector_construct</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_construct</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_construct</strong> function constructs a vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_vector_construct</strong>(\r
+        IN      <a href="#robo700">cl_vector_t</a>* const      p_vector );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure to construct.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Allows calling <a href="#robo688">cl_vector_destroy</a> without first calling <a href="#robo695">cl_vector_init</a>.\r
+\r
+       Calling <strong>cl_vector_construct</strong> is a prerequisite to calling any other\r
+       vector function except <a href="#robo695">cl_vector_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo695">cl_vector_init</a>, <a href="#robo688">cl_vector_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo688">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5fdestroy">\r
+Component Library: Vector/cl_vector_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_destroy</strong> function destroys a vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_vector_destroy</strong>(\r
+        IN      <a href="#robo700">cl_vector_t</a>* const      p_vector );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure to destroy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_vector_destroy</strong> frees all memory allocated for the vector. The vector\r
+       is left initialized to a zero capacity and size.\r
+\r
+       This function should only be called after a call to <a href="#robo687">cl_vector_construct</a>\r
+       or <a href="#robo695">cl_vector_init</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo687">cl_vector_construct</a>, <a href="#robo695">cl_vector_init</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo689">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5ffind5ffrom5fend">\r
+Component Library: Vector/cl_vector_find_from_end</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_find_from_end</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_find_from_end</strong> function uses a specified function to search\r
+       for elements in a vector starting from the highest index.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT size_t CL_API\r
+<strong>cl_vector_find_from_end</strong>(\r
+        IN      const <a href="#robo700">cl_vector_t</a>* const        p_vector,\r
+        IN      <a href="#robo683">cl_pfn_vec_find_t</a>                       pfn_callback,\r
+        IN      const void* const                       context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure to inititalize.\r
+\r
+       pfn_callback\r
+               [in] Function invoked to determine if a match was found.\r
+               See the <a href="#robo683">cl_pfn_vec_find_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback function.\r
+\r
+ RETURN VALUES\r
+       Index of the element, if found.\r
+\r
+       Size of the vector if the element was not found.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_vector_find_from_end</strong> does not remove the found element from\r
+       the vector. The index of the element is returned when the function\r
+       provided by the pfn_callback parameter returns CL_SUCCESS.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo690">cl_vector_find_from_start</a>, <a href="#robo685">cl_vector_apply_func</a>,\r
+       <a href="#robo683">cl_pfn_vec_find_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo690">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5ffind5ffrom5fstart">\r
+Component Library: Vector/cl_vector_find_from_start</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_find_from_start</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_find_from_start</strong> function uses a specified function to\r
+       search for elements in a vector starting from the lowest index.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT size_t CL_API\r
+<strong>cl_vector_find_from_start</strong>(\r
+        IN      const <a href="#robo700">cl_vector_t</a>* const        p_vector,\r
+        IN      <a href="#robo683">cl_pfn_vec_find_t</a>                       pfn_callback,\r
+        IN      const void* const                       context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure to inititalize.\r
+\r
+       pfn_callback\r
+               [in] Function invoked to determine if a match was found.\r
+               See the <a href="#robo683">cl_pfn_vec_find_t</a> function type declaration for details\r
+               about the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback function.\r
+\r
+ RETURN VALUES\r
+       Index of the element, if found.\r
+\r
+       Size of the vector if the element was not found.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_vector_find_from_start</strong> does not remove the found element from\r
+       the vector. The index of the element is returned when the function\r
+       provided by the pfn_callback parameter returns CL_SUCCESS.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo689">cl_vector_find_from_end</a>, <a href="#robo685">cl_vector_apply_func</a>, <a href="#robo683">cl_pfn_vec_find_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo691">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5fget">\r
+Component Library: Vector/cl_vector_get</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_get</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_get</strong> function copies an element stored in a vector at a\r
+       specified index.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void CL_API\r
+<strong>cl_vector_get</strong>(\r
+        IN      const <a href="#robo700">cl_vector_t</a>* const        p_vector,\r
+        IN      const size_t                            index,\r
+        OUT     void* const                                     p_element )\r
+{\r
+        void *p_src;\r
+\r
+        CL_ASSERT( p_vector );\r
+        CL_ASSERT( p_vector-&gt;state == CL_INITIALIZED );\r
+        CL_ASSERT( p_element );\r
+\r
+        /* Get a pointer to the element. */\r
+        p_src = <a href="#robo693">cl_vector_get_ptr</a>( p_vector, index );\r
+        p_vector-&gt;pfn_copy( p_element, p_src, p_vector-&gt;element_size );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure from which to get a copy of\r
+               an element.\r
+\r
+       index\r
+               [in] Index of the element.\r
+\r
+       p_element\r
+               [out] Pointer to storage for the element. Contains a copy of the\r
+               desired element upon successful completion of the call.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_vector_get</strong> provides constant time access regardless of the index.\r
+\r
+       <strong>cl_vector_get</strong> does not perform boundary checking on the vector, and\r
+       callers are responsible for providing an index that is within the range\r
+       of the vector. To access elements after performing boundary checks,\r
+       use <a href="#robo686">cl_vector_at</a>.\r
+\r
+       The p_element parameter contains a copy of the desired element upon\r
+       return from this function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo693">cl_vector_get_ptr</a>, <a href="#robo686">cl_vector_at</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo692">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5fget5fcapacity">\r
+Component Library: Vector/cl_vector_get_capacity</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_get_capacity</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_get_capacity</strong> function returns the capacity of a vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_vector_get_capacity</strong>(\r
+        IN      const <a href="#robo700">cl_vector_t</a>* const        p_vector )\r
+{\r
+        CL_ASSERT( p_vector );\r
+        CL_ASSERT( p_vector-&gt;state == CL_INITIALIZED );\r
+\r
+        return( p_vector-&gt;capacity );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure whose capacity to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Capacity, in elements, of the vector.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The capacity is the number of elements that the vector can store, and\r
+       can be greater than the number of elements stored. To get the number of\r
+       elements stored in the vector, use <a href="#robo694">cl_vector_get_size</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo697">cl_vector_set_capacity</a>, <a href="#robo694">cl_vector_get_size</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo693">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5fget5fptr">\r
+Component Library: Vector/cl_vector_get_ptr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_get_ptr</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_get_ptr</strong> function returns a pointer to an element\r
+       stored in a vector at a specified index.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void* CL_API\r
+<strong>cl_vector_get_ptr</strong>(\r
+        IN      const <a href="#robo700">cl_vector_t</a>* const        p_vector,\r
+        IN      const size_t                            index )\r
+{\r
+        CL_ASSERT( p_vector );\r
+        CL_ASSERT( p_vector-&gt;state == CL_INITIALIZED );\r
+\r
+        return( p_vector-&gt;p_ptr_array[index] );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure from which to get a\r
+               pointer to an element.\r
+\r
+       index\r
+               [in] Index of the element.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Pointer to the element stored at specified index.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_vector_get_ptr</strong> provides constant access times regardless of the index.\r
+\r
+       <strong>cl_vector_get_ptr</strong> does not perform boundary checking. Callers are\r
+       responsible for providing an index that is within the range of the vector.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo691">cl_vector_get</a>, <a href="#robo686">cl_vector_at</a>, <a href="#robo696">cl_vector_set</a>, <a href="#robo694">cl_vector_get_size</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo694">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5fget5fsize">\r
+Component Library: Vector/cl_vector_get_size</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_get_size</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_get_size</strong> function returns the size of a vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE size_t CL_API\r
+<strong>cl_vector_get_size</strong>(\r
+        IN      const <a href="#robo700">cl_vector_t</a>* const        p_vector )\r
+{\r
+        CL_ASSERT( p_vector );\r
+        CL_ASSERT( p_vector-&gt;state == CL_INITIALIZED );\r
+\r
+        return( p_vector-&gt;size );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure whose size to return.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Size, in elements, of the vector.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo699">cl_vector_set_size</a>, <a href="#robo692">cl_vector_get_capacity</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo695">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5finit">\r
+Component Library: Vector/cl_vector_init</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_init</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_init</strong> function initializes a vector for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_vector_init</strong>(\r
+        IN      <a href="#robo700">cl_vector_t</a>* const      p_vector,\r
+        IN      const size_t            min_size,\r
+        IN      const size_t            grow_size,\r
+        IN      const size_t            element_size,\r
+        IN      <a href="#robo684">cl_pfn_vec_init_t</a>       pfn_init OPTIONAL,\r
+        IN      <a href="#robo682">cl_pfn_vec_dtor_t</a>       pfn_dtor OPTIONAL,\r
+        IN      const void* const       context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure to inititalize.\r
+\r
+       initial_size\r
+               [in] Initial number of elements.\r
+\r
+       grow_size\r
+               [in] Number of elements to allocate when incrementally growing\r
+               the vector.  A value of zero disables automatic growth.\r
+\r
+       element_size\r
+               [in] Size of each element.\r
+\r
+       pfn_init\r
+               [in] Initializer callback to invoke for every new element.\r
+               See the <a href="#robo684">cl_pfn_vec_init_t</a> function type declaration for details about\r
+               the callback function.\r
+\r
+       pfn_dtor\r
+               [in] Destructor callback to invoke for elements being deallocated.\r
+               See the <a href="#robo682">cl_pfn_vec_dtor_t</a> function type declaration for details about\r
+               the callback function.\r
+\r
+       context\r
+               [in] Value to pass to the callback functions to provide context.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the vector was initialized successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if the initialization failed.\r
+\r
+       <a href="./cl_types_h.html#robo304">cl_status_t</a> value returned by optional initializer function specified by\r
+       the pfn_init parameter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The constructor and initializer functions, if any, are invoked for every\r
+       new element in the array.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo687">cl_vector_construct</a>, <a href="#robo688">cl_vector_destroy</a>, <a href="#robo696">cl_vector_set</a>,\r
+       <a href="#robo691">cl_vector_get</a>, <a href="#robo693">cl_vector_get_ptr</a>, <a href="#robo686">cl_vector_at</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo696">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5fset">\r
+Component Library: Vector/cl_vector_set</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_set</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_set</strong> function sets the element at the specified index.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_vector_set</strong>(\r
+        IN      <a href="#robo700">cl_vector_t</a>* const      p_vector,\r
+        IN      const size_t            index,\r
+        IN      void* const                     p_element );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure into which to store\r
+               an element.\r
+\r
+       index\r
+               [in] Index of the element.\r
+\r
+       p_element\r
+               [in] Pointer to an element to store in the vector.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the element was successfully set.\r
+\r
+       CL_INSUFFICIENT_MEMORY if the vector could not be resized to accommodate\r
+       the new element.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_vector_set</strong> grows the vector as needed to accommodate the new element,\r
+       unless the grow_size parameter passed into the <a href="#robo695">cl_vector_init</a> function\r
+       was zero.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo691">cl_vector_get</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo697">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5fset5fcapacity">\r
+Component Library: Vector/cl_vector_set_capacity</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_set_capacity</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_set_capacity</strong> function reserves memory in a vector for a\r
+       specified number of elements.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_vector_set_capacity</strong>(\r
+        IN      <a href="#robo700">cl_vector_t</a>* const      p_vector,\r
+        IN      const size_t            new_capacity );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure whose capacity to set.\r
+\r
+       new_capacity\r
+               [in] Total number of elements for which the vector should\r
+               allocate memory.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the capacity was successfully set.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to satisfy the\r
+       operation. The vector is left unchanged.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_vector_set_capacity</strong> increases the capacity of the vector. It does\r
+       not change the size of the vector. If the requested capacity is less\r
+       than the current capacity, the vector is left unchanged.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo692">cl_vector_get_capacity</a>, <a href="#robo699">cl_vector_set_size</a>,\r
+       <a href="#robo698">cl_vector_set_min_size</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo698">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5fset5fmin5fsize">\r
+Component Library: Vector/cl_vector_set_min_size</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_set_min_size</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_set_min_size</strong> function resizes a vector to a specified size\r
+       if the vector is smaller than the specified size.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_vector_set_min_size</strong>(\r
+        IN      <a href="#robo700">cl_vector_t</a>* const      p_vector,\r
+        IN      const size_t            min_size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure whose minimum size to set.\r
+\r
+       min_size\r
+               [in] Minimum number of elements that the vector should contain.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the vector size is greater than or equal to min_size.  This\r
+       could indicate that the vector's capacity was increased to min_size or\r
+       that the vector was already of sufficient size.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to resize the vector.\r
+       The vector is left unchanged.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       If min_size is smaller than the current size of the vector, the vector is\r
+       unchanged. The vector is unchanged if the size could not be changed due\r
+       to insufficient memory being available to perform the operation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo694">cl_vector_get_size</a>, <a href="#robo699">cl_vector_set_size</a>, <a href="#robo697">cl_vector_set_capacity</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo699">[Functions]<a name="Component20Library3a20Vector2fcl5fvector5fset5fsize">\r
+Component Library: Vector/cl_vector_set_size</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_set_size</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_vector_set_size</strong> function resizes a vector, either increasing or\r
+       decreasing its size.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_vector_set_size</strong>(\r
+        IN      <a href="#robo700">cl_vector_t</a>* const      p_vector,\r
+        IN      const size_t            size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_vector\r
+               [in] Pointer to a <a href="#robo700">cl_vector_t</a> structure whose size to set.\r
+\r
+       size\r
+               [in] Number of elements desired in the vector.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the size of the vector was set successfully.\r
+\r
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to complete the\r
+       operation. The vector is left unchanged.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       <strong>cl_vector_set_size</strong> sets the vector to the specified size. If size is\r
+       smaller than the current size of the vector, the size is reduced.\r
+       The destructor function, if any, will be invoked for all elements that\r
+       are above size. Likewise, the constructor and initializer, if any, will\r
+       be invoked for all new elements.\r
+\r
+       This function can only fail if size is larger than the current capacity.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>, <a href="#robo694">cl_vector_get_size</a>, <a href="#robo698">cl_vector_set_min_size</a>,\r
+       <a href="#robo697">cl_vector_set_capacity</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo700">[Structures]<a name="Component20Library3a20Vector2fcl5fvector5ft">\r
+Component Library: Vector/cl_vector_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vector_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <a href="#robo36">Vector</a> structure.\r
+\r
+       The <strong>cl_vector_t</strong> structure should be treated as opaque and should be\r
+       manipulated only through the provided functions.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_vector\r
+{\r
+        size_t                          size;\r
+        size_t                          grow_size;\r
+        size_t                          capacity;\r
+        size_t                          element_size;\r
+        <a href="#robo684">cl_pfn_vec_init_t</a>       pfn_init;\r
+        <a href="#robo682">cl_pfn_vec_dtor_t</a>       pfn_dtor;\r
+        cl_pfn_vec_copy_t       pfn_copy;\r
+        const void                      *context;\r
+        <a href="./cl_qlist_h.html#robo584">cl_qlist_t</a>                      alloc_list;\r
+        void                            **p_ptr_array;\r
+        cl_state_t                      state;\r
+\r
+} <strong>cl_vector_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       size\r
+                Number of elements successfully initialized in the vector.\r
+\r
+       grow_size\r
+                Number of elements to allocate when growing.\r
+\r
+       capacity\r
+                total # of elements allocated.\r
+\r
+       element_size\r
+                Size of each element.\r
+\r
+       pfn_init\r
+                User supplied element initializer.\r
+\r
+       pfn_dtor\r
+                User supplied element destructor.\r
+\r
+       pfn_copy\r
+                Copy operator.\r
+\r
+       context\r
+                User context for callbacks.\r
+\r
+       alloc_list\r
+                <a href="./cl_list_h.html#robo15">List</a> of allocations.\r
+\r
+       p_ptr_array\r
+                Internal array of pointers to elements.\r
+\r
+       state\r
+               State of the vector.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo36">Vector</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/cl_waitobj_h.html b/trunk/docs/complib/cl_waitobj_h.html
new file mode 100644 (file)
index 0000000..7ceb7e5
--- /dev/null
@@ -0,0 +1,356 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/cl_waitobj_h.html</title>\r
+<!-- Source: ./inc/complib/cl_waitobj.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/cl_waitobj.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:23\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo37">[Modules]<a name="Component20Library2fWait20Object">\r
+Component Library/Wait Object</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Wait <a href="./cl_obj_h.html#robo18">Object</a>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The Wait <a href="./cl_obj_h.html#robo18">Object</a> provides the capability for a user mode process to\r
+       create and manipulate a wait object that can also be manipulated from\r
+       kernel mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Structures:\r
+               <a href="#robo704">cl_waitobj_handle_t</a>\r
+\r
+       User Mode Initialization/Destruction:\r
+               <a href="#robo701">cl_waitobj_create</a>\r
+               <a href="#robo703">cl_waitobj_destroy</a>\r
+\r
+       Kernel Mode Access:\r
+               <a href="#robo705">cl_waitobj_ref</a>\r
+               <a href="#robo702">cl_waitobj_deref</a>\r
+\r
+       Manipulation:\r
+               <a href="#robo707">cl_waitobj_signal</a>\r
+               <a href="#robo706">cl_waitobj_reset</a>\r
+               <a href="#robo708">cl_waitobj_wait_on</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo701">[Functions]<a name="Component20Library3a20Wait20Object2fcl5fwaitobj5fcreate">\r
+Component Library: Wait Object/cl_waitobj_create</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_waitobj_create</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_waitobj_create</strong> function creates a wait object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_waitobj_create</strong>(\r
+        IN      const boolean_t                         manual_reset, \r
+        OUT     <a href="#robo704">cl_waitobj_handle_t</a>* const      ph_wait_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       manual_reset\r
+               [in] If FALSE, indicates that the event resets itself after releasing \r
+               a single waiter.  If TRUE, the event remains in the signalled state \r
+               until explicitly reset by a call to <a href="./cl_event_h.html#robo319">cl_event_reset</a>.\r
+\r
+       ph_wait_obj\r
+               [out] Pointer to a wait object handle set upon successful creation.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the wait object was created successfully.\r
+\r
+       CL_ERROR if the wait object creation failed.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is only available in user mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Wait <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo704">cl_waitobj_handle_t</a>, <a href="#robo703">cl_waitobj_destroy</a>, \r
+       <a href="#robo707">cl_waitobj_signal</a>, <a href="#robo706">cl_waitobj_reset</a>, <a href="#robo708">cl_waitobj_wait_on</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo702">[Functions]<a name="Component20Library3a20Wait20Object2fcl5fwaitobj5fderef">\r
+Component Library: Wait Object/cl_waitobj_deref</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_waitobj_deref</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_waitobj_deref</strong> function release a reference on a kernel mode \r
+       wait object handle and allows the wait object to be destroyed.\r
+                                                               \r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void CL_API\r
+<strong>cl_waitobj_deref</strong>(\r
+        IN      <a href="#robo704">cl_waitobj_handle_t</a>     h_kernel_wait_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_kernel_wait_obj\r
+               [in] A wait object handle returned by a previous call to <a href="#robo705">cl_waitobj_ref</a>. \r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is only available in kernel mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Wait <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo704">cl_waitobj_handle_t</a>, <a href="#robo705">cl_waitobj_ref</a>, \r
+       <a href="#robo707">cl_waitobj_signal</a>, <a href="#robo706">cl_waitobj_reset</a>, <a href="#robo708">cl_waitobj_wait_on</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo703">[Functions]<a name="Component20Library3a20Wait20Object2fcl5fwaitobj5fdestroy">\r
+Component Library: Wait Object/cl_waitobj_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_waitobj_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_waitobj_destroy</strong> function destroys a wait object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_waitobj_destroy</strong>(\r
+        IN      <a href="#robo704">cl_waitobj_handle_t</a>     h_wait_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_wait_obj\r
+               [in] A handle to the wait object to destroy, obtained by a pervious\r
+               call to <a href="#robo701">cl_waitobj_create</a>.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the wait object handle is destroyed.\r
+\r
+       CL_INVALID_PARAMETER if the wait object handle is invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is only available in user mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Wait <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo704">cl_waitobj_handle_t</a>, <a href="#robo701">cl_waitobj_create</a>, \r
+       <a href="#robo707">cl_waitobj_signal</a>, <a href="#robo706">cl_waitobj_reset</a>, <a href="#robo708">cl_waitobj_wait_on</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo704">[Definitions]<a name="Component20Library3a20Wait20Object2fcl5fwaitobj5fhandle5ft">\r
+Component Library: Wait Object/cl_waitobj_handle_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_waitobj_handle_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Defines the handle for an OS wait object.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The wait object handle should be treated as opaque and is defined\r
+       differently depending on the target environment.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Wait <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo701">cl_waitobj_create</a>, <a href="#robo703">cl_waitobj_destroy</a>,\r
+       <a href="#robo705">cl_waitobj_ref</a>, <a href="#robo702">cl_waitobj_deref</a>, <a href="#robo707">cl_waitobj_signal</a>,\r
+       <a href="#robo706">cl_waitobj_reset</a>, <a href="#robo708">cl_waitobj_wait_on</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo705">[Functions]<a name="Component20Library3a20Wait20Object2fcl5fwaitobj5fref">\r
+Component Library: Wait Object/cl_waitobj_ref</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_waitobj_ref</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_waitobj_ref</strong> function validates a user mode wait object handle \r
+       and returns a kernel mode wait object handle.  A reference is taken\r
+       on the object to prevent its destruction even if the user mode \r
+       application destroys it.\r
+                                                               \r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="#robo704">cl_waitobj_handle_t</a> CL_API\r
+<strong>cl_waitobj_ref</strong>(\r
+        IN      void                                    *h_user_wait_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_user_wait_obj\r
+               [in] A wait object handle passed from user mode. \r
+\r
+ RETURN VALUES\r
+       Returns a kernel wait object handle upon success.  The returned handle \r
+       should only be used as parameters to kernel mode calls.\r
+\r
+       Returns NULL in case of failure.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is only available in kernel mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Wait <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo704">cl_waitobj_handle_t</a>, <a href="#robo702">cl_waitobj_deref</a>,\r
+       <a href="#robo707">cl_waitobj_signal</a>, <a href="#robo706">cl_waitobj_reset</a>, <a href="#robo708">cl_waitobj_wait_on</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo706">[Functions]<a name="Component20Library3a20Wait20Object2fcl5fwaitobj5freset">\r
+Component Library: Wait Object/cl_waitobj_reset</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_waitobj_reset</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_waitobj_reset</strong> function sets an wait object to the non-signalled state.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_waitobj_reset</strong>(\r
+        IN      <a href="#robo704">cl_waitobj_handle_t</a>     h_wait_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_wait_obj\r
+               [in] A handle to the wait object that needs to reset.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the wait object was successfully reset.\r
+\r
+       CL_ERROR otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       In kernel mode, a pointer to a cl_event_t can safely be used instead of\r
+       a wait object handle.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Wait <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo701">cl_waitobj_create</a>, <a href="#robo703">cl_waitobj_destroy</a>,\r
+       <a href="#robo705">cl_waitobj_ref</a>, <a href="#robo702">cl_waitobj_deref</a>,\r
+       <a href="#robo707">cl_waitobj_signal</a>, <a href="#robo708">cl_waitobj_wait_on</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo707">[Functions]<a name="Component20Library3a20Wait20Object2fcl5fwaitobj5fsignal">\r
+Component Library: Wait Object/cl_waitobj_signal</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_waitobj_signal</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_waitobj_signal</strong> function sets a wait object to the signalled \r
+       state and releases one or more waiting threads.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_waitobj_signal</strong>(\r
+        IN      <a href="#robo704">cl_waitobj_handle_t</a>     h_wait_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_wait_obj\r
+               [in] A handle to the wait object that needs to be signaled.\r
\r
+ RETURN VALUES\r
+       CL_SUCCESS if the event was successfully signalled.\r
+\r
+       CL_ERROR otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       For auto-reset wait objects, the wait object is reset automatically once \r
+       a wait operation is satisfied. \r
+\r
+       Triggering the wait object multiple times does not guarantee that the same \r
+       number of wait operations are satisfied. This is because wait objects are \r
+       either in a signalled on non-signalled state, and triggering a wait object \r
+       that is already in the signalled state has no effect.\r
+\r
+       In kernel mode, a pointer to a cl_event_t can safely be used instead of\r
+       a wait object handle.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Wait <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo701">cl_waitobj_create</a>, <a href="#robo703">cl_waitobj_destroy</a>,\r
+       <a href="#robo705">cl_waitobj_ref</a>, <a href="#robo702">cl_waitobj_deref</a>,\r
+       <a href="#robo706">cl_waitobj_reset</a>, <a href="#robo708">cl_waitobj_wait_on</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo708">[Functions]<a name="Component20Library3a20Wait20Object2fcl5fwaitobj5fwait5fon">\r
+Component Library: Wait Object/cl_waitobj_wait_on</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_waitobj_wait_on</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>cl_waitobj_wait_on</strong> function waits for the specified wait object to be \r
+       triggered for a minimum amount of time.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT <a href="./cl_types_h.html#robo304">cl_status_t</a> CL_API\r
+<strong>cl_waitobj_wait_on</strong>(\r
+        IN      <a href="#robo704">cl_waitobj_handle_t</a>             h_wait_obj,\r
+        IN      const uint32_t                  wait_us,\r
+        IN      const boolean_t                 interruptible );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_wait_obj\r
+               [in] A handle to the wait object on which to wait.\r
+\r
+       wait_us \r
+               [in] Number of microseconds to wait.\r
+\r
+       interruptible\r
+               [in] Indicates whether the wait operation can be interrupted\r
+               by external signals.\r
+\r
+ RETURN VALUES\r
+       CL_SUCCESS if the wait operation succeeded in response to the wait object \r
+       being set.\r
+\r
+       CL_TIMEOUT if the specified time period elapses.\r
+\r
+       CL_NOT_DONE if the wait was interrupted by an external signal.\r
+\r
+       CL_ERROR if the wait operation failed.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       If wait_us is set to EVENT_NO_TIMEOUT, the function will wait until the \r
+       wait object is triggered and never timeout.\r
+\r
+       If the timeout value is zero, this function simply tests the state of \r
+       the wait object.\r
+\r
+       If the wait object is already in the signalled state at the time of the call\r
+       to <strong>cl_waitobj_wait_on</strong>, the call completes immediately with CL_SUCCESS.\r
+\r
+       In kernel mode, a pointer to a cl_event_t can safely be used instead of\r
+       a wait object handle.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Wait <a href="./cl_obj_h.html#robo18">Object</a>, <a href="#robo701">cl_waitobj_create</a>, <a href="#robo703">cl_waitobj_destroy</a>,\r
+       <a href="#robo705">cl_waitobj_ref</a>, <a href="#robo702">cl_waitobj_deref</a>, \r
+       <a href="#robo707">cl_waitobj_signal</a>, <a href="#robo706">cl_waitobj_reset</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/complib/comp_lib_h.html b/trunk/docs/complib/comp_lib_h.html
new file mode 100644 (file)
index 0000000..3adc8e1
--- /dev/null
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/complib/comp_lib_h.html</title>\r
+<!-- Source: ./inc/complib/comp_lib.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/complib/comp_lib.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:23\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo19">[Modules]<a name="Component20Library2fOverview">\r
+Component Library/Overview</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>Overview</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The component library is a collection of components that can be used to\r
+       create complex projects quickly and reliably.\r
+\r
+       The component library simplifies development by eliminating the need to\r
+       re-implement existing functionality. This contributes to shorter\r
+       development cycles as well as smaller code bases, helping reduce the\r
+       number of bugs by leveraging tried and tested code.\r
+\r
+       The component library also provides the same interface in multiple\r
+       environments, such as kernel mode and user mode, allowing code to be used\r
+       in both, again reducing code duplication and development life cycles.\r
+\r
+       Components of the library all follow the same usage model, as follows:\r
+               - The constructor for all components should be called before any other\r
+               function for that component.  It is acceptable to call the initializer\r
+               without first calling the constructor.\r
+\r
+               - The initializer for all components must be called successfully\r
+               before any function manipulating that component is called.\r
+\r
+               - The destructor for all components must be called if the initializer\r
+               was called.\r
+\r
+       In a debug build, the components assert that the proper sequence is\r
+       followed.\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/iba/ib_al_h.html b/trunk/docs/iba/ib_al_h.html
new file mode 100644 (file)
index 0000000..4db98dc
--- /dev/null
@@ -0,0 +1,9905 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/iba/ib_al_h.html</title>\r
+<!-- Source: ./inc/iba/ib_al.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/iba/ib_al.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:23\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo38">[Modules]<a name="IB20Access20Layer20API2fOverview">\r
+IB Access Layer API/Overview</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       InfiniBand Access Layer\r
+</pre>\r
+</span><p><strong>COPYRIGHT</strong></p>\r
+<span class="COPYRIGHT"><pre>       Copyright (c) 2003 Intel Corporation - All Rights Reserved.\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The access layer provides transport level access to an InfiniBand fabric.\r
+       It supplies a foundation upon which a channel driver may be built.  The\r
+       access layer exposes the capabilities of the InfiniBand architecture and\r
+       adds support for higher-level functionality required by most users of an\r
+       InfiniBand fabric.  Users define the protocols and policies used by the\r
+       access layer, and the access layer implements them under the direction\r
+       of a user.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo44">[Definitions]<a name="Access20Layer2fATS">\r
+Access Layer/ATS</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       DAPL Address Translation Service\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>ATS</strong> service ID, service name, and IPv4 offset for DAPL-compliant\r
+       <strong>ATS</strong> service records.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo46">[Functions]<a name="Access20Layer2fib5fadd5fsvc5fentry">\r
+Access Layer/ib_add_svc_entry</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_add_svc_entry</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Adds a new service entry to an existing I/O controller.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_add_svc_entry</strong>(\r
+        IN              const   ib_ioc_handle_t                         h_ioc,\r
+        IN              const   <a href="./ib_types_h.html#robo968">ib_svc_entry_t</a>* const           p_svc_entry,\r
+                OUT                     ib_svc_handle_t* const          ph_svc );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ioc\r
+               [in] A handle to an existing I/O controller that will support the\r
+               added service.\r
+\r
+       p_svc_entry\r
+               [in] Service entry information that will be reported as part of the\r
+               controller's service profile.\r
+\r
+       ph_svc\r
+               [out] Upon successful completion of this call, this references a handle\r
+               to the added service.  This handle may be used to remove the service\r
+               entry.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The service entry was successfully added.\r
+\r
+       IB_INVALID_HANDLE\r
+               The I/O controller handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the service entry information or handle was not\r
+               provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to register the service entry.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the I/O\r
+               controller to register the service entry.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine adds a new service to an I/O controller.  Once added, the\r
+       service will be reported with the controller profile, provided that the\r
+       controller is registered with the local device manager.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo106">ib_create_ioc</a>, <a href="#robo240">ib_remove_svc_entry</a>, <a href="#robo226">ib_reg_ioc</a>, <a href="./ib_types_h.html#robo968">ib_svc_entry_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo47">[Definitions]<a name="Access20Layer2fib5fal5fflags5ft">\r
+Access Layer/ib_al_flags_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_al_flags_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Access layer flags used to direct the operation of various calls.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef uint32_t                                                        <strong>ib_al_flags_t</strong>;\r
+#define IB_FLAGS_SYNC                                           0x00000001\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IB_FLAGS_SYNC\r
+               Indicates that the given operation should be performed synchronously.\r
+               The call will block until it completes.  Callbacks will still be\r
+               invoked.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo98">ib_cm_req_t</a>, <a href="#robo95">ib_cm_rep_t</a>, <a href="#robo79">ib_cm_dreq_t</a>, <a href="#robo84">ib_cm_lap_t</a>,\r
+       <a href="#robo236">ib_reg_svc_req_t</a>, <a href="#robo154">ib_mcast_req_t</a>, <a href="#robo220">ib_query_req_t</a>, <a href="#robo254">ib_sub_req_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo48">[Functions]<a name="Access20Layer2fib5falloc5fpd">\r
+Access Layer/ib_alloc_pd</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_alloc_pd</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Allocates a protection domain on the specified channel adapter.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_alloc_pd</strong>(\r
+        IN              const   ib_ca_handle_t                          h_ca,\r
+        IN              const   <a href="./ib_types_h.html#robo165">ib_pd_type_t</a>                            pd_type,\r
+        IN              const   void* const                                     pd_context,\r
+                OUT                     ib_pd_handle_t* const           ph_pd );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] A handle to an opened channel adapter.\r
+\r
+       pd_type\r
+               [in] Indicates the type of protection domain being created.\r
+\r
+       pd_context\r
+               [in] A client-specified context to associate with this allocated\r
+               protection domain.  This context is returned to the user when\r
+               invoking asynchronous callbacks referencing this protection domain.\r
+\r
+       ph_pd\r
+               [out] Upon successful completion of this call, this references a\r
+               handle to the allocated protection domain.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The operation was successful.\r
+\r
+       IB_INVALID_CA_HANDLE\r
+               The channel adapter handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               The supplied pd_type value is invalid or a reference to the protection\r
+               domain handle was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to allocate the protection domain.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to create the protection domain.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       When successful, this routine returns a handle to a newly allocated\r
+       protection domain.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo110">ib_dealloc_pd</a>, <a href="./ib_types_h.html#robo165">ib_pd_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo51">[Structures]<a name="Access20Layer2fib5fapr5finfo5ft">\r
+Access Layer/ib_apr_info_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_apr_info_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Infiniband-defined additional rejection information.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_apr_info\r
+{\r
+        uint8_t                                         data[IB_APR_INFO_SIZE];\r
+\r
+}       <strong>ib_apr_info_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo52">[Structures]<a name="Access20Layer2fib5fapr5fpdata5ft">\r
+Access Layer/ib_apr_pdata_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_apr_pdata_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User data sent as part of an alternate path response.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ib_apr_pdata\r
+{\r
+        uint8_t                                         data[IB_APR_PDATA_SIZE];\r
+\r
+}       <strong>ib_apr_pdata_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo54">[Structures]<a name="Access20Layer2fib5fari5ft">\r
+Access Layer/ib_ari_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_ari_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Infiniband-defined additional rejection information.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_ari\r
+{\r
+        uint8_t                                         data[IB_ARI_SIZE];\r
+\r
+}       <strong>ib_ari_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo55">[Structures]<a name="Access20Layer2fib5fasync5fevent5frec5ft">\r
+Access Layer/ib_async_event_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_async_event_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information returned when an asynchronous event occurs on an allocated\r
+       resource.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_async_event_rec\r
+{\r
+        <a href="./ib_types_h.html#robo1155">ib_async_event_t</a>                                                        code;\r
+        uint64_t                                                                        vendor_specific;\r
+\r
+        void* __ptr64                                                           context;\r
+        union _handle_t\r
+        {\r
+                ib_ca_handle_t                                                  h_ca;\r
+                ib_cq_handle_t                                                  h_cq;\r
+                ib_qp_handle_t                                                  h_qp;\r
+\r
+        } handle;\r
+\r
+}       <strong>ib_async_event_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       code\r
+               A code that identifies the type of event being reported.\r
+\r
+       vendor_specific\r
+               A field containing optional vendor specific information.\r
+\r
+       context\r
+               User-defined context information associated with the resource on\r
+               which the error occurred.\r
+\r
+       handle\r
+               A handle to the resource for which this event record was generated.\r
+               This handle will match the handle returned during the creation of\r
+               resource.  It is provided in case an event occurs before a client's\r
+               call to create a resource can return.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="./ib_types_h.html#robo1155">ib_async_event_t</a>, <a href="#robo178">ib_pfn_event_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo58">[Functions]<a name="Access20Layer2fib5fbind5fmw">\r
+Access Layer/ib_bind_mw</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_bind_mw</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Binds a memory window to a registered memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_bind_mw</strong>(\r
+        IN              const   ib_mw_handle_t                          h_mw,\r
+        IN              const   ib_qp_handle_t                          h_qp,\r
+        IN                              <a href="./ib_types_h.html#robo59">ib_bind_wr_t</a>* const                     p_mw_bind,\r
+                OUT                     net32_t* const                          p_rkey );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mw\r
+               [in] A handle to an existing memory window.\r
+\r
+       h_qp\r
+               [in] A handle to a queue pair that the bind request will be posted to.\r
+\r
+       p_mw_bind\r
+               [in] Describes the memory window bind request.\r
+\r
+       p_rkey\r
+               [out] The new rkey for the memory window that may be used by a remote\r
+               end-point when performing RDMA or atomic operations to this memory\r
+               region.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The memory window bind operation was successfully posted.\r
+\r
+       IB_INVALID_MW_HANDLE\r
+               The memory window handle was invalid.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the memory window bind work request or rkey was not\r
+               provided.\r
+\r
+       IB_INVALID_SERVICE_TYPE\r
+               The queue pair configuration does not support this type of service.\r
+\r
+       IB_INVALID_MR_HANDLE\r
+               The memory region handle was invalid.\r
+\r
+       IB_INVALID_RKEY\r
+               The rkey is invalid for the memory region being bound.\r
+\r
+       IB_UNSUPPORTED\r
+               The requested access rights are not supported by the channel adapter.\r
+\r
+       IB_INVALID_PERMISSION\r
+               The requested access rights are invalid.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to bind the memory window.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine posts a request to bind a memory window to a registered\r
+       memory region.  The bind operation occurs on the specified queue pair,\r
+       but the bound region is usable across all queue pairs within the same\r
+       protection domain.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo108">ib_create_mw</a>, <a href="./ib_types_h.html#robo59">ib_bind_wr_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo62">[Functions]<a name="Access20Layer2fib5fcancel5fmad">\r
+Access Layer/ib_cancel_mad</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cancel_mad</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine cancels a pending send transaction to a MAD service.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_cancel_mad</strong>(\r
+        IN              const   ib_mad_svc_handle_t                     h_mad_svc,\r
+        IN                              <a href="#robo150">ib_mad_element_t</a>* const         p_mad_element );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mad_svc\r
+               [in] The MAD service to which the send operation was directed.\r
+\r
+       p_mad_element\r
+               [in] A handle to a sent MAD element.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The requested MAD transaction was located and canceled.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the MAD element list was not provided.\r
+\r
+       IB_NOT_FOUND\r
+               The requested transaction was not located or had already completed.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine cancels a pending send transaction to a MAD service.  If\r
+       the request is successfully located and has not yet completed, it will\r
+       be completed with its status set to IB_CANCELED.  The canceled operation\r
+       will be returned to the user through the normal MAD completion callback.\r
+       If the send transaction has already completed, this call will return\r
+       IB_NOT_FOUND.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo247">ib_send_mad</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo63">[Functions]<a name="Access20Layer2fib5fcancel5fquery">\r
+Access Layer/ib_cancel_query</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cancel_query</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Routine used to cancel a query of the subnet administrator.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT void AL_API\r
+<strong>ib_cancel_query</strong>(\r
+        IN              const   ib_al_handle_t                          h_al,\r
+        IN              const   ib_query_handle_t                       h_query );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an open instance of the access layer.\r
+\r
+       h_query\r
+               [in] Query handle returned by a previous call to <a href="#robo211">ib_query</a>().\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine directs the access layer to cancel a query to the subnet\r
+       administrator.  The access layer will issue notify the user with the\r
+       final status of the query through the query callback specified in the\r
+       call to <a href="#robo211">ib_query</a>().\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo211">ib_query</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo64">[Structures]<a name="Access20Layer2fib5fcep5flisten5ft">\r
+Access Layer/ib_cep_listen_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cep_listen_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Request to listen for incoming connection attempts.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_cep_listen\r
+{\r
+        net64_t                                         svc_id;\r
+\r
+        net64_t                                         port_guid;\r
+\r
+        uint8_t* __ptr64                        p_cmp_buf;\r
+        uint8_t                                         cmp_len;\r
+        uint8_t                                         cmp_offset;\r
+\r
+}       <strong>ib_cep_listen_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       svc_id\r
+               The identifier of the service to register for incoming connection\r
+               requests.\r
+\r
+       port_guid\r
+               Directs the communication manager to register the listen only\r
+               with the specified port.  This should be set to IB_ALL_PORTS\r
+               if the listen is not directed to a particular port.\r
+\r
+       p_cmp_buf\r
+               An optionally provided buffer that will be used to match incoming\r
+               connection requests with a registered service.  Use of this buffer\r
+               permits multiple services to listen on the same service ID as long as\r
+               they provide different compare buffers.  Incoming requests will\r
+               be matched against the compare buffer.\r
+\r
+       cmp_len\r
+               Specifies the size of the compare buffer in bytes.  The length must\r
+               be the same for all requests using the same service ID.\r
+\r
+       cmp_offset\r
+               An offset into the user-defined data area of a connection request\r
+               which contains the start of the data that will be compared against.\r
+               The offset must be the same for all requests using the same service ID.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Users fill out this structure when listening on a service ID with the\r
+       local communication manager.  The communication manager will use the given\r
+       service ID and compare buffer to route connection requests to the\r
+       appropriate client.  Users may direct listens requests on a particular\r
+       channel adapter, port, or LID.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo65">[Functions]<a name="Access20Layer2fib5fci5fcall">\r
+Access Layer/ib_ci_call</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_ci_call</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Performs a vendor specific CA interface function call.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_ci_call</strong>(\r
+        IN                              ib_ca_handle_t                          h_ca,\r
+        IN              const   void* __ptr64 *         const   handle_array    OPTIONAL,\r
+        IN                              uint32_t                                        num_handles,\r
+        IN                              <a href="./ib_types_h.html#robo66">ib_ci_op_t</a>*                     const   p_ci_op );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] An opened instance of a channel adapter.\r
+\r
+       handle_array\r
+               [in] This parameter references an array containing handles of\r
+               existing CA resources.  This array should contain all of the\r
+               handles specified in the vendor specific data provided with this\r
+               call.  All handles specified through this array are validated by\r
+               the access layer as existing and belonging to the calling process.\r
+               The verbs provider driver is responsible for verifying that the\r
+               number and type of handles are correct for the requested operation.\r
+\r
+       num_handles\r
+               [in] The number of the handles in handle array.  This count is\r
+               verified by the access layer.\r
+\r
+       p_ci_op\r
+               [in] A reference to the vendor specific CA interface data\r
+               structure containing the operation parameters.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The operation was successful.\r
+\r
+       IB_INVALID_CA_HANDLE\r
+               The specified CA handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the vendor specific data was not provided.\r
+\r
+       IB_INVALID_HANDLE\r
+               A handle specified in the handle array was invalid.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to perform the operation.\r
+\r
+       IB_ERROR\r
+               An error occurred while processing the command.  Additional\r
+               error information is provided in the p_ci_op status field.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine performs a vendor specific CA interface function call.\r
+       The optional p_ci_op structure provides a means to pass vendor\r
+       specific parameters and data to the verbs provider driver.  If the\r
+       vendor specific data contains handles, the client should provide the\r
+       optional handle array that lists all of the handles specified in the\r
+       vendor specific data.  The handles in the handle array are restricted\r
+       to the following types:  ib_pd_handle_t, ib_cq_handle_t,\r
+       ib_av_handle_t, ib_qp_handle_t, ib_mr_handle_t, or ib_mw_handle_t.\r
+       The contents of the handle array are verified by the access layer and\r
+       the verbs provider driver.  This call cannot be used to allocate private\r
+       handles that are passed as parameters in access layer calls.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo164">ib_open_ca</a>, <a href="#robo48">ib_alloc_pd</a>, <a href="#robo104">ib_create_av</a>, <a href="#robo105">ib_create_cq</a>,\r
+       <a href="#robo109">ib_create_qp</a>, ib_reg_mr, <a href="#robo230">ib_reg_phys</a>, <a href="#robo232">ib_reg_shared</a>,\r
+       <a href="#robo108">ib_create_mw</a>, <a href="./ib_types_h.html#robo66">ib_ci_op_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo67">[Functions]<a name="Access20Layer2fib5fclose5fal">\r
+Access Layer/ib_close_al</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_close_al</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Deregisters a channel driver with the access layer and releases all\r
+       associated resources, including queue pairs, connection requests,\r
+       and completion queues.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_close_al</strong>(\r
+        IN              const   ib_al_handle_t                          h_al );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an instance of the access layer.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The access layer was closed successfully.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call destroys an existing instance of the access layer.  Since\r
+       callbacks may be outstanding against the resources managed by this\r
+       access layer instance when the destroy operation is invoked, this\r
+       call may block until all outstanding callbacks complete.  This\r
+       routine may not be called from a callback invoked by the access layer.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo163">ib_open_al</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo68">[Functions]<a name="Access20Layer2fib5fclose5fca">\r
+Access Layer/ib_close_ca</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_close_ca</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Closes an opened channel adapter.  Once closed, no further access to this\r
+       channel adapter is possible.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_close_ca</strong>(\r
+        IN              const   ib_ca_handle_t                          h_ca,\r
+        IN              const   <a href="#robo177">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] A handle to an opened channel adapter.\r
+\r
+       pfn_destroy_cb\r
+               [in] A user-specified callback that is invoked after the channel\r
+               adapter has been successfully destroyed.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The close request was registered.\r
+\r
+       IB_INVALID_CA_HANDLE\r
+               The channel adapter handle was invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call closes the opened channel adapter and frees all associated\r
+       resources, such as queue pairs, protection domains, and completion\r
+       queues.  Since callbacks may be outstanding against the channel adapter\r
+       or one of its resources at the time the close operation is invoked, this\r
+       call operates asynchronously.  The user will be notified through a callback\r
+       once the close operation completes, indicating that no additional callbacks\r
+       will be invoked for the specified channel adapter or a related resource.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo164">ib_open_ca</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo69">[Functions]<a name="Access20Layer2fib5fcm5fapr">\r
+Access Layer/ib_cm_apr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_apr</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Responds to a load alternate path request, to accept or reject the\r
+       proposed alternate path.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_cm_apr</strong>(\r
+        IN              const   ib_cm_handle_t                          h_cm_lap,\r
+        IN              const   <a href="#robo71">ib_cm_apr_t</a>* const                      p_cm_apr );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cm_lap\r
+               [in] A handle to a load alternate path request corresponding to the\r
+               response.  This handle is provided through the <a href="#robo170">ib_pfn_cm_lap_cb_t</a>.\r
+\r
+       p_cm_apr\r
+               [in] Information describing the alternate path response.  The response\r
+               will accept or reject the load request.  If the request is rejected\r
+               this parameter will reference additional rejection information.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The load alternate path response was sent successfully.\r
+\r
+       IB_INVALID_HANDLE\r
+               The connection manager load alternate path handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the alternate path information was not provided.\r
+\r
+       IB_INVALID_STATE\r
+               The current connection state does not allow sending this message.\r
+\r
+       IB_INVALID_SETTING\r
+               The private data length specified in alternate path information is\r
+               invalid.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle specified in the alternate path information\r
+               was invalid.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to send the alternate path response.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine responds to a load alternate path request.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo82">ib_cm_lap</a>, <a href="#robo71">ib_cm_apr_t</a>, <a href="#robo170">ib_pfn_cm_lap_cb_t</a>, <a href="#robo167">ib_pfn_cm_apr_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo70">[Structures]<a name="Access20Layer2fib5fcm5fapr5frec5ft">\r
+Access Layer/ib_cm_apr_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_apr_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Load alternate path response information returned to the user through\r
+       a callback.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_cm_apr_rec\r
+{\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         cm_status;\r
+        <a href="./ib_types_h.html#robo53">ib_apr_status_t</a>                         apr_status;\r
+\r
+        const uint8_t* __ptr64          p_info;\r
+        uint8_t                                         info_length;\r
+\r
+        const uint8_t* __ptr64          p_apr_pdata;\r
+\r
+        ib_qp_handle_t                          h_qp;\r
+        const void* __ptr64                     qp_context;\r
+\r
+}       <strong>ib_cm_apr_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       cm_status\r
+               The status of the alternate path response.  IB_SUCCESS indicates that\r
+               the alternate path was loaded successfully.  IB_TIMEOUT indicates that\r
+               a reply was not received within the specified timeout and retry count.\r
+               Other error values indicates that the alternate path was not loaded.\r
+               if the apr_status is IB_AP_SUCCESS, the QP failed to load the path.\r
+               Other apr_status values indicate that the request was rejected for some\r
+               reason.\r
+\r
+       apr_status\r
+               The alternate path response status.  This indicates additional failure\r
+               information to a load alternate path request and is defined by the\r
+               InfiniBand specification.\r
+\r
+       info_length\r
+               Length of valid data in the APR additional information buffer.\r
+\r
+       p_info\r
+               APR additional information.\r
+\r
+       p_apr_pdata\r
+               A reference to user-defined private data sent as part of the alternate\r
+               path response.\r
+\r
+       h_qp\r
+               The queue pair handle associated with the alternate path response.\r
+\r
+       qp_context\r
+               The queue pair context associated with the alternate path response.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo82">ib_cm_lap</a>, <a href="#robo167">ib_pfn_cm_apr_cb_t</a>, <a href="./ib_types_h.html#robo53">ib_apr_status_t</a>, <a href="#robo51">ib_apr_info_t</a>\r
+       <a href="#robo52">ib_apr_pdata_t</a>, <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo71">[Structures]<a name="Access20Layer2fib5fcm5fapr5ft">\r
+Access Layer/ib_cm_apr_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_apr_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Load alternate path information used to configure a queue pair with an\r
+       alternate path.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo69">ib_cm_apr</a>\r
+{\r
+        const uint8_t* __ptr64                  p_apr_pdata;\r
+        uint8_t                                                 apr_length;\r
+\r
+        <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>                                    qp_type;\r
+\r
+        /* valid for rc, uc &amp; rd qp_type only */\r
+        ib_qp_handle_t                                  h_qp;\r
+\r
+        <a href="./ib_types_h.html#robo53">ib_apr_status_t</a>                                 apr_status;\r
+        uint8_t                                                 info_length;\r
+        const <a href="#robo51">ib_apr_info_t</a>* __ptr64    p_info;\r
+\r
+}       <strong>ib_cm_apr_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       p_apr_pdata\r
+               Optional user-defined private data sent as part of the alternate\r
+               path response message.\r
+\r
+       apr_length\r
+               Defines the size of the user-defined private data.\r
+\r
+       qp_type\r
+               Indicates the CM service type.\r
+\r
+       h_qp\r
+               A handle to the queue pair that should receive the alternate path.\r
+\r
+       apr_status\r
+               The alternate path response status.  This indicates additional failure\r
+               information to a load alternate path request and is defined by the\r
+               Infiniband specification.\r
+\r
+       info_length\r
+               Length of valid data in the APR additional information buffer.\r
+\r
+       p_info\r
+               APR additional information.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo69">ib_cm_apr</a>, <a href="#robo167">ib_pfn_cm_apr_cb_t</a>, <a href="#robo143">ib_lap_pdata_t</a>, <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo72">[Functions]<a name="Access20Layer2fib5fcm5fcancel">\r
+Access Layer/ib_cm_cancel</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_cancel</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Routine used to cancel listening for connection requests.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_cm_cancel</strong>(\r
+        IN              const   ib_listen_handle_t                      h_cm_listen,\r
+        IN              const   <a href="#robo177">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cm_listen\r
+               [in] A handle to an existing listen request.\r
+\r
+       pfn_destroy_cb\r
+               [in] A user-specified callback that is invoked after the listen\r
+               request has been successfully canceled.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The cancel listen operation was initiated.\r
+\r
+       IB_INVALID_HANDLE\r
+               The connection manager handle was invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine cancels a listen request.  To avoid a race condition\r
+       canceling a request at the same time a connection callback is in\r
+       progress, the cancel operation operates asynchronously.  For\r
+       additional details see <a href="#robo177">ib_pfn_destroy_cb_t</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo85">ib_cm_listen</a>, <a href="#robo177">ib_pfn_destroy_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo74">[Functions]<a name="Access20Layer2fib5fcm5fdrep">\r
+Access Layer/ib_cm_drep</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_drep</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine replies to a disconnection request and disconnects\r
+       a queue pair or end-to-end context.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_cm_drep</strong>(\r
+        IN              const   ib_cm_handle_t                          h_cm_dreq,\r
+        IN              const   <a href="#robo76">ib_cm_drep_t</a>* const                     p_cm_drep );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cm_dreq\r
+               [in] A handle to a disconnection request being replied to.  This\r
+               handle is provided through the <a href="#robo169">ib_pfn_cm_dreq_cb_t</a> callback.\r
+\r
+       p_cm_drep\r
+               [in] Reply information used to respond to the disconnection request.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The disconnect request was sent successfully.\r
+\r
+       IB_INVALID_HANDLE\r
+               The connection manager disconnect request handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the disconnect repy information was not provided.\r
+\r
+       IB_INVALID_STATE\r
+               The current connection state does not allow sending this message.\r
+\r
+       IB_INVALID_SETTING\r
+               The private data length specified in disconnect reply information is\r
+               invalid.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to send the disconnect reply.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function will disconnect a queue pair or end-to-end context.  It\r
+       results in sending a disconnection reply message to the remote end-point.\r
+       After calling this routine, data transfers on the specified queue pair or\r
+       end-to-end context will fail.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo77">ib_cm_dreq</a>, <a href="#robo169">ib_pfn_cm_dreq_cb_t</a>, <a href="#robo76">ib_cm_drep_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo75">[Structures]<a name="Access20Layer2fib5fcm5fdrep5frec5ft">\r
+Access Layer/ib_cm_drep_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_drep_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Disconnection reply information returned to the user through their\r
+       disconnect reply callback.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_cm_drep_rec\r
+{\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         cm_status;\r
+\r
+        const uint8_t* __ptr64          p_drep_pdata;\r
+\r
+        ib_qp_handle_t                          h_qp;\r
+        const void* __ptr64                     qp_context;\r
+\r
+}       <strong>ib_cm_drep_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       cm_status\r
+               The status of the disconnect request.  Valid values are IB_SUCCESS\r
+               and IB_TIMEOUT.  IB_TIMEOUT indicates that a reply was not received\r
+               within the specified timeout and retry count.\r
+\r
+       p_drep_pdata\r
+               A reference to user-defined private data sent as part of the\r
+               disconnect reply.\r
+\r
+       h_qp\r
+               The queue pair handle associated with the disconnect reply.\r
+\r
+       qp_context\r
+               The queue pair context associated with the disconnect reply.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo74">ib_cm_drep</a>, <a href="#robo168">ib_pfn_cm_drep_cb_t</a>, <a href="#robo123">ib_drep_pdata_t</a>, <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo76">[Structures]<a name="Access20Layer2fib5fcm5fdrep5ft">\r
+Access Layer/ib_cm_drep_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_drep_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Disconnection reply information used when tearing down a connection.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo74">ib_cm_drep</a>\r
+{\r
+        uint8_t* __ptr64                        p_drep_pdata;\r
+        uint8_t                                         drep_length;\r
+\r
+}       <strong>ib_cm_drep_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       p_drep_pdata\r
+               A reference to user-defined private data sent as part of the\r
+               disconnection reply.\r
+\r
+       drep_length\r
+               Defines the size of the user-defined private data.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo74">ib_cm_drep</a>, <a href="#robo123">ib_drep_pdata_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo77">[Functions]<a name="Access20Layer2fib5fcm5fdreq">\r
+Access Layer/ib_cm_dreq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_dreq</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine disconnects a queue pair or end-to-end context.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_cm_dreq</strong>(\r
+        IN              const   <a href="#robo79">ib_cm_dreq_t</a>* const                     p_cm_dreq );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_cm_dreq\r
+               [in] Information that describes the connection being disconnected.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The disconnect request was sent successfully.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the disconnect request information was not provided.\r
+\r
+       IB_INVALID_STATE\r
+               The current connection state does not allow sending this message.\r
+\r
+       IB_INVALID_SETTING\r
+               The private data length specified in disconnect request information is\r
+               invalid.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle specified in the disconnect request information\r
+               was invalid.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to send the disconnect request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function will disconnect a queue pair or end-to-end context.\r
+       It results in sending a disconnection request message to the remote\r
+       end-point.  After calling this routine, data transfers on the specified\r
+       queue pair or end-to-end context will fail.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo74">ib_cm_drep</a>, <a href="#robo169">ib_pfn_cm_dreq_cb_t</a>, <a href="#robo79">ib_cm_dreq_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo78">[Structures]<a name="Access20Layer2fib5fcm5fdreq5frec5ft">\r
+Access Layer/ib_cm_dreq_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_dreq_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Disconnection request information returned to the user through their\r
+       disconnection callback.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_cm_dreq_rec\r
+{\r
+        ib_cm_handle_t                          h_cm_dreq;\r
+\r
+        const uint8_t* __ptr64          p_dreq_pdata;\r
+\r
+        const void* __ptr64                     qp_context;\r
+\r
+}       <strong>ib_cm_dreq_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       h_cm_dreq\r
+               A handle to the disconnection request.  This handle is used to reply\r
+               to the disconnection request.\r
+\r
+       p_dreq_pdata\r
+               A reference to user-defined private data sent as part of the\r
+               disconnect request.\r
+\r
+       qp_context\r
+               The queue pair context associated with the disconnect request.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo77">ib_cm_dreq</a>, <a href="#robo169">ib_pfn_cm_dreq_cb_t</a>, <a href="#robo124">ib_dreq_pdata_t</a>, <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo79">[Structures]<a name="Access20Layer2fib5fcm5fdreq5ft">\r
+Access Layer/ib_cm_dreq_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_dreq_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Disconnection request information used to tear down a connection.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo77">ib_cm_dreq</a>\r
+{\r
+        <a href="#robo47">ib_al_flags_t</a>                           flags;\r
+\r
+        uint8_t* __ptr64                        p_dreq_pdata;\r
+        uint8_t                                         dreq_length;\r
+\r
+        <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>                            qp_type;\r
+\r
+        /* valid for rc, uc &amp; rd qp_type only */\r
+        ib_qp_handle_t                          h_qp;\r
+        <a href="#robo168">ib_pfn_cm_drep_cb_t</a>                     pfn_cm_drep_cb;\r
+\r
+}       <strong>ib_cm_dreq_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       flags\r
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to\r
+               process the called routine synchronously.\r
+\r
+       p_dreq_pdata\r
+               A reference to user-defined private data sent as part of the\r
+               disconnection request.\r
+\r
+       dreq_length\r
+               Defines the size of the user-defined private data.\r
+\r
+       qp_type\r
+               Indicates the CM service type.\r
+\r
+       h_qp\r
+               A handle to the queue pair to disconnect.\r
+\r
+       pfn_cm_drep_cb\r
+               References a user-defined callback that will be invoked when\r
+               the reply to the disconnect is received.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Users submit this structure to disconnect a queue pair or end-to-end\r
+       context.  A single disconnect call disconnects either a queue pair or\r
+       an end-to-end context, but not both.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo77">ib_cm_dreq</a>, <a href="#robo74">ib_cm_drep</a>, <a href="#robo124">ib_dreq_pdata_t</a>, <a href="#robo47">ib_al_flags_t</a>,\r
+       <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo80">[Definitions]<a name="Access20Layer2fib5fcm5ffailover5ft">\r
+Access Layer/ib_cm_failover_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_failover_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Fail over acceptance status returned as part of a connection reply.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef uint8_t                                                         <strong>ib_cm_failover_t</strong>;\r
+#define IB_FAILOVER_ACCEPT_SUCCESS                      0\r
+#define IB_FAILOVER_ACCEPT_UNSUPPORTED          1\r
+#define IB_FAILOVER_ACCEPT_ERROR                        2\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       These values and their use are defined the Infiniband specification.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo93">ib_cm_rep</a>, <a href="#robo95">ib_cm_rep_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo81">[Functions]<a name="Access20Layer2fib5fcm5fhandoff">\r
+Access Layer/ib_cm_handoff</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_handoff</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Hands off the received REQ information to svc_id.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_cm_handoff</strong>(\r
+        IN              const   ib_cm_handle_t                          h_cm_req,\r
+        IN              const   <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      svc_id );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cm_req\r
+               [in] A handle to the connection request being handed off.\r
+               This is the h_cm_req handle provided through the <a href="#robo174">ib_pfn_cm_req_cb_t</a>\r
+               callback.\r
+\r
+       svc_id\r
+               [in] The service id to which this connection request is handed off.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The handoff was initiated.\r
+\r
+       IB_INVALID_HANDLE\r
+               The connection manager handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A valid service id was not provided.\r
+\r
+       IB_INVALID_STATE\r
+               The current connection state does not allow this transfer.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to complete the request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine results in the access layer handing off the connection\r
+       to the service id as a new incoming connection.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo174">ib_pfn_cm_req_cb_t</a>, <a href="#robo92">ib_cm_rej_t</a>, <a href="#robo85">ib_cm_listen</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo82">[Functions]<a name="Access20Layer2fib5fcm5flap">\r
+Access Layer/ib_cm_lap</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_lap</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Issues a load alternate path request to a specified end-point.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_cm_lap</strong>(\r
+        IN              const   <a href="#robo84">ib_cm_lap_t</a>* const                      p_cm_lap );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_cm_lap\r
+               [in] Information describing the alternate path to load and the remote\r
+               endpoint for the connection.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The load alternate path request was sent successfully.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the load alternate path information was not provided.\r
+\r
+       IB_UNSUPPORTED\r
+               The passive side of the connection attempted to load an alternate path.\r
+\r
+       IB_INVALID_STATE\r
+               The current connection state does not allow sending this message.\r
+\r
+       IB_INVALID_SETTING\r
+               The load alternate path information contains one or more of the\r
+               following errors:\r
+                 - The class version, queue pair type, or path is not supported by\r
+                       connection manager.\r
+                 - The primary path is not on the same channel adapter as the queue\r
+                       pair.\r
+                 - The primary and alternate paths are on different channel adapters.\r
+                 - The primary and alternate paths specify different MTUs.\r
+                 - The alternate path record packet lifetime is out of range.\r
+                 - The alternate path record pkey is out of range.\r
+                 - The specified private data length is invalid.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle specified in the load alternate path information\r
+               was invalid.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to send the load alternate path request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine issues initiates loading an alternate path on an existing\r
+       connected queue pair or end-to-end context.  If the request is successful,\r
+       the alternate path will be loaded and armed for path migration.\r
+\r
+       The p_cm_lap parameter describes the alternate path to load and indicates\r
+       the remote endpoint of an existing connection that will receive the load\r
+       request.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo69">ib_cm_apr</a>, <a href="#robo84">ib_cm_lap_t</a>, <a href="#robo170">ib_pfn_cm_lap_cb_t</a>, <a href="#robo167">ib_pfn_cm_apr_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo83">[Structures]<a name="Access20Layer2fib5fcm5flap5frec5ft">\r
+Access Layer/ib_cm_lap_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_lap_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Load alternate path request information returned to the user through\r
+       a callback.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_cm_lap_rec\r
+{\r
+        ib_cm_handle_t                          h_cm_lap;\r
+        <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>                           alt_path;\r
+\r
+        const uint8_t* __ptr64          p_lap_pdata;\r
+\r
+        const void* __ptr64                     qp_context;\r
+\r
+}       <strong>ib_cm_lap_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       p_lap_pdata\r
+               A reference to user-defined private data sent as part of the load\r
+               alternate path request.\r
+\r
+       qp_context\r
+               The queue pair context associated with a connection request.\r
+\r
+       h_cm_lap\r
+               A handle to the load alternate path request.  This handle is used\r
+               to reply to the load request.\r
+\r
+       alt_path\r
+               Requested alternate path.  Users must accept or reject the path by\r
+               calling <a href="#robo69">ib_cm_apr</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo82">ib_cm_lap</a>, <a href="#robo170">ib_pfn_cm_lap_cb_t</a>, <a href="#robo143">ib_lap_pdata_t</a>, <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo84">[Structures]<a name="Access20Layer2fib5fcm5flap5ft">\r
+Access Layer/ib_cm_lap_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_lap_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Load alternate path information used to configure a queue pair with an\r
+       alternate path.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo82">ib_cm_lap</a>\r
+{\r
+        <a href="#robo47">ib_al_flags_t</a>                           flags;\r
+\r
+        const uint8_t* __ptr64          p_lap_pdata;\r
+        uint8_t                                         lap_length;\r
+\r
+        <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>                            qp_type;\r
+\r
+        /* valid for rc, uc &amp; rd qp_type only */\r
+        ib_qp_handle_t                          h_qp;\r
+\r
+        uint8_t                                         remote_resp_timeout;\r
+        <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>* __ptr64          p_alt_path;\r
+        <a href="#robo167">ib_pfn_cm_apr_cb_t</a>                      pfn_cm_apr_cb;\r
+\r
+}       <strong>ib_cm_lap_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       flags\r
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to\r
+               process the called routine synchronously.\r
+\r
+       p_lap_pdata\r
+               Optional user-defined private data sent as part of the load alternate\r
+               path message.\r
+\r
+       lap_length\r
+               Defines the size of the user-defined private data.\r
+\r
+       qp_type\r
+               Indicates the CM service type.\r
+\r
+       h_qp\r
+               A handle to the queue pair that should receive the alternate path.\r
+\r
+       remote_resp_timeout\r
+               The time within which the remote CM should transmit a response to\r
+               the sender.  This value is expressed as\r
+               4.096 * (2 ^ local_resp_timeout) microseconds.\r
+\r
+       p_alt_path\r
+               The path record to use for the alternate connection.\r
+\r
+       pfn_cm_apr_cb\r
+               References a user-defined callback that will be invoked when the\r
+               response to the load request is received.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo82">ib_cm_lap</a>, <a href="#robo170">ib_pfn_cm_lap_cb_t</a>, <a href="#robo167">ib_pfn_cm_apr_cb_t</a>, <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>,\r
+       ib_pfn_lap_pdata_t, <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo85">[Functions]<a name="Access20Layer2fib5fcm5flisten">\r
+Access Layer/ib_cm_listen</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_listen</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Issues a request to the local communication manager to listen for\r
+       incoming connection requests.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_cm_listen</strong>(\r
+        IN              const   ib_al_handle_t                          h_al,\r
+        IN              const   <a href="#robo86">ib_cm_listen_t</a>* const           p_cm_listen,\r
+        IN              const   <a href="#robo179">ib_pfn_listen_err_cb_t</a>          pfn_listen_err_cb,\r
+        IN              const   void* const                                     listen_context,\r
+                OUT                     ib_listen_handle_t* const       ph_cm_listen );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an opened instance of the access layer.\r
+\r
+       p_cm_listen\r
+               [in] Information used to direct the listen request to match incoming\r
+               connection requests.\r
+\r
+       pfn_listen_err_cb\r
+               [in] User-specified error callback routine to invoke if an error\r
+               occurs while listening.\r
+\r
+       listen_context\r
+               User-specified context information that is returned as a part of all\r
+               connection requests through the pfn_cm_req_cb routine.  The context is\r
+               also returned through the error and destroy callbacks.\r
+\r
+       ph_cm_listen\r
+               [out] Upon successful completion of this call, this references a handle\r
+               to the listen request.  This handle may be used to cancel the listen\r
+               operation.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The listen request was successfully registered with the connection\r
+               manager.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the listen request information, error callback function,\r
+               or listen handle was not provided.\r
+\r
+       IB_INVALID_SETTING\r
+               The class version specified in the listen request is not supported by\r
+               connection manager or the listen request is not unique.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to register the listen request.\r
+\r
+       IB_INVALID_GUID\r
+               A channel adapter or port GUID is not wildcarded and no channel adapter\r
+               or port in the system was found for the specified GUID.\r
+\r
+       IB_INVALID_LID\r
+               The lid is not wildcarded and is not within the lid range for the port\r
+               specified in the listen request information.\r
+\r
+       IB_INVALID_PKEY\r
+               The pkey is not wildcarded and is not a valid pkey for the port\r
+               specified in the listen request information.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine directs the access layer to route connection requests\r
+       matching the specified connection parameters to the client.  Clients\r
+       listen for connections matching a particular service ID, and may optionally\r
+       direct their listen request towards a specific channel adapter, port, or\r
+       LID.\r
+\r
+       If local configuration changes occur that invalidate a listen request, the\r
+       specified error callback will be invoked.  Invalidated listen requests\r
+       should be canceled by the user.  An example of a configuration change that\r
+       invalidates listen requests is a LID change for directed listens.  The\r
+       listen error callback will be invoked within the context of a system\r
+       thread.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo86">ib_cm_listen_t</a>, <a href="#robo179">ib_pfn_listen_err_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo86">[Structures]<a name="Access20Layer2fib5fcm5flisten5ft">\r
+Access Layer/ib_cm_listen_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_listen_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Request to listen for incoming connection attempts.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo85">ib_cm_listen</a>\r
+{\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      svc_id;\r
+\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      ca_guid;\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      port_guid;\r
+        <a href="./ib_types_h.html#robo893">ib_net16_t</a>                                      lid;\r
+        <a href="./ib_types_h.html#robo893">ib_net16_t</a>                                      pkey;\r
+\r
+        uint8_t* __ptr64                        p_compare_buffer;\r
+        uint8_t                                         compare_offset;\r
+        uint8_t                                         compare_length;\r
+\r
+        <a href="#robo174">ib_pfn_cm_req_cb_t</a>                      pfn_cm_req_cb;\r
+\r
+        <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>                            qp_type;\r
+\r
+        /* valid for ud qp_type only */\r
+        const void* __ptr64                     sidr_context;\r
+\r
+}       <strong>ib_cm_listen_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       svc_id\r
+               The identifier of the service to register for incoming connection\r
+               requests.\r
+\r
+       ca_guid\r
+               Directs the communication manager to register the listen only\r
+               with the specified channel adapter.  This should be set to IB_ALL_CAS\r
+               if the listen is not directed to a particular channel adapter.\r
+\r
+       port_guid\r
+               Directs the communication manager to register the listen only\r
+               with the specified port.  This should be set to IB_ALL_PORTS\r
+               if the listen is not directed to a particular port.\r
+\r
+       lid\r
+               Directs the communication manager to register the listen only\r
+               with the specified LID.  This should be set to IB_ALL_LIDS\r
+               if the listen is not directed to a particular LID.\r
+\r
+       pkey\r
+               Directs the communication manager to register the listen only with\r
+               the specified pkey value.  This should be set to IB_ALL_PKEYS\r
+               iv the listen is not directed to a particular partition.\r
+\r
+       p_compare_buffer\r
+               An optionally provided buffer that will be used to match incoming\r
+               connection requests with a registered service.  Use of this buffer\r
+               permits multiple services to listen on the same service ID as long as\r
+               they provide different compare buffers.  Incoming requests will\r
+               be matched against the compare buffer.\r
+\r
+       compare_offset\r
+               An offset into the user-defined data area of a connection request\r
+               which contains the start of the data that will be compared against.\r
+               The offset must be the same for all requests using the same service ID.\r
+\r
+       compare_length\r
+               Specifies the size of the compare buffer in bytes.  The length must\r
+               be the same for all requests using the same service ID.\r
+\r
+       pfn_cm_req_cb\r
+               References a user-provided callback that will be invoked whenever a\r
+               connection request is received.\r
+\r
+       qp_type\r
+               Indicates the CM service type.\r
+\r
+       pfn_cm_mra_cb\r
+               References a user-provided callback that will be invoked when\r
+               a message received acknowledgement is received.\r
+\r
+       pfn_cm_rej_cb\r
+               References a user-provided callback that will be invoked if the\r
+               connection is rejected by the remote end-point.\r
+\r
+       sidr_context\r
+               sidr specific context for listens. This context is passed back in\r
+               the <a href="#robo174">ib_pfn_cm_req_cb_t</a> callback.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Users fill out this structure when listening on a service ID with the\r
+       local communication manager.  The communication manager will use the given\r
+       service ID and compare buffer to route connection requests to the\r
+       appropriate client.  Users may direct listens requests on a particular\r
+       channel adapter, port, or LID.\r
+\r
+       Message received acknowledgement (MRA) callbacks will not be invoked\r
+       until a connection request has been replied to.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo147">ib_listen_info_t</a>, <a href="#robo174">ib_pfn_cm_req_cb_t</a>, <a href="#robo171">ib_pfn_cm_mra_cb_t</a>,\r
+       <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo87">[Functions]<a name="Access20Layer2fib5fcm5fmra">\r
+Access Layer/ib_cm_mra</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_mra</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Notifies the remote end-point of a connection or load alternate path\r
+       request that the request message has been received, but additional\r
+       processing is required.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_cm_mra</strong>(\r
+        IN              const   ib_cm_handle_t                          h_cm,\r
+        IN              const   <a href="#robo89">ib_cm_mra_t</a>* const                      p_cm_mra );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cm\r
+               [in] A handle to the connection request, connection reply, or load\r
+               alternate path request that should receive the message received\r
+               acknowledgement message.  This is the h_cm_req, h_cm_rep, or\r
+               h_cm_lap handle provided through the <a href="#robo174">ib_pfn_cm_req_cb_t</a>,\r
+               <a href="#robo173">ib_pfn_cm_rep_cb_t</a>, or <a href="#robo170">ib_pfn_cm_lap_cb_t</a> callback, respectively.\r
+\r
+       p_cm_mra\r
+               [in] Contains the message received acknowledgement data to return to\r
+               the requesting end-point.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The message receive acknowledge was sent successfully.\r
+\r
+       IB_INVALID_HANDLE\r
+               The connection manager reply handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the message receive acknowledge information was not\r
+               provided.\r
+\r
+       IB_INVALID_STATE\r
+               The current connection state does not allow sending this message.\r
+\r
+       IB_INVALID_SETTING\r
+               The class version is not supported by connection manager or the\r
+               specified private data length is invalid.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to send the message receive acknowledge.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine results in the access layer acknowledging a connection or\r
+       load alternate path message.  It should be invoked by a client if the\r
+       client is unable to respond to a request within a specified timeout,\r
+       in order to prevent the remote end-point from timing out.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo174">ib_pfn_cm_req_cb_t</a>, <a href="#robo173">ib_pfn_cm_rep_cb_t</a>, <a href="#robo170">ib_pfn_cm_lap_cb_t</a>, <a href="#robo89">ib_cm_mra_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo88">[Structures]<a name="Access20Layer2fib5fcm5fmra5frec5ft">\r
+Access Layer/ib_cm_mra_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_mra_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Message received acknowledgement information returned to the user through\r
+       a callback.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_cm_mra_rec\r
+{\r
+        const uint8_t* __ptr64          p_mra_pdata;\r
+\r
+        ib_qp_handle_t                          h_qp;\r
+        const void* __ptr64                     qp_context;\r
+\r
+}       <strong>ib_cm_mra_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       p_mra_pdata\r
+               A reference to user-defined private data sent as part of the MRA.\r
+\r
+       h_qp\r
+               The queue pair handle associated with a connection request.\r
+\r
+       qp_context\r
+               The queue pair context associated with a connection request.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo96">ib_cm_req</a>, <a href="#robo87">ib_cm_mra</a>, <a href="#robo171">ib_pfn_cm_mra_cb_t</a>, <a href="#robo162">ib_mra_pdata_t</a>, <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo89">[Structures]<a name="Access20Layer2fib5fcm5fmra5ft">\r
+Access Layer/ib_cm_mra_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_mra_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Connection message received acknowledgement information used to\r
+       indicate that a connection request, reply, or load alternate path\r
+       has been received.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo87">ib_cm_mra</a>\r
+{\r
+        uint8_t                                         svc_timeout;\r
+\r
+        const uint8_t* __ptr64          p_mra_pdata;\r
+        uint8_t                                         mra_length;\r
+\r
+}       <strong>ib_cm_mra_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       svc_timeout\r
+               Indicates the amount of time that the local service requires to\r
+               complete processing of the previously received message.\r
+\r
+       p_mra_pdata\r
+               Optional user-defined private data sent as part of the message\r
+               received acknowledgement.\r
+\r
+       mra_length\r
+               Defines the size of the user-defined private data.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo87">ib_cm_mra</a>, <a href="#robo174">ib_pfn_cm_req_cb_t</a>, <a href="#robo173">ib_pfn_cm_rep_cb_t</a>, <a href="#robo170">ib_pfn_cm_lap_cb_t</a>,\r
+       <a href="#robo162">ib_mra_pdata_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo90">[Functions]<a name="Access20Layer2fib5fcm5frej">\r
+Access Layer/ib_cm_rej</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_rej</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Rejects a connection request from a remote end-point.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_cm_rej</strong>(\r
+        IN              const   ib_cm_handle_t                          h_cm,\r
+        IN              const   <a href="#robo92">ib_cm_rej_t</a>* const                      p_cm_rej );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cm\r
+               [in] A handle to the connection request or reply being rejected.\r
+               This is the h_cm_req or h_cm_rep handle provided through the\r
+               <a href="#robo174">ib_pfn_cm_req_cb_t</a> or <a href="#robo173">ib_pfn_cm_rep_cb_t</a> callback, respectively.\r
+\r
+       p_cm_rej\r
+               [in] Contains the connection rejection information to return to the\r
+               connecting end-point.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The connection reject was initiated.\r
+\r
+       IB_INVALID_HANDLE\r
+               The connection manager handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the reject information was not provided.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine results in the access layer rejecting a connection\r
+       and notifying the remote end-point.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo174">ib_pfn_cm_req_cb_t</a>, <a href="#robo173">ib_pfn_cm_rep_cb_t</a>, <a href="#robo92">ib_cm_rej_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo91">[Structures]<a name="Access20Layer2fib5fcm5frej5frec5ft">\r
+Access Layer/ib_cm_rej_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_rej_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Connection rejection information returned to the user through their\r
+       rejection callback.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_cm_rej_rec\r
+{\r
+        <a href="./ib_types_h.html#robo238">ib_rej_status_t</a>                         rej_status;\r
+        const uint8_t* __ptr64          p_ari;\r
+        uint8_t                                         ari_length;\r
+\r
+        const uint8_t* __ptr64          p_rej_pdata;\r
+\r
+        ib_qp_handle_t                          h_qp;\r
+        const void* __ptr64                     qp_context;\r
+\r
+}       <strong>ib_cm_rej_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       rej_status\r
+               The reason for the connection rejection.\r
+\r
+       p_ari\r
+               Additional rejection information.  The data referenced by this field\r
+               is dependent on the rej_status and is defined by the Infiniband\r
+               specification.\r
+\r
+       ari_length\r
+               Length of valid data provided in the p_ari buffer.\r
+\r
+       p_rej_pdata\r
+               A reference to user-defined private data sent as part of the connection\r
+               request reply.\r
+\r
+       h_qp\r
+               The queue pair handle associated with a connection request.\r
+\r
+       qp_context\r
+               The queue pair context associated with a connection request.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo90">ib_cm_rej</a>, <a href="#robo172">ib_pfn_cm_rej_cb_t</a>, <a href="./ib_types_h.html#robo238">ib_rej_status_t</a>, <a href="#robo54">ib_ari_t</a>, <a href="#robo237">ib_rej_pdata_t</a>,\r
+       <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo92">[Structures]<a name="Access20Layer2fib5fcm5frej5ft">\r
+Access Layer/ib_cm_rej_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_rej_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information used to reject a connection request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo90">ib_cm_rej</a>\r
+{\r
+        <a href="./ib_types_h.html#robo238">ib_rej_status_t</a>                         rej_status;\r
+\r
+        <a href="#robo54">ib_ari_t</a>* __ptr64                       p_ari;\r
+        uint8_t                                         ari_length;\r
+        const uint8_t* __ptr64          p_rej_pdata;\r
+        uint8_t                                         rej_length;\r
+\r
+}       <strong>ib_cm_rej_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       rej_status\r
+               The reason for the connection rejection.\r
+\r
+       p_ari\r
+               Additional rejection information.  The data referenced by this field\r
+               is dependent on the rej_status and is defined by the Infiniband\r
+               specification.\r
+\r
+       ari_length\r
+               Length of valid data provided in the p_ari buffer.\r
+\r
+       p_rej_pdata\r
+               A reference to user-defined private data sent as part of the\r
+               reject message.\r
+\r
+       rej_length\r
+               Defines the size of the user-defined private data.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo90">ib_cm_rej</a>, <a href="#robo172">ib_pfn_cm_rej_cb_t</a>, <a href="./ib_types_h.html#robo238">ib_rej_status_t</a>, <a href="#robo54">ib_ari_t</a>, <a href="#robo237">ib_rej_pdata_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo93">[Functions]<a name="Access20Layer2fib5fcm5frep">\r
+Access Layer/ib_cm_rep</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_rep</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sends a reply to a connection request, indicating that the connection\r
+       has been accepted.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_cm_rep</strong>(\r
+        IN              const   ib_cm_handle_t                          h_cm_req,\r
+        IN              const   <a href="#robo95">ib_cm_rep_t</a>* const                      p_cm_rep );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cm_req\r
+               [in] A handle to the connection request being replied to.  This handle\r
+               is provided by the access layer through the <a href="#robo174">ib_pfn_cm_req_cb_t</a>\r
+               callback.\r
+\r
+       p_cm_rep\r
+               [in] Contains reply information to return to the initiator of the\r
+               connection request.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The connection reply was initiated.\r
+\r
+       IB_INVALID_HANDLE\r
+               The connection manager request handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the reply information was not provided.\r
+\r
+       IB_INVALID_STATE\r
+               The current connection state does not allow sending this message.\r
+\r
+       IB_INVALID_SETTING\r
+               The connect reply information contains one or more of the following\r
+               errors:\r
+                 - The class version, queue pair type, or path is not supported by\r
+                       connection manager.\r
+                 - The private data length exceeds the value allowed by the connection\r
+                       class version.\r
+                 - The primary path is not on the same channel adapter as the queue\r
+                       pair.\r
+                 - The primary and alternate paths are on different channel adapters.\r
+                 - The primary and alternate paths specify different MTUs.\r
+                 - A primary or alternate path record packet lifetime is out of range.\r
+                 - A primary or alternate path record pkey is out of range.\r
+                 - The specified private data length is invalid.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle specified in the reply was invalid.\r
+\r
+       IB_INVALID_QP_STATE\r
+               The queue pair was in an invalid state to perform the operation.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to send the connect reply.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine results in the access layer replying to a connection\r
+       request from a remote node.  This call results in sending a response\r
+       to the requesting node that the request has been accepted.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo95">ib_cm_rep_t</a>, <a href="#robo174">ib_pfn_cm_req_cb_t</a>, <a href="#robo173">ib_pfn_cm_rep_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo94">[Structures]<a name="Access20Layer2fib5fcm5frep5frec5ft">\r
+Access Layer/ib_cm_rep_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_rep_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Connection request reply information returned to the user through their\r
+       connection reply callback.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_cm_rep_rec\r
+{\r
+        const uint8_t* __ptr64          p_rep_pdata;\r
+\r
+        <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>                            qp_type;\r
+\r
+        ib_cm_handle_t                          h_cm_rep;\r
+        /* valid for rc, uc &amp; rd qp_type only */\r
+        const void* __ptr64                     qp_context;\r
+        uint8_t                                         resp_res;\r
+        boolean_t                                       flow_ctrl;\r
+        <a href="./ib_types_h.html#robo53">ib_apr_status_t</a>                         apr_status;\r
+\r
+        /* valid for ud qp_type only */\r
+        const void* __ptr64                     sidr_context;\r
+        ib_sidr_status_t                        status;\r
+        <a href="./ib_types_h.html#robo894">ib_net32_t</a>                                      remote_qp;\r
+        <a href="./ib_types_h.html#robo894">ib_net32_t</a>                                      remote_qkey;\r
+        <a href="./ib_types_h.html#robo839">ib_class_port_info_t</a>            class_info;\r
+\r
+}       <strong>ib_cm_rep_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       p_rep_pdata\r
+               A reference to user-defined private data sent as part of the connection\r
+               request reply.\r
+\r
+       qp_type\r
+               Indicates the CM service type.\r
+\r
+       h_cm_rep\r
+               The handle to the communication manager reply.  This handle is used\r
+               to issue a ready to use message or to reject the connection.\r
+\r
+       h_qp\r
+               The handle to the queue pair associated with a connection request.\r
+\r
+       qp_context\r
+               The queue pair context associated with a connection request.\r
+\r
+       resp_res\r
+               The maximum number of RDMA read/atomic operations from the recipient\r
+               that the requestor supports on the connection.  This may be less than\r
+               the init_depth specified in the call to <a href="#robo96">ib_cm_req</a>.  The local queue\r
+               pair will be configured with this value unless the connection is\r
+               rejected.\r
+\r
+       flow_ctrl\r
+               Indicates if the remote CA implements hardware end-to-end flow control.\r
+\r
+       apr_status\r
+               Indicates whether the alternate path information was accepted.\r
+\r
+       h_al\r
+               The AL handle on which the SIDR request was issued.\r
+\r
+       sidr_context\r
+               The sidr_context used in <a href="#robo96">ib_cm_req</a>.\r
+\r
+       status\r
+               Status of the request made previously using <a href="#robo96">ib_cm_req</a>.\r
+\r
+       remote_qp\r
+               Identifies the destination queue pair number.\r
+\r
+       remote_qkey\r
+               Identifies the destination qkey.\r
+\r
+       class_info\r
+               Identifies the class_port_info returned if status was not successful.\r
+               This field has no value if status is successful.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo96">ib_cm_req</a>, <a href="#robo93">ib_cm_rep</a>, <a href="#robo173">ib_pfn_cm_rep_cb_t</a>, ib_cm_status_t, <a href="#robo241">ib_rep_pdata_t</a>\r
+       <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>, ib_sidr_status_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo95">[Structures]<a name="Access20Layer2fib5fcm5frep5ft">\r
+Access Layer/ib_cm_rep_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_rep_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Connection reply information used when establishing a connection.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo93">ib_cm_rep</a>\r
+{\r
+        <a href="#robo47">ib_al_flags_t</a>                           flags;\r
+\r
+        const uint8_t* __ptr64          p_rep_pdata;\r
+        uint8_t                                         rep_length;\r
+\r
+        ib_qp_handle_t                          h_qp;\r
+        <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>                            qp_type;\r
+\r
+        /* valid for rc, uc &amp; rd qp_type only */\r
+        <a href="./ib_types_h.html#robo45">ib_access_t</a>                                     access_ctrl;\r
+        uint32_t                                        sq_depth;\r
+        uint32_t                                        rq_depth;\r
+\r
+        uint8_t                                         init_depth;\r
+        uint8_t                                         target_ack_delay;\r
+        <a href="#robo80">ib_cm_failover_t</a>                        failover_accepted;\r
+        boolean_t                                       flow_ctrl;\r
+        uint8_t                                         rnr_nak_timeout;\r
+        uint8_t                                         rnr_retry_cnt;\r
+\r
+        <a href="#robo172">ib_pfn_cm_rej_cb_t</a>                      pfn_cm_rej_cb;\r
+        <a href="#robo171">ib_pfn_cm_mra_cb_t</a>                      pfn_cm_mra_cb;\r
+        <a href="#robo175">ib_pfn_cm_rtu_cb_t</a>                      pfn_cm_rtu_cb;\r
+        <a href="#robo170">ib_pfn_cm_lap_cb_t</a>                      pfn_cm_lap_cb;\r
+        <a href="#robo169">ib_pfn_cm_dreq_cb_t</a>                     pfn_cm_dreq_cb;\r
+\r
+        <a href="./ib_types_h.html#robo225">ib_recv_wr_t</a>* __ptr64                   p_recv_wr;\r
+        <a href="./ib_types_h.html#robo225">ib_recv_wr_t</a>* __ptr64 *__ptr64  pp_recv_failure;\r
+\r
+        /*valid for ud qp_type only */\r
+        ib_sidr_status_t                        status;\r
+        <a href="./ib_types_h.html#robo839">ib_class_port_info_t</a>            class_info;\r
+\r
+}       <strong>ib_cm_rep_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       flags\r
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to\r
+               process the called routine synchronously.\r
+\r
+       p_rep_pdata\r
+               Optional user-defined private data sent as part of the connection\r
+               reply.\r
+\r
+       rep_length\r
+               Defines the size of the user-defined private data.\r
+\r
+       qp_type\r
+               Indicates the CM service type.\r
+\r
+       h_qp\r
+               A handle to the queue pair to use in the connection. For SIDR, h_qp\r
+               is valid only if sidr status is IB_SIDR_SUCCESS.\r
+\r
+       access_ctrl\r
+               Indicates the type of access permitted on the local QP.\r
+\r
+       sq_depth\r
+               The maximum number of outstanding send operations that the local\r
+               QP needs to support.\r
+\r
+       rq_depth\r
+               The maximum number of outstanding receive operations that the local\r
+               QP needs to support.\r
+\r
+       init_depth\r
+               The maximum number of outstanding RDMA read/atomic operations the\r
+               sender of the reply will have outstanding to the remote QP.\r
+\r
+       target_ack_delay\r
+               The time that the remote QP should wait to receive an ACK from the\r
+               local QP.\r
+\r
+       failover_accepted\r
+               Status indicating if the fail over path was accepted by the sender\r
+               of the reply.\r
+\r
+       flow_ctrl\r
+               Indicates whether the local CA supports end-to-end flow control.\r
+\r
+       rnr_nak_timeout\r
+               The time to wait before retrying a packet after receiving a RNR NAK.\r
+\r
+       rnr_retry_cnt\r
+               The number of times that the local QP should retry a send operation\r
+               after receiving an RNR NACK before reporting an error.\r
+\r
+       pfn_cm_rtu_cb\r
+               References a user-defined callback that will be invoked when\r
+               a connection is ready to use for send operations.\r
+\r
+       pfn_cm_lap_cb\r
+               References a user-defined callback that will be invoked when\r
+               a load alternate path request is received for the connecting\r
+               queue pair or end-to-end context.\r
+\r
+       pfn_cm_dreq_cb\r
+               References a user-defined callback that will be invoked when\r
+               a disconnect request is received is for the connecting\r
+               queue pair or end-to-end context.\r
+\r
+       p_recv_wr\r
+               A reference to the head of the work request list to be initially\r
+               posted to the receive queue.  Providing this list closes a potential\r
+               race condition between sending a CM REP message and posting receives.\r
+               Use of this field is optional.\r
+\r
+       pp_recv_failure\r
+               If the post receive operation failed, this references the work\r
+               request in the p_recv_wr list where the first failure occurred.\r
+               This field is required only if p_recv_wr is used.\r
+\r
+       status\r
+               sidr status value returned back to a previously received REQ.\r
+\r
+       class_info\r
+               The contents of this field are valid only if status is IB_SIDR_REDIRECT.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo93">ib_cm_rep</a>, <a href="./ib_types_h.html#robo45">ib_access_t</a>, <a href="#robo80">ib_cm_failover_t</a>, <a href="#robo241">ib_rep_pdata_t</a>\r
+       <a href="#robo175">ib_pfn_cm_rtu_cb_t</a>, <a href="#robo170">ib_pfn_cm_lap_cb_t</a>, <a href="#robo169">ib_pfn_cm_dreq_cb_t</a>,\r
+       <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo96">[Functions]<a name="Access20Layer2fib5fcm5freq">\r
+Access Layer/ib_cm_req</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_req</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Issues a connection request to a specified end-point.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_cm_req</strong>(\r
+        IN              const   <a href="#robo98">ib_cm_req_t</a>* const                      p_cm_req );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_cm_req\r
+               [in] Information describing the type of connection and the remote\r
+               endpoint for the connection.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The connection request was initiated.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the connect request information was not provided.\r
+\r
+       IB_INVALID_SETTING\r
+               The connect request information contains one or more of the following\r
+               errors:\r
+                 - The class version, queue pair type, or path is not supported by\r
+                       connection manager.\r
+                 - The private data length exceeds the value allowed by the specified\r
+                       connection class version.\r
+                 - The primary path is not on the same channel adapter as the queue\r
+                       pair.\r
+                 - The primary and alternate paths are on different channel adapters.\r
+                 - The primary and alternate paths specify different MTUs.\r
+                 - A primary or alternate path record packet lifetime is out of range.\r
+                 - A primary or alternate path record pkey is out of range.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle specified in the connect request was invalid.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_STATE\r
+               The queue pair or end-to-end context is already connected.\r
+\r
+       IB_INVALID_QP_STATE\r
+               The queue pair was in an invalid state to perform the operation.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to initiate the connect request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine issues a connection request through the communication\r
+       manager to a specified end-point.  The p_cm_req parameter contains\r
+       details needed to form the connection.  The connection request will\r
+       match with a remote <a href="#robo85">ib_cm_listen</a> or <strong>ib_cm_req</strong> connection request.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo98">ib_cm_req_t</a>, <a href="#robo85">ib_cm_listen</a>, <a href="#robo174">ib_pfn_cm_req_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo97">[Structures]<a name="Access20Layer2fib5fcm5freq5frec5ft">\r
+Access Layer/ib_cm_req_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_req_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Connection request information returned to the user through their\r
+       connection request callback.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#pragma warning(disable:4324)\r
+typedef struct _ib_cm_req_rec\r
+{\r
+        const void* __ptr64                     context;\r
+        ib_cm_handle_t                          h_cm_req;\r
+        ib_listen_handle_t                      h_cm_listen;\r
+\r
+        const uint8_t* __ptr64          p_req_pdata;\r
+\r
+        <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>                            qp_type;\r
+\r
+        /* valid for rc, uc &amp; rd qp_type only */\r
+        uint8_t                                         resp_res;\r
+        boolean_t                                       flow_ctrl;\r
+        uint8_t                                         rnr_retry_cnt;\r
+        <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>                           primary_path;\r
+        <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>                           alt_path;\r
+\r
+        /* valid for ud qp_type only */\r
+        <a href="./ib_types_h.html#robo893">ib_net16_t</a>                                      pkey;\r
+        const void* __ptr64                     sidr_context;\r
+\r
+}       <strong>ib_cm_req_rec_t</strong>;\r
+#pragma warning(default:4324)\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       context\r
+               For peer-to-peer connections, this is the queue pair context associated\r
+               with a connection request.  For listens, this is the listen context\r
+               specified through the <a href="#robo85">ib_cm_listen</a> routine.\r
+\r
+       h_cm_req\r
+               The handle to the communication manager request.  This handle is used\r
+               to reply to the or reject the connection.\r
+\r
+       h_cm_listen\r
+               For connection request callbacks initiated in response to an\r
+               <a href="#robo85">ib_cm_listen</a> call, this is a handle to the listen request.  This\r
+               handle is provided to the user to avoid a race condition between\r
+               the return of the <a href="#robo85">ib_cm_listen</a> routine and the notification of a\r
+               connection request.\r
+\r
+       p_req_pdata\r
+               A reference to user-defined private data sent as part of the connection\r
+               request.\r
+\r
+       qp_type\r
+               Indicates the CM service type.\r
+\r
+       resp_res\r
+               The maximum number of RDMA read/atomic operations from the recipient\r
+               that the requestor supports on the connection.  The init_depth\r
+               specified in the call to <a href="#robo93">ib_cm_rep</a> must be less than or equal to\r
+               this value.\r
+\r
+       flow_ctrl\r
+               Indicates if the remote CA implements hardware end-to-end flow control.\r
+\r
+       rnr_retry_cnt\r
+               Requested number of RNR NAK retries to perform before generating a\r
+               local error.\r
+\r
+       primary_path\r
+               The path record to use for the primary connection.\r
+\r
+       alt_path\r
+               The path record to use for the alternate connection.\r
+\r
+       pkey\r
+               The pkey used in the user's request.\r
+\r
+       sidr_context\r
+               The sidr_context used in <a href="#robo85">ib_cm_listen</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo96">ib_cm_req</a>, <a href="#robo85">ib_cm_listen</a>, <a href="#robo174">ib_pfn_cm_req_cb_t</a>,\r
+       <a href="./ib_types_h.html#robo45">ib_access_t</a>, <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>, <a href="#robo243">ib_req_pdata_t</a>, <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo98">[Structures]<a name="Access20Layer2fib5fcm5freq5ft">\r
+Access Layer/ib_cm_req_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_req_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Connection request information used to establish a new connection.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo96">ib_cm_req</a>\r
+{\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      svc_id;\r
+\r
+        <a href="#robo47">ib_al_flags_t</a>                           flags;\r
+        uint8_t                                         max_cm_retries;\r
+\r
+        <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>* __ptr64          p_primary_path;\r
+\r
+        <a href="#robo173">ib_pfn_cm_rep_cb_t</a>                      pfn_cm_rep_cb;\r
+\r
+        const uint8_t* __ptr64          p_req_pdata;\r
+        uint8_t                                         req_length;\r
+\r
+        <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>                            qp_type;\r
+\r
+        /* valid for rc, uc &amp; rd qp_type only */\r
+        ib_qp_handle_t                          h_qp;\r
+\r
+        uint8_t* __ptr64                        p_compare_buffer;\r
+        uint8_t                                         compare_offset;\r
+        uint8_t                                         compare_length;\r
+\r
+        uint8_t                                         resp_res;\r
+        uint8_t                                         init_depth;\r
+        uint8_t                                         remote_resp_timeout;\r
+        boolean_t                                       flow_ctrl;\r
+        uint8_t                                         local_resp_timeout;\r
+        uint8_t                                         rnr_nak_timeout;\r
+        uint8_t                                         rnr_retry_cnt;\r
+        uint8_t                                         retry_cnt;\r
+\r
+        <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>* __ptr64          p_alt_path OPTIONAL;\r
+\r
+        <a href="#robo174">ib_pfn_cm_req_cb_t</a>                      pfn_cm_req_cb;\r
+        <a href="#robo171">ib_pfn_cm_mra_cb_t</a>                      pfn_cm_mra_cb;\r
+        <a href="#robo172">ib_pfn_cm_rej_cb_t</a>                      pfn_cm_rej_cb;\r
+\r
+        /* valid for ud qp_type only */\r
+        ib_al_handle_t                          h_al;\r
+        const void* __ptr64                     sidr_context;\r
+        uint32_t                                        timeout_ms;\r
+        <a href="./ib_types_h.html#robo893">ib_net16_t</a>                                      pkey;\r
+\r
+}       <strong>ib_cm_req_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       svc_id\r
+               The ID of the remote service to which the connection request is\r
+               being made.\r
+\r
+       flags\r
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to\r
+               process the called routine synchronously.\r
+\r
+       max_cm_retries\r
+               The maximum number of times that either CM should resend a connection\r
+               establishment message.\r
+\r
+       p_primary_path\r
+               Path information over which to establish the primary connection.\r
+\r
+       pfn_cm_rep_cb\r
+               References a user-provided callback that will be invoked when\r
+               a reply to the connection request is received.\r
+\r
+       p_req_pdata\r
+               Optional user-defined private data sent as part of the connection\r
+               request.\r
+\r
+       req_length\r
+               Defines the size of the user-defined private data.\r
+\r
+       qp_type\r
+               Indicates the CM service type.\r
+\r
+       h_qp\r
+               A handle to the queue pair to use in the connection.\r
+\r
+       p_compare_buffer\r
+               An optionally provided buffer that will be used to match incoming\r
+               connection requests with a registered service.  Use of this buffer\r
+               permits multiple services to connect using the same service ID as\r
+               long as they provide different compare buffers.  Incoming requests\r
+               will be matched against the compare buffer.  Valid for peer-to-peer\r
+               connection requests only.\r
+\r
+       compare_offset\r
+               An offset into the user-defined data area of a connection request\r
+               which contains the start of the data that will be compared against.\r
+               The offset must be the same for all requests using the same service ID.\r
+               Valid for peer-to-peer connection requests only.\r
+\r
+       compare_length\r
+               Specifies the size of the compare buffer in bytes.  The length must\r
+               be the same for all requests using the same service ID.  Valid for\r
+               peer-to-peer connection requests only.\r
+\r
+       resp_res\r
+               The maximum number of outstanding RDMA read/atomic operations the\r
+               requestor supports from the remote QP.\r
+\r
+       init_depth\r
+               The maximum number of outstanding RDMA read/atomic operations the\r
+               requestor will have outstanding to the remote QP.\r
+\r
+       remote_resp_timeout\r
+               The time within which the remote CM should transmit a response to\r
+               the sender.  This value is expressed as\r
+               4.096 * (2 ^ local_resp_timeout) microseconds.\r
+\r
+       flow_ctrl\r
+               Indicates whether the local CA supports end-to-end flow control.\r
+\r
+       local_resp_timeout\r
+               The time that the remote CM should wait to receive a response from\r
+               the local CM.  This value is expressed as\r
+               4.096 * (2 ^ local_resp_timeout) microseconds.\r
+\r
+       rnr_nak_timeout\r
+               The time to wait before retrying a packet after receiving a RNR NAK.\r
+               This value is defined in section 9.7.5.2.8 of the IB Spec, table 45.\r
+\r
+       rnr_retry_cnt\r
+               The number of times that the local QP should retry a send operation\r
+               after receiving an RNR NACK before reporting an error.\r
+\r
+       retry_cnt\r
+               The number of times that a QP should retry a send operation before\r
+               reporting an error.\r
+\r
+       p_alt_path\r
+               Optional path information that will be used as the alternate\r
+               connection path in the case of failure.\r
+\r
+       pfn_cm_req_cb\r
+               References a user-provided callback that will be invoked when\r
+               a request for a connection is received.  This is required for peer-to\r
+               peer connection requests, and must be NULL for client/server\r
+               connection requests.\r
+\r
+       pfn_cm_mra_cb\r
+               References a user-provided callback that will be invoked when\r
+               a message received acknowledgement is received.\r
+\r
+       pfn_cm_rej_cb\r
+               References a user-provided callback that will be invoked if the\r
+               connection is rejected by the remote end-point.\r
+\r
+       sidr_context\r
+               The user-defined sidr context information that will be passed back in a\r
+               <a href="#robo96">ib_cm_req</a> callback.\r
+\r
+       timeout_ms\r
+               Timeout value in milli-seconds for the REQ to expire.  The CM will add\r
+               twice packet lifetime to this value to determine the actual timeout\r
+               value used.\r
+\r
+       pkey\r
+               pkey to be used as part of the request. This field is only valid for\r
+               IB_MCLASS_CM_VER_2 clients.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo96">ib_cm_req</a>, <a href="#robo174">ib_pfn_cm_req_cb_t</a>, <a href="#robo173">ib_pfn_cm_rep_cb_t</a>, <a href="#robo171">ib_pfn_cm_mra_cb_t</a>,\r
+       <a href="#robo172">ib_pfn_cm_rej_cb_t</a>, <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>, <a href="#robo243">ib_req_pdata_t</a>, <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo99">[Functions]<a name="Access20Layer2fib5fcm5frtu">\r
+Access Layer/ib_cm_rtu</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_rtu</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sends a ready to use message for a connection request, indicating that\r
+       the connection has been accepted and is ready for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_cm_rtu</strong>(\r
+        IN              const   ib_cm_handle_t                          h_cm_rep,\r
+        IN              const   <a href="#robo101">ib_cm_rtu_t</a>* const                      p_cm_rtu );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cm_rep\r
+               [in] A handle to the connection reply being responded to.  This handle\r
+               is provided by the access layer through the <a href="#robo173">ib_pfn_cm_rep_cb_t</a>\r
+               callback.\r
+\r
+       p_cm_rtu\r
+               [in] Contains ready to use information to return to the sender of the\r
+               connection reply.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The connection ready to use was initiated.\r
+\r
+       IB_INVALID_HANDLE\r
+               The connection manager reply handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the ready to use information was not provided.\r
+\r
+       IB_INVALID_STATE\r
+               The current connection state does not allow sending this message.\r
+\r
+       IB_INVALID_SETTING\r
+               The specified queue pair attributes were invalid or the private data\r
+               length exceeds the value allowed by the specified connection class\r
+               version.\r
+\r
+       IB_UNSUPPORTED\r
+               The specified queue pair access control was not supported.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to send the ready to use response.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine results in the access layer marking a connection as ready\r
+       to use and notifying the remote end-point.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo95">ib_cm_rep_t</a>, <a href="#robo173">ib_pfn_cm_rep_cb_t</a>, <a href="#robo101">ib_cm_rtu_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo100">[Structures]<a name="Access20Layer2fib5fcm5frtu5frec5ft">\r
+Access Layer/ib_cm_rtu_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_rtu_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Connection ready to use message information returned to the user through\r
+       their ready to use callback.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_cm_rtu_rec\r
+{\r
+        const uint8_t* __ptr64          p_rtu_pdata;\r
+\r
+        ib_qp_handle_t                          h_qp;\r
+        const void* __ptr64                     qp_context;\r
+\r
+}       <strong>ib_cm_rtu_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       p_rtu_pdata\r
+               A reference to user-defined private data sent as part of the ready\r
+               to use message.\r
+\r
+       h_qp\r
+               The queue pair handle associated with the connection request.\r
+\r
+       qp_context\r
+               The queue pair context associated with the connection request.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo99">ib_cm_rtu</a>, <a href="#robo175">ib_pfn_cm_rtu_cb_t</a>, ib_cm_status_t, <a href="#robo246">ib_rtu_pdata_t</a>,\r
+       <a href="./ib_types_h.html#robo210">ib_qp_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo101">[Structures]<a name="Access20Layer2fib5fcm5frtu5ft">\r
+Access Layer/ib_cm_rtu_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_rtu_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Connection ready to use information used when establishing a connection.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo99">ib_cm_rtu</a>\r
+{\r
+        <a href="./ib_types_h.html#robo45">ib_access_t</a>                                     access_ctrl;\r
+        uint32_t                                        sq_depth;\r
+        uint32_t                                        rq_depth;\r
+\r
+        const uint8_t* __ptr64          p_rtu_pdata;\r
+        uint8_t                                         rtu_length;\r
+\r
+        <a href="#robo167">ib_pfn_cm_apr_cb_t</a>                      pfn_cm_apr_cb;\r
+        <a href="#robo169">ib_pfn_cm_dreq_cb_t</a>                     pfn_cm_dreq_cb;\r
+\r
+}       <strong>ib_cm_rtu_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       access_ctrl\r
+               Indicates the type of access permitted on the local QP.\r
+\r
+       sq_depth\r
+               The maximum number of outstanding send operations that the local\r
+               QP needs to support.  This field should be set to zero if the CA\r
+               does not support changing the work request depth after the QP is\r
+               created.\r
+\r
+       rq_depth\r
+               The maximum number of outstanding receive operations that the local\r
+               QP needs to support.  This field should be set to zero if the CA\r
+               does not support changing the work request depth after the QP is\r
+               created.\r
+\r
+       p_rtu_pdata\r
+               Optional user-defined private data sent as part of the connection\r
+               ready to use message.\r
+\r
+       rtu_length\r
+               Defines the size of the user-defined private data.\r
+\r
+       pfn_cm_apr_cb\r
+               References a user-defined callback that will be invoked when an\r
+               alternate path response is received for the connecting queue pair\r
+               or end-to-end context.\r
+\r
+       pfn_cm_dreq_cb\r
+               References a user-defined callback that will be invoked when a\r
+               disconnect request is received is for the connecting queue pair\r
+               or end-to-end context.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo99">ib_cm_rtu</a>, <a href="./ib_types_h.html#robo45">ib_access_t</a>, <a href="#robo246">ib_rtu_pdata_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo103">[Structures]<a name="Access20Layer2fib5fcq5fcreate5ft">\r
+Access Layer/ib_cq_create_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cq_create_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Attributes used to initialize a completion queue at creation time.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_cq_create\r
+{\r
+        uint32_t                                                                size;\r
+        <a href="#robo176">ib_pfn_comp_cb_t</a>                                                pfn_comp_cb;\r
+        <a href="../complib/cl_waitobj_h.html#robo704">cl_waitobj_handle_t</a>                                             h_wait_obj;\r
+\r
+}       <strong>ib_cq_create_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       size\r
+               Specifies the maximum number of work completions that may be on the\r
+               completion queue.  If the creation call is successful, the actual\r
+               size of the completion queue will be returned.  The actual size of\r
+               the CQ will be greater than or equal to the requested size.\r
+\r
+       pfn_comp_cb\r
+               A callback that is invoked whenever a signaled completion occurs on\r
+               the completion queue.  This field is mutually exclusive with the\r
+               p_event field.\r
+\r
+       h_wait_obj\r
+               A wait object that is triggered whenever a signaled completion occurs\r
+               on the completion queue.  This field is mutually exclusive with the\r
+               pfn_comp_cb field and is only valid for user-mode clients.  The wait\r
+               object must be ready for use when the call to <a href="#robo105">ib_create_cq</a> is invoked.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Clients must specify either an event or a callback when creating a\r
+       completion queue.  When a signaled completion occurs on the completion\r
+       queue, the client will be notified through the callback or by\r
+       signaling the specified event.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo105">ib_create_cq</a>, <a href="#robo176">ib_pfn_comp_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo104">[Functions]<a name="Access20Layer2fib5fcreate5fav">\r
+Access Layer/ib_create_av</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_create_av</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Creates an address vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_create_av</strong>(\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+        IN              const   <a href="./ib_types_h.html#robo57">ib_av_attr_t</a>* const                     p_av_attr,\r
+                OUT                     ib_av_handle_t* const           ph_av );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] A handle to an allocated protection domain that the address\r
+               vector will be associated with.\r
+\r
+       p_av_attr\r
+               [in] Attributes for the newly created address vector.\r
+\r
+       ph_av\r
+               [out] Upon successful completion of this call, this references a\r
+               handle to the newly created address vector.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The operation was successful.\r
+\r
+       IB_INVALID_PD_HANDLE\r
+               The protection domain handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the address vector attributes or handle was not\r
+               provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to create the address vector.\r
+\r
+       IB_INVALID_PORT\r
+               The port number supplied, through the address vector attributes,\r
+               was invalid for the given channel adapter.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to create the address vector.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine creates an address vector.  Clients specify the attributes\r
+       of the address vector through the p_av_attr parameter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo212">ib_query_av</a>, <a href="#robo155">ib_modify_av</a>, <a href="#robo115">ib_destroy_av</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo105">[Functions]<a name="Access20Layer2fib5fcreate5fcq">\r
+Access Layer/ib_create_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_create_cq</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Creates a completion queue and returns its handle to the user.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_create_cq</strong>(\r
+        IN              const   ib_ca_handle_t                          h_ca,\r
+        IN      OUT                     <a href="#robo103">ib_cq_create_t</a>* const           p_cq_create,\r
+        IN              const   void* const                                     cq_context,\r
+        IN              const   <a href="#robo178">ib_pfn_event_cb_t</a>                       pfn_cq_event_cb OPTIONAL,\r
+                OUT                     ib_cq_handle_t* const           ph_cq );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] A handle to an open channel adapter.\r
+\r
+       p_cq_create\r
+               [in] Attributes necessary to allocate and initialize the\r
+               completion queue.\r
+\r
+       cq_context\r
+               [in] A user-specified context associated with the completion queue.\r
+\r
+       pfn_cq_event_cb\r
+               [in] User-specified error callback routine invoked after an\r
+               asynchronous event has occurred on the completion queue.\r
+\r
+       ph_cq\r
+               [out] Upon successful completion of this call, this references a\r
+               handle to the newly created completion queue.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The completion queue was successfully created.\r
+\r
+       IB_INVALID_CA_HANDLE\r
+               The channel adapter handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the completion queue attributes or handle was not\r
+               provided.\r
+\r
+       IB_INVALID_SETTING\r
+               The specified attributes that should be used to create the completion\r
+               queue are invalid.  Both completion callback and wait object\r
+               information were supplied or are missing.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to create the completion queue.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to create the completion queue.\r
+\r
+       IB_INVALID_CQ_SIZE\r
+               The requested size of the completion queue was larger than the\r
+               maximum supported by the associated channel adapter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine allocates a completion queue on the specified channel\r
+       adapter.  If the completion queue cannot be allocated, an error is\r
+       returned.  When creating the completion queue, users associate a context\r
+       with the completion queue.  This context is returned to the user through\r
+       the completion and asynchronous event callbacks.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo215">ib_query_cq</a>, <a href="#robo157">ib_modify_cq</a>, <a href="#robo116">ib_destroy_cq</a>, <a href="#robo103">ib_cq_create_t</a>, <a href="#robo178">ib_pfn_event_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo106">[Functions]<a name="Access20Layer2fib5fcreate5fioc">\r
+Access Layer/ib_create_ioc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_create_ioc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Creates an instance of an I/O controller.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_create_ioc</strong>(\r
+        IN              const   ib_ca_handle_t                          h_ca,\r
+        IN              const   <a href="./ib_types_h.html#robo874">ib_ioc_profile_t</a>* const         p_ioc_profile,\r
+                OUT                     ib_ioc_handle_t* const          ph_ioc );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] A handle to an opened channel adapter.  The controller will be\r
+               created to be exposed through the given adapter.\r
+\r
+       p_ioc_profile\r
+               [in] I/O controller profile information.\r
+\r
+       ph_ioc\r
+               [out] Upon successful completion of this call, this references a\r
+               handle to the created I/O controller.  This handle may be used to\r
+               add service entries to the controller and register it.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The I/O controller was successfully created.\r
+\r
+       IB_INVALID_CA_HANDLE\r
+               The channel adapter handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the I/O controller profile information or handle\r
+               was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to create the I/O controller.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine creates an I/O controller.  Once created, services may be\r
+       added to the controller before being registered with the local device\r
+       manager.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo117">ib_destroy_ioc</a>, <a href="#robo46">ib_add_svc_entry</a>, <a href="#robo226">ib_reg_ioc</a>, <a href="./ib_types_h.html#robo874">ib_ioc_profile_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo107">[Functions]<a name="Access20Layer2fib5fcreate5fmad5fpool">\r
+Access Layer/ib_create_mad_pool</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_create_mad_pool</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Creates a pool of MAD elements for use sending and receive management\r
+       datagrams.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_create_mad_pool</strong>(\r
+        IN              const   ib_al_handle_t                          h_al,\r
+        IN              const   size_t                                          min,\r
+        IN              const   size_t                                          max,\r
+        IN              const   size_t                                          grow_size,\r
+                OUT                     ib_pool_handle_t* const         ph_pool );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an open instance of the access layer.\r
+\r
+       min\r
+               [in] The minimum number of MAD elements to create in the pool.\r
+\r
+       max\r
+               [in] The maximum number of MAD elements that will be created by the\r
+               pool.  If max is set to 0, the pool will continue to grow as long\r
+               as system resources are available.\r
+\r
+       grow_size\r
+               [in] The number of MAD elements to add to the pool when growing it.\r
+               If set to 0, the pool will not grow beyond the number specified\r
+               at creation.  This value must be greater than 0, if min is set to 0.\r
+\r
+       ph_pool\r
+               [out] On successful completion of this call, this returns a handle to\r
+               the newly created pool.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The MAD pool was created successfully.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the pool handle was not provided.\r
+\r
+       IB_INVALID_SETTING\r
+               The maximum number of MAD elements was non-zero and less than the\r
+               minimum number of MAD elements.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to create the MAD pool.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine creates a pool of MAD elements.  The elements may be used\r
+       to send and receive MADs on alias and MAD type QPs.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo118">ib_destroy_mad_pool</a>, <a href="#robo129">ib_get_mad</a>, <a href="#robo204">ib_put_mad</a>, <a href="#robo227">ib_reg_mad_pool</a>,\r
+       <a href="#robo111">ib_dereg_mad_pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo108">[Functions]<a name="Access20Layer2fib5fcreate5fmw">\r
+Access Layer/ib_create_mw</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_create_mw</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Creates a memory window associated with the specified protection domain.\r
+       Newly created windows are not bound to any specific memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_create_mw</strong>(\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+                OUT                     net32_t* const                          p_rkey,\r
+                OUT                     ib_mw_handle_t* const           ph_mw );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] A handle to an existing protection domain that the memory window\r
+               should be created within.\r
+\r
+       p_rkey\r
+               [out] The current rkey associated with the memory window.  This key is\r
+               used to bind the window to a registered memory region.\r
+\r
+       ph_mw\r
+               [out] Upon successful completion of this call, this references a handle\r
+               to the memory window.  This handle is used to bind and destroy\r
+               the window.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The memory window was successfully created.\r
+\r
+       IB_INVALID_PD_HANDLE\r
+               The protection domain handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the memory window rkey or handle was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to create the memory window.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to create the memory window.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine creates an unbound memory window associated with a specified\r
+       protection domain.  The memory window cannot be used for data transfer\r
+       operations until being bound to a registered memory region.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo119">ib_destroy_mw</a>, <a href="#robo217">ib_query_mw</a>, <a href="#robo58">ib_bind_mw</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo109">[Functions]<a name="Access20Layer2fib5fcreate5fqp">\r
+Access Layer/ib_create_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_create_qp</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Creates a queue pair and returns its handle to the user.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_create_qp</strong>(\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+        IN              const   <a href="./ib_types_h.html#robo206">ib_qp_create_t</a>* const           p_qp_create,\r
+        IN              const   void* const                                     qp_context,\r
+        IN              const   <a href="#robo178">ib_pfn_event_cb_t</a>                       pfn_qp_event_cb OPTIONAL,\r
+                OUT                     ib_qp_handle_t* const           ph_qp );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] This is a handle to a protection domain associated with the queue\r
+               pair.\r
+\r
+       p_qp_create\r
+               [in] Attributes necessary to allocate and initialize the queue pair.\r
+\r
+       qp_context\r
+               [in] A user-specified context information associated with the\r
+               queue pair.\r
+\r
+       pfn_qp_event_cb\r
+               [in] User-specified error callback routine invoked after an\r
+               asynchronous event has occurred on the queue pair.\r
+\r
+       ph_qp\r
+               [out] Upon successful completion of this call, this references a\r
+               handle to the newly created queue pair.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The queue pair was successfully created.\r
+\r
+       IB_INVALID_PD_HANDLE\r
+               The protection domain to associate with the queue pair was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the queue pair attributes or handle was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to create the queue pair.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to create the queue pair.\r
+\r
+       IB_INVALID_CQ_HANDLE\r
+               The send or receive completion queue to associate with the queue pair\r
+               was invalid.\r
+\r
+       IB_INVALID_SETTING\r
+               The specified queue pair creation attributes are invalid.\r
+\r
+       IB_UNSUPPORTED\r
+               The specified queue pair type was not supported by the channel adapter.\r
+\r
+       IB_INVALID_MAX_WRS\r
+               The requested maximum send or receive work request depth could not be\r
+               supported.\r
+\r
+       IB_INVALID_MAX_SGE\r
+               The requested maximum number of scatter-gather entries for the send or\r
+               receive queue could not be supported.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine allocates a queue pair with the specified attributes.  If\r
+       the queue pair cannot be allocated, an error is returned.  When creating\r
+       the queue pair, users associate a context with the queue pair.  This\r
+       context is returned to the user through the asynchronous event callback\r
+       if an event occurs.\r
+\r
+       This routine is used to create queue pairs of type:\r
+\r
+       IB_QPT_RELIABLE_CONN\r
+       IB_QPT_UNRELIABLE_CONN\r
+       IB_QPT_UNRELIABLE_DGRM\r
+       IB_QPT_MAD\r
+\r
+       Callers of <strong>ib_create_qp</strong> should call <a href="#robo140">ib_init_dgrm_svc</a> if the queue pair\r
+       is of type IB_QPT_UNRELIABLE_DGRM or IB_QPT_MAD before sending or\r
+       receiving data.  IB_QPT_RELIABLE_CONN, IB_QPT_UNRELIABLE_CONN type\r
+       queue pairs should be used by the connection establishment process\r
+       before data may be sent or received on the QP.\r
+\r
+       This call does not return the QP attributes as MAD QPs do not support\r
+       such an operation.  This is a minor specification deviation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo218">ib_query_qp</a>, <a href="#robo158">ib_modify_qp</a>, <a href="#robo120">ib_destroy_qp</a>, <a href="#robo96">ib_cm_req</a>, <a href="#robo93">ib_cm_rep</a>, <a href="#robo99">ib_cm_rtu</a>\r
+       <a href="#robo140">ib_init_dgrm_svc</a>, <a href="./ib_types_h.html#robo206">ib_qp_create_t</a>, <a href="#robo178">ib_pfn_event_cb_t</a>, <a href="./ib_types_h.html#robo205">ib_qp_attr_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo110">[Functions]<a name="Access20Layer2fib5fdealloc5fpd">\r
+Access Layer/ib_dealloc_pd</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_dealloc_pd</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Deallocates a protection domain.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_dealloc_pd</strong>(\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+        IN              const   <a href="#robo177">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] A handle to an allocated protection domain.\r
+\r
+       pfn_destroy_cb\r
+               [in] A user-specified callback that is invoked after the protection\r
+               domain has been successfully destroyed.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The operation was successful.\r
+\r
+       IB_INVALID_PD_HANDLE\r
+               The protection domain handle was invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call deallocates a protection domain and releases all associated\r
+       resources, including queue pairs and registered memory regions.  Since\r
+       callbacks may be outstanding against one of protection domain's related\r
+       resources at the time the deallocation call is invoked, this call operates\r
+       asynchronously.  The user will be notified through a callback once the\r
+       deallocation call completes, indicating that no additional callbacks\r
+       will be invoked for a related resource.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo48">ib_alloc_pd</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo111">[Functions]<a name="Access20Layer2fib5fdereg5fmad5fpool">\r
+Access Layer/ib_dereg_mad_pool</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_dereg_mad_pool</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Deregisters a MAD pool from a protection domain.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_dereg_mad_pool</strong>(\r
+        IN              const   ib_pool_key_t                           pool_key );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       pool_key\r
+               [in] Key to the MAD pool to deregister.  The specified pool must\r
+               have been registered with a protection domain through a call to\r
+               <a href="#robo227">ib_reg_mad_pool</a>.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The MAD pool was successfully deregistered from the protection domain.\r
+\r
+       IB_INVALID_PARAMETER\r
+               The MAD pool key was invalid.\r
+\r
+       IB_RESOURCE_BUSY\r
+               One or more MAD elements were removed from the MAD pool using the\r
+               specified pool key, and were not returned.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function deregisters a MAD pool with a protection domain.  After\r
+       successful completion of this call, the MAD elements of the associated\r
+       pool are no longer usable on the protection domain.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo107">ib_create_mad_pool</a>, <a href="#robo118">ib_destroy_mad_pool</a>, <a href="#robo227">ib_reg_mad_pool</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo112">[Functions]<a name="Access20Layer2fib5fdereg5fmr">\r
+Access Layer/ib_dereg_mr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_dereg_mr</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Deregisters a registered memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_dereg_mr</strong>(\r
+        IN              const   ib_mr_handle_t                          h_mr );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mr\r
+               [in] A handle to a registered memory region that will be unregistered.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The memory region was successfully deregistered.\r
+\r
+       IB_INVALID_MR_HANDLE\r
+               The memory region handle was invalid.\r
+\r
+       IB_RESOURCE_BUSY\r
+               The memory region has memory windows bound to it.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine deregisters a memory region with a channel adapter.  The\r
+       region may be deregistered only if there are no memory  windows or\r
+       existing shared memory regions currently bound to the region.  Work\r
+       requests referencing this region when it is deregistered will fail\r
+       with a WRS_LOCAL_PROTECTION_ERR error.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo229">ib_reg_mem</a>, <a href="#robo230">ib_reg_phys</a>, <a href="#robo232">ib_reg_shared</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo113">[Functions]<a name="Access20Layer2fib5fdereg5fpnp">\r
+Access Layer/ib_dereg_pnp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_dereg_pnp</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Routine used to cancel notification of local events or I/O controller\r
+       assignments.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_dereg_pnp</strong>(\r
+        IN              const   ib_pnp_handle_t                         h_pnp,\r
+        IN              const   <a href="#robo177">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pnp\r
+               [in] A handle returned as a result of an <a href="#robo231">ib_reg_pnp</a> operation.\r
+\r
+       pfn_destroy_cb\r
+               [in] A user-specified callback that is invoked after the PnP\r
+               registration has been successfully deregistered.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine cancels a pending PnP operation.  To avoid a race condition\r
+       canceling a request at the same time a notification callback is in\r
+       progress, the cancel operation operates asynchronously.  For additional\r
+       details see <a href="#robo177">ib_pfn_destroy_cb_t</a>.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The PnP deregistration was initiated.\r
+\r
+       IB_INVALID_HANDLE\r
+               The PnP handle was invalid.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo231">ib_reg_pnp</a>, <a href="#robo177">ib_pfn_destroy_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo114">[Functions]<a name="Access20Layer2fib5fdereg5fsvc">\r
+Access Layer/ib_dereg_svc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_dereg_svc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Remove a service as being registered with the subnet administrator.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_dereg_svc</strong>(\r
+        IN              const   ib_reg_svc_handle_t                     h_reg_svc,\r
+        IN              const   <a href="#robo177">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_reg_svc\r
+               [in] A handle to a registered service.\r
+\r
+       pfn_destroy_cb\r
+               [in] A user-specified callback that is invoked after the service\r
+               has been deregistered.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The service deregistration was initiated.\r
+\r
+       IB_INVALID_HANDLE\r
+               The registered service handle was invalid.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to perform the operation.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to perform the operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine deregisters a service with the subnet administrator.\r
+       To avoid a race condition deregistering a service at the same time\r
+       the registration completion callback is in progress, the deregister\r
+       operation operates asynchronously.  For additional details see\r
+       <a href="#robo177">ib_pfn_destroy_cb_t</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo234">ib_reg_svc</a>, <a href="#robo177">ib_pfn_destroy_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo115">[Functions]<a name="Access20Layer2fib5fdestroy5fav">\r
+Access Layer/ib_destroy_av</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_destroy_av</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Destroys an existing address vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_destroy_av</strong>(\r
+        IN              const   ib_av_handle_t                          h_av );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_av\r
+               [in] A handle to an existing address vector.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The address vector was successfully destroyed.\r
+\r
+       IB_INVALID_AV_HANDLE\r
+               The address vector handle was invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine destroys an existing address vector.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo104">ib_create_av</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo116">[Functions]<a name="Access20Layer2fib5fdestroy5fcq">\r
+Access Layer/ib_destroy_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_destroy_cq</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Destroys a completion queue.  Once destroyed, no further access to the\r
+       completion queue is possible.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_destroy_cq</strong>(\r
+        IN              const   ib_cq_handle_t                          h_cq,\r
+        IN              const   <a href="#robo177">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] A handle to an existing completion queue.\r
+\r
+       pfn_destroy_cb\r
+               [in] A user-provided callback that is invoked after the\r
+               completion queue has been successfully destroyed.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The destroy request was registered.\r
+\r
+       IB_INVALID_CQ_HANDLE\r
+               The completion queue handle was invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call destroys an existing completion queue.  Since callbacks may be\r
+       outstanding against the completion queue at the time the destroy operation\r
+       is invoked, the this call operates asynchronously.  The user will be\r
+       notified through a callback once the destroy operation completes,\r
+       indicating that no additional callbacks will be invoked for the specified\r
+       completion queue.\r
+\r
+       If there are still queue pairs associated with the completion queue when\r
+       this function is invoked, the destroy operation will fail with status\r
+       IB_RESOURCE_BUSY.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo105">ib_create_cq</a>, <a href="#robo177">ib_pfn_destroy_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo117">[Functions]<a name="Access20Layer2fib5fdestroy5fioc">\r
+Access Layer/ib_destroy_ioc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_destroy_ioc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Destroys an instance of an I/O controller.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_destroy_ioc</strong>(\r
+        IN              const   ib_ioc_handle_t                         h_ioc );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ioc\r
+               [in] A handle to an existing I/O controller.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The I/O controller was successfully destroyed.\r
+\r
+       IB_INVALID_HANDLE\r
+               The I/O controller handle was invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Once an I/O controller is destroyed, it is no longer reported by the\r
+       local device manager as an exported device.  This routine automatically\r
+       removes all services associated with the controller.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo106">ib_create_ioc</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo118">[Functions]<a name="Access20Layer2fib5fdestroy5fmad5fpool">\r
+Access Layer/ib_destroy_mad_pool</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_destroy_mad_pool</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Destroys a MAD pool and all associated resources.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_destroy_mad_pool</strong>(\r
+        IN              const   ib_pool_handle_t                        h_pool );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pool\r
+               [in] A handle to a MAD pool allocated through the <a href="#robo107">ib_create_mad_pool</a>\r
+               routine.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The MAD pool was successfully destroyed.\r
+\r
+       IB_INVALID_HANDLE\r
+               The MAD pool handle was invalid.\r
+\r
+       IB_RESOURCE_BUSY\r
+               One or more MAD elements have not been returned to the MAD pool.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call destroys a MAD pool and all resources allocated by the pool.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo107">ib_create_mad_pool</a>, <a href="#robo129">ib_get_mad</a>, <a href="#robo204">ib_put_mad</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo119">[Functions]<a name="Access20Layer2fib5fdestroy5fmw">\r
+Access Layer/ib_destroy_mw</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_destroy_mw</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Destroys a memory window.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_destroy_mw</strong>(\r
+        IN              const   ib_mw_handle_t                          h_mw );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mw\r
+               [in] A handle to an existing memory window.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The memory window was successfully destroyed.\r
+\r
+       IB_INVALID_MW_HANDLE\r
+               The memory window handle was invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine deallocates a window entry created via a <a href="#robo108">ib_create_mw</a>.\r
+       Once this operation is complete, future accesses to the window will fail.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo108">ib_create_mw</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo120">[Functions]<a name="Access20Layer2fib5fdestroy5fqp">\r
+Access Layer/ib_destroy_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_destroy_qp</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Release a queue pair.  Once destroyed, no further access to this\r
+       queue pair is possible.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_destroy_qp</strong>(\r
+        IN              const   ib_qp_handle_t                          h_qp,\r
+        IN              const   <a href="#robo177">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] A handle to an existing queue pair.\r
+\r
+       pfn_destroy_cb\r
+               [in] A user-specified callback that is invoked after the queue pair\r
+               has been successfully destroyed.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The destroy request was registered.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle was invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call destroys an existing queue pair.  Since callbacks may be\r
+       outstanding against the queue pair at the time the destroy operation is\r
+       invoked, the this call operates asynchronously.  The user will be notified\r
+       through a callback once the destroy operation completes, indicating that\r
+       no additional callbacks will be invoked for the specified queue pair.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo109">ib_create_qp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo121">[Definitions]<a name="Access20Layer2fib5fdevice5fattr5fmask5ft">\r
+Access Layer/ib_device_attr_mask_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_device_attr_mask_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Used to specify desired attributes of a device or port.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#define         IB_DEV_PORT_ACTIVE              0x1\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IB_DEV_PORT_ACTIVE\r
+               Specifies that a port state should be active.  Applies only to port\r
+               GUIDs.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo128">ib_get_guid</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo122">[Structures]<a name="Access20Layer2fib5fdgrm5finfo5ft">\r
+Access Layer/ib_dgrm_info_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_dgrm_info_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information specified when initializing a datagram queue pair before its\r
+       first use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_dgrm_info\r
+{\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      port_guid;\r
+        uint32_t                                        qkey;\r
+        uint16_t                                        pkey_index;\r
+\r
+}       <strong>ib_dgrm_info_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       port_guid\r
+               Specifies the port that the datagram service will use.  This field\r
+               applies only to IB_QPT_UNRELIABLE_DGRM and IB_QPT_MAD QP types.\r
+\r
+       qkey\r
+               Specifies the qkey that the queue pair will use.  Incoming messages\r
+               must have a matching qkey for the message to be accepted by the\r
+               receiving QP.\r
+\r
+       pkey_index\r
+               Specifies the pkey associated with this queue pair.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo140">ib_init_dgrm_svc</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo123">[Structures]<a name="Access20Layer2fib5fdrep5fpdata5ft">\r
+Access Layer/ib_drep_pdata_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_drep_pdata_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User data sent as part of a reply to a disconnection request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ib_drep_pdata\r
+{\r
+        uint8_t                                         data[IB_DREP_PDATA_SIZE];\r
+\r
+}       <strong>ib_drep_pdata_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo124">[Structures]<a name="Access20Layer2fib5fdreq5fpdata5ft">\r
+Access Layer/ib_dreq_pdata_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_dreq_pdata_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User data sent as part of a disconnection request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ib_dreq_pdata\r
+{\r
+        uint8_t                                         data[IB_DREQ_PDATA_SIZE];\r
+\r
+}       <strong>ib_dreq_pdata_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo125">[Functions]<a name="Access20Layer2fib5fforce5fapm">\r
+Access Layer/ib_force_apm</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_force_apm</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine indicates that a queue pair should immediately migrate to its\r
+       alternate path.  All future data transfers will occur over the new path.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_force_apm</strong>(\r
+        IN              const   ib_qp_handle_t                          h_qp );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] A handle to the queue pair to migrate.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The queue pair or end-to-end context was successfully modified.\r
+\r
+       IB_INVALID_PARAMETER\r
+               Neither or both of the queue pair or the end-to-end context handles\r
+               were valid.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle was invalid.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to register the modify the queue pair or end-to-end context.\r
+\r
+       IB_UNSUPPORTED\r
+               The requested modification was not supported.\r
+\r
+       IB_INVALID_QP_STATE\r
+               The queue pair was in an invalid state for the requested operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       For this routine to operate correctly, the specified queue pair must have\r
+       an existing alternate path loaded.  If an alternate path is not loaded, or\r
+       has not yet been armed, this call will fail.\r
+\r
+       Use of this call results in additional data transfers that occur on the\r
+       given queue pair using the alternate path.  Once this call completes, a\r
+       new alternate path may be loaded using the <a href="#robo82">ib_cm_lap</a> call.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo82">ib_cm_lap</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo126">[Functions]<a name="Access20Layer2fib5fget5fca5fby5fgid">\r
+Access Layer/ib_get_ca_by_gid</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_ca_by_gid</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the GUID of a channel adapter contain the given port GID.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_get_ca_by_gid</strong>(\r
+        IN                              ib_al_handle_t                          h_al,\r
+        IN              const   <a href="./ib_types_h.html#robo856">ib_gid_t</a>* const                         p_gid,\r
+                OUT                     <a href="./ib_types_h.html#robo895">ib_net64_t</a>* const                       p_ca_guid );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an opened instance of the access layer.\r
+\r
+       p_gid\r
+               [in] A port GID.\r
+\r
+       p_ca_guid\r
+               [out] A GUID to the CA that contains the port matching the user-\r
+               specified GID.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The operation was successful.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the port GID or CA GUID was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to perform the operation.\r
+\r
+       IB_NOT_FOUND\r
+               No channel adapters in the system contain the specifed port GID.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine returns a CA GUID that contains the user-specified port GID.\r
+       If no channel adapters in the system contain the port GID, the call will\r
+       return IB_NOT_FOUND.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo163">ib_open_al</a>, <a href="#robo164">ib_open_ca</a>, <a href="#robo127">ib_get_ca_guids</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo127">[Functions]<a name="Access20Layer2fib5fget5fca5fguids">\r
+Access Layer/ib_get_ca_guids</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_ca_guids</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a list of GUIDS for all channel adapter currently available in\r
+       the system.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_get_ca_guids</strong>(\r
+        IN                              ib_al_handle_t                          h_al,\r
+                OUT                     <a href="./ib_types_h.html#robo895">ib_net64_t</a>* const                       p_guid_array OPTIONAL,\r
+        IN      OUT                     size_t* const                           p_guid_cnt );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an opened instance of the access layer.\r
+\r
+       p_guid_array\r
+               [out] An array of GUIDs provided by the user and filled out by the\r
+               access layer.  If this parameter is NULL, the access layer will return\r
+               the number of entries in the array necessary to retrieve the GUID list.\r
+\r
+       p_guid_cnt\r
+               [in/out] On input, this specifies the number of entries in the\r
+               GUID array.\r
+\r
+               On output, the access layer will set this to the number of valid\r
+               entries in the p_guid_array or the minimum number of entries needed\r
+               in the GUID array in order to return all channel adapter GUIDs.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The operation was successful.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the GUID count was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to perform the operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine returns a list of GUIDs for all available channel adapters.\r
+       When called, the access layer will examine p_guid_cnt to determine the\r
+       number of entries available in the p_guid_array.  If the count is too\r
+       small, the function will return IB_INSUFFICIENT_MEMORY, and set p_guid_cnt\r
+       to the number of needed entries.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo163">ib_open_al</a>, <a href="#robo164">ib_open_ca</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo128">[Functions]<a name="Access20Layer2fib5fget5fguid">\r
+Access Layer/ib_get_guid</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_guid</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a GUID for a device or port that matches the user-specified\r
+       attributes.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_get_guid</strong>(\r
+        IN                              ib_al_handle_t                          h_al,\r
+        IN              const   uint32_t                                        index,\r
+        IN              const   <a href="#robo190">ib_pnp_class_t</a>                          device_type,\r
+        IN              const   uint64_t                                        attr_mask,\r
+                OUT                     <a href="./ib_types_h.html#robo895">ib_net64_t</a>* const                       p_guid );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an opened instance of the access layer.\r
+\r
+       index\r
+               [in] Specifies the location of the device or port.  Users specify this\r
+               value to iterate through all devices or ports on the system.  If set\r
+               to IB_ANY_INDEX, then the first device or port matching the given\r
+               attributes will be returned.\r
+\r
+       device_type\r
+               [in] Indicates the type of device to retrieve the GUID for.\r
+\r
+       attr_mask\r
+               [in] Specifies a set of attributes that the given device or port\r
+               must have for a successful match to occur.\r
+\r
+       p_guid\r
+               [out] On successful return, this parameter will reference the GUID\r
+               of the device or port that contains the specified attributes.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The operation was successful.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_SETTING\r
+               The specified device type is invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               No p_guid parameter was specified.\r
+\r
+       IB_NO_MATCH\r
+               The device or port at the specified index does not have the given\r
+               attributes.\r
+\r
+       IB_INVALID_INDEX\r
+               No device or port exists for the specified index.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine returns a GUID for a device or port that matches the\r
+       user-specified attributes.  If index is IB_ANY_INDEX, then the first\r
+       device or port matching the given attributes is returned if a match is\r
+       found.  If no match is found, the call will return IB_NO_MATCH.  If a\r
+       valid index is specified, then the device or port located at that index\r
+       will be examined to see if it has the given attributes.  If the device\r
+       or port with those attributes is found, its GUID is returned.\r
+\r
+       This routine may be used to locate a device or port with a given set\r
+       of attributes, or iterate through all devices or ports on the system.\r
+       The specified index values are set by the access layer, but the index\r
+       associated with a GUID may change if devices are removed from the system.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo163">ib_open_al</a>, <a href="#robo190">ib_pnp_class_t</a>, <a href="#robo127">ib_get_ca_guids</a>, <a href="#robo214">ib_query_ca_by_guid</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo129">[Functions]<a name="Access20Layer2fib5fget5fmad">\r
+Access Layer/ib_get_mad</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_mad</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Obtains a MAD element from the pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_get_mad</strong>(\r
+        IN              const   ib_pool_key_t                           pool_key,\r
+        IN              const   size_t                                          buf_size,\r
+                OUT                     <a href="#robo150">ib_mad_element_t</a>                        **pp_mad_element );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       pool_key\r
+               [in] Key for the pool to obtain a MAD element for the desired\r
+               protection domain.\r
+\r
+       buf_size\r
+               [in] The size of the buffer referenced by the MAD element.\r
+\r
+       pp_mad_element\r
+               [out] Upon successful completion of this call, this references\r
+               the returned MAD element.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The MAD element was successfully retrieved from the MAD pool.\r
+\r
+       IB_INVALID_PARAMETER\r
+               The MAD pool key was invalid or a reference to the MAD element\r
+               pointer was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to obtain the MAD element.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to grow and register the MAD pool.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function obtains a MAD element containing a data segment\r
+       that references a data buffer for the given pool key.  The data buffer\r
+       referenced by the MAD element is zeroed before being returned to the\r
+       user.\r
+\r
+       It is recommended that elements retrieved from a MAD pool for use on\r
+       the receive queue of a MAD QP have a buffer size of 256 bytes.\r
+\r
+       For MADs being sent, buf_size should be set to the size of the relevant\r
+       data sent as part of the MAD, and should not include any padding needed\r
+       to make the MAD size a multiple of 256 bytes.  For most MADs, buf_size\r
+       may be set equal to the size of the MAD header plus the amount of user\r
+       data transfered as part of the MAD.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo204">ib_put_mad</a>, <a href="#robo247">ib_send_mad</a>, <a href="#robo150">ib_mad_element_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo130">[Functions]<a name="Access20Layer2fib5fget5fmad5fbuf">\r
+Access Layer/ib_get_mad_buf</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_mad_buf</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a pointer to the MAD buffer associated with a MAD element.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#pragma warning(push)\r
+#pragma warning(disable: 4244 ) \r
+AL_INLINE void* AL_API\r
+<strong>ib_get_mad_buf</strong>(\r
+        IN              const   <a href="#robo150">ib_mad_element_t</a>* const         p_mad_element )\r
+{\r
+        CL_ASSERT( p_mad_element );\r
+        return( p_mad_element-&gt;p_mad_buf );\r
+}\r
+#pragma warning (pop)\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_mad_element\r
+               [in] A pointer to a MAD element.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Returns a pointer to the MAD buffer associated with a MAD element.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo150">ib_mad_element_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo131">[Functions]<a name="Access20Layer2fib5fget5fport5fby5fgid">\r
+Access Layer/ib_get_port_by_gid</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_port_by_gid</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the GUID of a port that contains the given port GID.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_get_port_by_gid</strong>(\r
+        IN                              ib_al_handle_t                          h_al,\r
+        IN              const   <a href="./ib_types_h.html#robo856">ib_gid_t</a>* const                         p_gid,\r
+                OUT                     <a href="./ib_types_h.html#robo895">ib_net64_t</a>* const                       p_port_guid );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an opened instance of the access layer.\r
+\r
+       p_gid\r
+               [in] A port GID.\r
+\r
+       p_port_guid\r
+               [out] A GUID to the port that contains the matching user-\r
+               specified GID.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The operation was successful.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the port GID or port GUID was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to perform the operation.\r
+\r
+       IB_NOT_FOUND\r
+               No channel adapters in the system contain the specifed port GID.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine returns a port GUID that contains the user-specified port GID.\r
+       If no channel adapters in the system contain the port GID, the call will\r
+       return IB_NOT_FOUND.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo163">ib_open_al</a>, <a href="#robo164">ib_open_ca</a>, <a href="#robo127">ib_get_ca_guids</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo132">[Functions]<a name="Access20Layer2fib5fget5fquery5fnode5frec">\r
+Access Layer/ib_get_query_node_rec</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_query_node_rec</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves a node record result from a MAD returned by a call to\r
+       <a href="#robo211">ib_query</a>().\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE ib_node_record_t* AL_API\r
+<strong>ib_get_query_node_rec</strong>(\r
+        IN                              <a href="#robo150">ib_mad_element_t</a>                        *p_result_mad,\r
+        IN                              uint32_t                                        result_index )\r
+{\r
+        <a href="./ib_types_h.html#robo953">ib_sa_mad_t</a>             *p_sa_mad;\r
+\r
+        CL_ASSERT( p_result_mad );\r
+        p_sa_mad = (<a href="./ib_types_h.html#robo953">ib_sa_mad_t</a>*)<a href="#robo130">ib_get_mad_buf</a>( p_result_mad );\r
+        CL_ASSERT( p_sa_mad &amp;&amp; p_sa_mad-&gt;attr_id == <a href="./ib_types_h.html#robo737">IB_MAD_ATTR_NODE_RECORD</a> );\r
+\r
+        return( (ib_node_record_t*)<a href="#robo135">ib_get_query_result</a>( p_result_mad,\r
+                result_index ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_result_mad\r
+               [in] This is a reference to the MAD returned as a result of the\r
+               query.\r
+\r
+       result_index\r
+               [in] A zero-based index indicating which result to return.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call returns a pointer to the start of a node record result from\r
+       a call to <a href="#robo211">ib_query</a>().\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo219">ib_query_rec_t</a>, <a href="#robo150">ib_mad_element_t</a>, <a href="#robo135">ib_get_query_result</a>, ib_node_record_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo133">[Functions]<a name="Access20Layer2fib5fget5fquery5fpath5frec">\r
+Access Layer/ib_get_query_path_rec</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_query_path_rec</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves a path record result from a MAD returned by a call to\r
+       <a href="#robo211">ib_query</a>().\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>* AL_API\r
+<strong>ib_get_query_path_rec</strong>(\r
+        IN                              <a href="#robo150">ib_mad_element_t</a>                        *p_result_mad,\r
+        IN                              uint32_t                                        result_index )\r
+{\r
+        <a href="./ib_types_h.html#robo953">ib_sa_mad_t</a>             *p_sa_mad;\r
+\r
+        CL_ASSERT( p_result_mad );\r
+        p_sa_mad = (<a href="./ib_types_h.html#robo953">ib_sa_mad_t</a>*)<a href="#robo130">ib_get_mad_buf</a>( p_result_mad );\r
+        CL_ASSERT( p_sa_mad &amp;&amp; p_sa_mad-&gt;attr_id == <a href="./ib_types_h.html#robo740">IB_MAD_ATTR_PATH_RECORD</a> );\r
+\r
+        return( (<a href="./ib_types_h.html#robo927">ib_path_rec_t</a>*)<a href="#robo135">ib_get_query_result</a>( p_result_mad, result_index ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_result_mad\r
+               [in] This is a reference to the MAD returned as a result of the\r
+               query.\r
+\r
+       result_index\r
+               [in] A zero-based index indicating which result to return.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call returns a pointer to the start of a path record result from\r
+       a call to <a href="#robo211">ib_query</a>().\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo219">ib_query_rec_t</a>, <a href="#robo150">ib_mad_element_t</a>, <a href="#robo135">ib_get_query_result</a>, <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo134">[Functions]<a name="Access20Layer2fib5fget5fquery5fportinfo5frec">\r
+Access Layer/ib_get_query_portinfo_rec</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_query_portinfo_rec</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves a port info record result from a MAD returned by a call to\r
+       <a href="#robo211">ib_query</a>().\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE ib_portinfo_record_t* AL_API\r
+<strong>ib_get_query_portinfo_rec</strong>(\r
+        IN                              <a href="#robo150">ib_mad_element_t</a>                        *p_result_mad,\r
+        IN                              uint32_t                                        result_index )\r
+{\r
+        <a href="./ib_types_h.html#robo953">ib_sa_mad_t</a>             *p_sa_mad;\r
+\r
+        CL_ASSERT( p_result_mad );\r
+        p_sa_mad = (<a href="./ib_types_h.html#robo953">ib_sa_mad_t</a>*)<a href="#robo130">ib_get_mad_buf</a>( p_result_mad );\r
+        CL_ASSERT( p_sa_mad &amp;&amp; p_sa_mad-&gt;attr_id == <a href="./ib_types_h.html#robo746">IB_MAD_ATTR_PORTINFO_RECORD</a> );\r
+\r
+        return( (ib_portinfo_record_t*)<a href="#robo135">ib_get_query_result</a>( p_result_mad,\r
+                result_index ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_result_mad\r
+               [in] This is a reference to the MAD returned as a result of the\r
+               query.\r
+\r
+       result_index\r
+               [in] A zero-based index indicating which result to return.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call returns a pointer to the start of a port info record result from\r
+       a call to <a href="#robo211">ib_query</a>().\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo219">ib_query_rec_t</a>, <a href="#robo150">ib_mad_element_t</a>, <a href="#robo135">ib_get_query_result</a>, ib_portinfo_record_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo135">[Functions]<a name="Access20Layer2fib5fget5fquery5fresult">\r
+Access Layer/ib_get_query_result</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_query_result</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves a result structure from a MAD returned by a call to <a href="#robo211">ib_query</a>().\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void* AL_API\r
+<strong>ib_get_query_result</strong>(\r
+        IN                              <a href="#robo150">ib_mad_element_t</a>                        *p_result_mad,\r
+        IN                              uint32_t                                        result_index )\r
+{\r
+        <a href="./ib_types_h.html#robo953">ib_sa_mad_t</a>             *p_sa_mad;\r
+\r
+        CL_ASSERT( p_result_mad );\r
+        p_sa_mad = (<a href="./ib_types_h.html#robo953">ib_sa_mad_t</a>*)<a href="#robo130">ib_get_mad_buf</a>( p_result_mad );\r
+        CL_ASSERT( p_sa_mad );\r
+        CL_ASSERT( ib_get_attr_size( p_sa_mad-&gt;attr_offset ) * (result_index + 1) +\r
+                IB_SA_MAD_HDR_SIZE &lt;= p_result_mad-&gt;size );\r
+\r
+        return( p_sa_mad-&gt;data +\r
+                (ib_get_attr_size( p_sa_mad-&gt;attr_offset ) * result_index) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_result_mad\r
+               [in] This is a reference to the MAD returned as a result of the\r
+               query.\r
+\r
+       result_index\r
+               [in] A zero-based index indicating which result to return.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call returns a pointer to the start of a result structure from a call\r
+       to <a href="#robo211">ib_query</a>().  The type of result structure must be known to the user\r
+       either through the user's context or the query_type returned as part of\r
+       the <a href="#robo219">ib_query_rec_t</a> structure.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo219">ib_query_rec_t</a>, <a href="#robo150">ib_mad_element_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo136">[Functions]<a name="Access20Layer2fib5fget5fquery5fsvc5frec">\r
+Access Layer/ib_get_query_svc_rec</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_query_svc_rec</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves a service record result from a MAD returned by a call to\r
+       <a href="#robo211">ib_query</a>().\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE ib_service_record_t* AL_API\r
+<strong>ib_get_query_svc_rec</strong>(\r
+        IN                              <a href="#robo150">ib_mad_element_t</a>                        *p_result_mad,\r
+        IN                              uint32_t                                        result_index )\r
+{\r
+        <a href="./ib_types_h.html#robo953">ib_sa_mad_t</a>             *p_sa_mad;\r
+\r
+        CL_ASSERT( p_result_mad );\r
+        p_sa_mad = (<a href="./ib_types_h.html#robo953">ib_sa_mad_t</a>*)<a href="#robo130">ib_get_mad_buf</a>( p_result_mad );\r
+        CL_ASSERT( p_sa_mad &amp;&amp; p_sa_mad-&gt;attr_id == <a href="./ib_types_h.html#robo750">IB_MAD_ATTR_SERVICE_RECORD</a> );\r
+\r
+        return( (ib_service_record_t*)<a href="#robo135">ib_get_query_result</a>( p_result_mad,\r
+                result_index ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_result_mad\r
+               [in] This is a reference to the MAD returned as a result of the\r
+               query.\r
+\r
+       result_index\r
+               [in] A zero-based index indicating which result to return.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call returns a pointer to the start of a service record result from\r
+       a call to <a href="#robo211">ib_query</a>().\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo219">ib_query_rec_t</a>, <a href="#robo150">ib_mad_element_t</a>, <a href="#robo135">ib_get_query_result</a>, ib_service_record_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo137">[Functions]<a name="Access20Layer2fib5fget5fspl5fqp">\r
+Access Layer/ib_get_spl_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_spl_qp</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Create a special QP or QP alias.  This call provides access to queue\r
+       pairs 0 and 1, and the raw queue pair types.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_get_spl_qp</strong>(\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+        IN              const   <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      port_guid,\r
+        IN              const   <a href="./ib_types_h.html#robo206">ib_qp_create_t</a>* const           p_qp_create,\r
+        IN              const   void* const                                     qp_context,\r
+        IN              const   <a href="#robo178">ib_pfn_event_cb_t</a>                       pfn_qp_event_cb OPTIONAL,\r
+                OUT                     ib_pool_key_t* const            p_pool_key OPTIONAL,\r
+                OUT                     ib_qp_handle_t* const           ph_qp );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] This is a handle to a protection domain associated with the queue\r
+               pair.  This must be a protection domain alias for aliased QP types.\r
+\r
+       port_guid\r
+               [in] The port GUID that the special QP will be associated with.\r
+\r
+       p_qp_create\r
+               [in] Attributes necessary to allocate and initialize the queue pair.\r
+\r
+       qp_context\r
+               [in] A user-specified context information associated with the\r
+               queue pair.\r
+\r
+       pfn_qp_ervent_cb\r
+               [in] User-specified error callback routine invoked after an\r
+               asynchronous event has occurred on the queue pair.\r
+\r
+       p_pool_key\r
+               [in] A key to a pool of MAD elements that are used to send MADs.\r
+               This key is only valid for aliased QP types.\r
+\r
+       ph_qp\r
+               [out] Upon successful completion of this call, this references a\r
+               handle to the newly created queue pair.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The queue pair was successfully created.\r
+\r
+       IB_INVALID_PD_HANDLE\r
+               The protection domain to associate with the queue pair was invalid.\r
+\r
+       IB_INVALID_PORT\r
+               The port number supplied was invalid for the given channel adapter.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the queue pair attributes or handle was not provided.\r
+\r
+       IB_INVALID_PERMISSION\r
+               The calling process does not have sufficient privilege to create the\r
+               requested queue pair type.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to create the queue pair.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to create the queue pair.\r
+\r
+       IB_INVALID_CQ_HANDLE\r
+               The send or receive completion queue to associate with the queue pair\r
+               was invalid.\r
+\r
+       IB_INVALID_SETTING\r
+               The specified queue pair type was invalid.\r
+\r
+       IB_UNSUPPORTED\r
+               The specified queue pair type was not supported by the channel adapter.\r
+\r
+       IB_INVALID_MAX_WRS\r
+               The requested maximum send or receive work request depth could not be\r
+               supported.\r
+\r
+       IB_INVALID_MAX_SGE\r
+               The requested maximum number of scatter-gather entries for the send or\r
+               receive queue could not be supported.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine allocates a queue pair with the specified attributes.  If\r
+       the queue pair cannot be allocated, an error is returned.  When creating\r
+       the queue pair, users associate a context with the queue pair.  This\r
+       context is returned to the user through the asynchronous event callback\r
+       if an event occurs.\r
+\r
+       This routine is used to create queue pairs of type:\r
+\r
+       IB_QPT_QP0\r
+       IB_QPT_QP1\r
+       IB_QPT_RAW_IPV6\r
+       IB_QPT_RAW_ETHER\r
+       IB_QPT_QP0_ALIAS\r
+       IB_QPT_QP1_ALIAS\r
+\r
+       Callers of <strong>ib_get_spl_qp</strong> should call <a href="#robo140">ib_init_dgrm_svc</a> if the queue pair is\r
+       of type IB_QPT_QP0, IB_QPT_QP1, IB_QPT_RAW_IPV6, IB_QPT_RAW_ETHER before\r
+       sending or receiving data.  MADs may be sent on aliased QPs on the\r
+       successful return of this routine.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo218">ib_query_qp</a>, <a href="#robo158">ib_modify_qp</a>, <a href="#robo120">ib_destroy_qp</a>, <a href="#robo129">ib_get_mad</a>\r
+       <a href="#robo140">ib_init_dgrm_svc</a>, <a href="./ib_types_h.html#robo206">ib_qp_create_t</a>, <a href="#robo178">ib_pfn_event_cb_t</a>, <a href="./ib_types_h.html#robo205">ib_qp_attr_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo138">[Structures]<a name="Access20Layer2fib5fgid5fpair5ft">\r
+Access Layer/ib_gid_pair_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_gid_pair_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Source and destination GIDs.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_gid_pair\r
+{\r
+        <a href="./ib_types_h.html#robo856">ib_gid_t</a>                                        src_gid;\r
+        <a href="./ib_types_h.html#robo856">ib_gid_t</a>                                        dest_gid;\r
+\r
+}       <strong>ib_gid_pair_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       src_gid\r
+               Source GID of a path.\r
+\r
+       dest_gid\r
+               Destination GID of a path.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is used to describe the endpoints of a path.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="./ib_types_h.html#robo856">ib_gid_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo139">[Structures]<a name="Access20Layer2fib5fguid5fpair5ft">\r
+Access Layer/ib_guid_pair_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_guid_pair_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Source and destination GUIDs.  These may be port or channel adapter\r
+       GUIDs, depending on the context in which this structure is used.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_guid_pair\r
+{\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      src_guid;\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      dest_guid;\r
+\r
+}       <strong>ib_guid_pair_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       src_guid\r
+               Source GUID of a path.\r
+\r
+       dest_guid\r
+               Destination GUID of a path.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is used to describe the endpoints of a path.  The given\r
+       GUID pair may belong to either ports or channel adapters.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_guid_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo140">[Functions]<a name="Access20Layer2fib5finit5fdgrm5fsvc">\r
+Access Layer/ib_init_dgrm_svc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_init_dgrm_svc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Initializes a datagram queue pair for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_init_dgrm_svc</strong>(\r
+        IN              const   ib_qp_handle_t                          h_qp,\r
+        IN              const   <a href="#robo122">ib_dgrm_info_t</a>* const           p_dgrm_info OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] A handle to an existing queue pair.\r
+\r
+       p_dgrm_info\r
+               [in] References information needed to configure the queue pair for\r
+               use sending and receiving datagrams.  This field is optional for\r
+               IB_QPT_QP0, IB_QPT_QP1 queue pair types and is not used for\r
+               IB_QPT_RAW_IPV6, and IB_QPT_RAW_ETHER queue pair types.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The datagram queue pair was initialized successfully.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The datagram queue pair handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               The queue pair handle was not created as a datagram queue pair type\r
+               or a reference to the datagram service information was not provided.\r
+\r
+       IB_INVALID_QP_STATE\r
+               The queue pair was in an invalid state for the requested operation.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to initialize the datagram queue pair.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call binds the queue pair to a given port and transitions its state\r
+       to ready to send and receive data.  A queue pair must be initialized\r
+       before it can be used to send and receive datagrams.\r
+\r
+       This routine is used to initialize queue pairs of type:\r
+\r
+       IB_QPT_QP0\r
+       IB_QPT_QP1\r
+       IB_QPT_MAD\r
+       IB_QPT_RAW_IPV6\r
+       IB_QPT_RAW_ETHER\r
+       IB_QPT_UNRELIABLE_DGRM\r
+\r
+       For IB_QPT_MAD type queue pairs, receive buffers are automatically posted\r
+       by the access layer, however, users must call <a href="#robo228">ib_reg_mad_svc</a> to receive\r
+       MADs.  Received MAD elements must be returned to the access layer through\r
+       the <a href="#robo204">ib_put_mad</a>() call.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo109">ib_create_qp</a>, <a href="#robo137">ib_get_spl_qp</a>, <a href="#robo122">ib_dgrm_info_t</a>, <a href="#robo228">ib_reg_mad_svc</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo142">[Functions]<a name="Access20Layer2fib5fjoin5fmcast">\r
+Access Layer/ib_join_mcast</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_join_mcast</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Attaches a queue pair to a multicast group.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_join_mcast</strong>(\r
+        IN              const   ib_qp_handle_t                          h_qp,\r
+        IN              const   <a href="#robo154">ib_mcast_req_t</a>* const           p_mcast_req );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] A handle to an unreliable datagram queue pair that will join the\r
+               multicast group.\r
+\r
+       p_mcast_req\r
+               [in] Specifies the multicast group to join.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The join multicast group request has been initiated.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the multicast group request information was not\r
+               provided.\r
+\r
+       IB_INVALID_SERVICE_TYPE\r
+               The queue pair configuration does not support this type of service.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to join the multicast group.\r
+\r
+       IB_INVALID_GUID\r
+               No port was found for the port_guid specified in the request.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to perform the operation.\r
+\r
+       IB_INVALID_PKEY\r
+               The pkey specified in the multicast join request does not match the\r
+               pkey of the queue pair.\r
+\r
+       IB_INVALID_PORT\r
+               The port GUID specified in the multicast join request does not match\r
+               the port of the queue pair.\r
+\r
+       IB_ERROR\r
+               An error occurred while performing the multicast group join operation.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available to complete\r
+               the request.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to complete the request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine results in the specified queue pair joining a multicast\r
+       group.  If the multicast group does not already exist, it will be created\r
+       at the user's option.  Information about the multicast group is returned\r
+       to the user through a callback specified through the p_mcast_req\r
+       parameter.\r
+\r
+       If the specified queue pair is already a member of a multicast group when\r
+       this call is invoked, an error will occur if there are conflicting\r
+       membership requirements.  The QP is restricted to being bound to a single\r
+       port_guid and using a single pkey.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo144">ib_leave_mcast</a>, <a href="#robo154">ib_mcast_req_t</a>, <a href="#robo109">ib_create_qp</a>, <a href="#robo140">ib_init_dgrm_svc</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo143">[Structures]<a name="Access20Layer2fib5flap5fpdata5ft">\r
+Access Layer/ib_lap_pdata_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_lap_pdata_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User data sent as part of a load alternate path message.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ib_lap_pdata\r
+{\r
+        uint8_t                                         data[IB_LAP_PDATA_SIZE];\r
+\r
+}       <strong>ib_lap_pdata_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo144">[Functions]<a name="Access20Layer2fib5fleave5fmcast">\r
+Access Layer/ib_leave_mcast</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_leave_mcast</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Removes a queue pair from a multicast group.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_leave_mcast</strong>(\r
+        IN              const   ib_mcast_handle_t                       h_mcast,\r
+        IN              const   <a href="#robo177">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mcast\r
+               [in] A handle to a joined multicast group.\r
+\r
+       pfn_destroy_cb\r
+               [in] An optional user-specified callback that is invoked after the\r
+               leave request has completed.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The leave multicast group request has been initiated.\r
+\r
+       IB_INVALID_MCAST_HANDLE\r
+               The multicast group handle was invalid.\r
+\r
+       IB_ERROR\r
+               An error occurred while performing the multicast group leave operation.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to perform the operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine detaches a queue pair from a multicast group and removes\r
+       it as a member of the group with the subnet administrator.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo142">ib_join_mcast</a>, <a href="#robo177">ib_pfn_destroy_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo145">[Structures]<a name="Access20Layer2fib5flid5fpair5ft">\r
+Access Layer/ib_lid_pair_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_lid_pair_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Source and destination LIDs.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_lid_pair\r
+{\r
+        <a href="./ib_types_h.html#robo893">ib_net16_t</a>                                      src_lid;\r
+        <a href="./ib_types_h.html#robo893">ib_net16_t</a>                                      dest_lid;\r
+\r
+}       <strong>ib_lid_pair_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       src_lid\r
+               Source LID of a path.\r
+\r
+       dest_lid\r
+               Destination LID of a path.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is used to describe the endpoints of a path.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo146">[Structures]<a name="Access20Layer2fib5flisten5ferr5frec5ft">\r
+Access Layer/ib_listen_err_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_listen_err_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information returned to the user when an error occurs on a listen request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_listen_err_rec\r
+{\r
+        void* __ptr64                                                           listen_context;\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                                                         reason;\r
+        ib_listen_handle_t                                                      h_cm_listen;\r
+\r
+}       <strong>ib_listen_err_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       listen_context\r
+               User-defined context information associated with the listen request\r
+               through the <a href="#robo85">ib_cm_listen</a> call.\r
+\r
+       reason\r
+               A status that identifies the reason for error being reported.\r
+\r
+       h_cm_listen\r
+               The handle for the listen request.  This handle will match the handle\r
+               returned by <a href="#robo85">ib_cm_listen</a> call.  It is provided in case an error event\r
+               occurs before a client's call to <a href="#robo85">ib_cm_listen</a> can return.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo179">ib_pfn_listen_err_cb_t</a>, <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo147">[Definitions]<a name="Access20Layer2fib5flisten5finfo5ft">\r
+Access Layer/ib_listen_info_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_listen_info_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <a href="./ib_types_h.html#robo40">Constants</a> used to specify directed listen requests.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#define IB_ALL_CAS                                              0\r
+#define IB_ALL_PORTS                                    0\r
+#define IB_ALL_LIDS                                             0\r
+#define IB_ALL_PKEYS                                    0\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo85">ib_cm_listen</a>, <a href="#robo86">ib_cm_listen_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo149">[Functions]<a name="Access20Layer2fib5flocal5fmad">\r
+Access Layer/ib_local_mad</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_local_mad</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Request that a locally received MAD be processed by the channel adapter\r
+       on which it was received.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_local_mad</strong>(\r
+        IN              const   ib_ca_handle_t                          h_ca,\r
+        IN              const   uint8_t                                         port_num,\r
+        IN              const   void* const                                     p_mad_in,\r
+                OUT                     void*                                           p_mad_out );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] A handle to the channel adapter that should process the MAD.\r
+               This must be the same adapter that the MAD was received on.\r
+\r
+       port_num\r
+               [in] The port number to which this request is directed.\r
+\r
+       p_mad_in\r
+               [in] Pointer to a management datagram (MAD) structure containing\r
+               the command to be processed.\r
+\r
+       p_mad_out\r
+               [out] References a MAD that should contain the response to the\r
+               received input MAD specified through the p_mad_in parameter.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The local MAD was processed successfully.\r
+\r
+       IB_INVALID_CA_HANDLE\r
+               The channel adapter handle was invalid.\r
+\r
+       IB_INVALID_PORT\r
+               The port number was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the MAD input or MAD output buffer was not provided.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call is provided to support SMA and GSA implementations above the\r
+       verbs interface on ports that the access layer has disabled.  This routine\r
+       is used to perform local operations by the channel adapter.  On successful\r
+       return, the provide output MAD should be used when sending a response.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo213">ib_query_ca</a>, <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo150">[Structures]<a name="Access20Layer2fib5fmad5felement5ft">\r
+Access Layer/ib_mad_element_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_mad_element_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information used to submit a work request to a management datagram (MAD)\r
+       queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_mad_element\r
+{\r
+        struct _ib_mad_element* __ptr64 p_next;\r
+        const void* __ptr64                     context1;\r
+        const void* __ptr64                     context2;\r
+\r
+        /* Request/completion data. */\r
+        <a href="./ib_types_h.html#robo882">ib_mad_t</a>* __ptr64                       p_mad_buf;\r
+        uint32_t                                        size;\r
+        uint32_t                                        immediate_data;\r
+        <a href="./ib_types_h.html#robo894">ib_net32_t</a>                                      remote_qp;\r
+\r
+        /* Send request information. */\r
+        ib_av_handle_t                          h_av;\r
+        <a href="./ib_types_h.html#robo248">ib_send_opt_t</a>                           send_opt;\r
+        <a href="./ib_types_h.html#robo894">ib_net32_t</a>                                      remote_qkey;\r
+        boolean_t                                       resp_expected;\r
+        uint32_t                                        timeout_ms;\r
+        uint32_t                                        retry_cnt;\r
+        uint8_t                                         rmpp_version;\r
+\r
+        /* Completion information. */\r
+        <a href="./ib_types_h.html#robo259">ib_wc_status_t</a>                          status;\r
+        boolean_t                                       grh_valid;\r
+        <a href="./ib_types_h.html#robo859">ib_grh_t</a>* __ptr64                       p_grh;\r
+\r
+        /* Completed receive data or send request information if h_av is NULL. */\r
+        uint32_t                                        recv_opt;\r
+        <a href="./ib_types_h.html#robo893">ib_net16_t</a>                                      remote_lid;\r
+        uint8_t                                         remote_sl;\r
+        uint16_t                                        pkey_index;\r
+        uint8_t                                         path_bits;\r
+\r
+        /* Transaction completion data. */\r
+        void* __ptr64                           send_context1;\r
+        void* __ptr64                           send_context2;\r
+\r
+}       <strong>ib_mad_element_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       p_next\r
+               A pointer used to chain MAD elements together.  This value is\r
+               set to NULL to mark the end of the chain.\r
+\r
+       context1\r
+               User-defined context information associated with the datagram.\r
+\r
+       context2\r
+               User-defined context information associated with the datagram.\r
+\r
+       p_buffer\r
+               The local data buffer contain the MAD.\r
+\r
+       size\r
+               The size of the MAD referenced by p_buffer.\r
+\r
+       immediate_data\r
+               32-bit field sent or received as part of a datagram message.\r
+               This field is valid for send operations if the send_opt\r
+               IB_SEND_OPT_IMMEDIATE flag has been set.  This field is valid\r
+               on received datagram completions if the recv_opt\r
+               IB_RECV_OPT_IMMEDIATE flag is set.\r
+\r
+       remote_qp\r
+               Identifies the destination queue pair of a datagram send operation or\r
+               the source queue pair of a received datagram.\r
+\r
+       h_av\r
+               An address vector that specifies the path information used to route\r
+               the outbound datagram to the destination queue pair.  This handle may\r
+               be NULL when sending a directed route SMP or if the access layer\r
+               should create the address vector for the user.\r
+\r
+       send_opt\r
+               Optional send control parameters.  The following options are valid:\r
+               IB_SEND_OPT_IMMEDIATE and IB_SEND_OPT_SOLICITED.  IB_SEND_OPT_FENCE\r
+               is only valid on MAD QPs.\r
+\r
+       remote_qkey\r
+               The qkey for the destination queue pair.\r
+\r
+       resp_expected\r
+               This field is used to indicate that the submitted operation expects\r
+               a response.  When set, the access layer will retry this send operation\r
+               until the corresponding response is successfully received, or the\r
+               request times out.  Send operations for which a response is expected\r
+               will always be completed by the access layer before the corresponding\r
+               received response.\r
+\r
+       timeout_ms\r
+               Specifies the number of milliseconds to wait for a response to\r
+               a request until retrying or timing out the request.  This field is\r
+               ignored if resp_expected is set to FALSE.\r
+\r
+       retry_cnt\r
+               Specifies the number of times that the request will be retried\r
+               before failing the request.  This field is ignored if resp_expected\r
+               is set to FALSE.\r
+\r
+       rmpp_version\r
+               Indicates the version of the RMPP protocol to use when sending this\r
+               MAD.  For MADs posted to MAD services of type IB_MAD_SVC_DEFAULT,\r
+               setting this field to 0 disables RMPP on user-defined management\r
+               classes or invokes the default RMPP version for well-defined management\r
+               classes, if appropriate.  For MADs posted to MAD services of type\r
+               IB_MAD_SVC_RMPP, setting this field to 0 disables RMPP on the sent\r
+               MAD.  Note that if the RMPP header exists, but the RMPP protocol is\r
+               not activated for this MAD, the user must ensure that the RMPP header\r
+               has been zeroed.  This field is intended to help support backwards\r
+               compatibility.\r
+\r
+       status\r
+               The result of the MAD work request.\r
+\r
+       grh_valid\r
+               A flag indicating whether the p_grh reference is valid.\r
+\r
+       p_grh\r
+               A reference to the global route header information.\r
+\r
+       recv_opt\r
+               Indicates optional fields valid as part of a work request that\r
+               completed on an unreliable datagram queue pair.\r
+\r
+       remote_lid\r
+               The source LID of the received datagram.\r
+\r
+       remote_sl\r
+               The service level used by the source of the received datagram.\r
+\r
+       pkey_index\r
+               This is valid only for IB_QPT_QP1 and IB_QPT_QP1_ALIAS QP types.\r
+               For received datagrams, this field contains the pkey index for\r
+               the source queue pair.  For send operations, this field contains\r
+               the pkey index to use when posting the send work request. \r
+\r
+       path_bits\r
+               The portion of the remote_lid that may be changed to vary the path\r
+               through the subnet to the remote port.\r
+\r
+       send_context1\r
+               If this datagram was received as a response to a sent datagram, this\r
+               field contains the context1 value of the send operation.  If this is\r
+               an unsolicited receive, this field will be 0.\r
+\r
+       send_context2\r
+               If this datagram was received as a response to a sent datagram, this\r
+               field contains the context2 value of the send operation.  If this is\r
+               an unsolicited receive, this field will be 0.\r
+\r
+       remote_qp\r
+               Identifies the source queue pair of a received datagram.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The format of data sent over the fabric is expected to be in the form\r
+       of a MAD.  MADs are expected to match the format defined by the\r
+       Infiniband specification and must be in network-byte order when posted\r
+       to a MAD service.\r
+\r
+       This structure is received to notify a user that a datagram has been\r
+       received for a registered management class.  Information of the source\r
+       of the data is provided, along with the data buffer.\r
+\r
+       The MAD element structure is defined such that a received MAD element\r
+       may be re-used as a sent response.  In such cases, the h_av field may be\r
+       NULL.  The address vector will be created and destroyed by the access\r
+       layer.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo129">ib_get_mad</a>, <a href="#robo204">ib_put_mad</a>, <a href="#robo247">ib_send_mad</a>, <a href="./ib_types_h.html#robo148">ib_local_ds_t</a>, <a href="./ib_types_h.html#robo248">ib_send_opt_t</a>,\r
+       ib_pfn_mad_recv_cb_t, <a href="#robo130">ib_get_mad_buf</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo151">[Structures]<a name="Access20Layer2fib5fmad5fsvc5ft">\r
+Access Layer/ib_mad_svc_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_mad_svc_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information used to request management datagram support with a queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_mad_svc\r
+{\r
+        void                                            *mad_svc_context;\r
+        <a href="#robo180">ib_pfn_mad_comp_cb_t</a>            pfn_mad_send_cb;\r
+        <a href="#robo180">ib_pfn_mad_comp_cb_t</a>            pfn_mad_recv_cb;\r
+\r
+        boolean_t                                       support_unsol;\r
+        uint8_t                                         mgmt_class;\r
+        uint8_t                                         mgmt_version;\r
+        boolean_t                                       method_array[IB_MAX_METHODS];\r
+\r
+        <a href="#robo152">ib_mad_svc_type_t</a>                       svc_type;\r
+\r
+}       <strong>ib_mad_svc_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       mad_svc_context\r
+               User-defined context that is returned by the access layer through\r
+               the pfn_mad_send_cb and pfn_mad_recv_cb.\r
+\r
+       pfn_mad_send_cb\r
+               A send callback that is invoked to notify the user that a send\r
+               operation has completed for a sent MAD.\r
+\r
+       pfn_mad_recv_cb\r
+               A receive callback that is invoked to notify the user that a MAD\r
+               has been received.\r
+\r
+       support_unsol\r
+               If set to TRUE, this field indicates that the registering client\r
+               supports processing unsolicited MADs.  Unsolicited MADs are\r
+               received MADs that do not have the response bit set.  If set to TRUE,\r
+               the following fields are required (must be non-zero): mgmt_class,\r
+               mgmt_version, and method_array.\r
+\r
+       mgmt_version\r
+               Indicates which version of a management class the client requires\r
+               support for.  The access layer distinguishes between clients\r
+               requiring different versions of the same management class.\r
+               This field is ignored if the support_unsol field is set to FALSE.\r
+\r
+       mgmt_class\r
+               Indicates the management class that should be supported by the\r
+               access layer.  This field is ignored if the support_unsol field is\r
+               set to FALSE.\r
+\r
+       method_array\r
+               An array of 127 entries specifying which methods are supported by\r
+               a client when receiving unsolicited MADs.  Each index corresponds to\r
+               a single method, and each entry in the array indicates if the method\r
+               is supported by the client.  This field is ignored if the\r
+               support_unsol field is set to FALSE.\r
+\r
+       svc_type\r
+               Indicates the type of services that should be provided by the MAD\r
+               service.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Clients use this structure to define which management datagram methods\r
+       they support, and the type of support required for each.  A received MAD\r
+       is distinguished by the access layer based on the following three fields:\r
+       management class, management version, and method.\r
+\r
+       Specific combinations of class, version, and method may be registered\r
+       for unsolicited MADs only once.  The access layer supports multiple\r
+       clients registering for unsolicited MADs as long as they do not share the\r
+       same methods, class, or version.\r
+\r
+       The svc_type field can be set by a client to indicate that the access\r
+       layer should invoke RMPP for the specified management class of MADs.  If\r
+       set to IB_MAD_SVC_DEFAULT, the access layer will automatically invoke RMPP\r
+       for well known MAD classes (those defined by the 1.1 version of the\r
+       InfiniBand specification).  The svc_type field is intended to be used by\r
+       clients sending and receiving vendor specific management class requiring\r
+       RMPP and clients providing their own MAD services.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo228">ib_reg_mad_svc</a>, ib_pfn_mad_send_cb_t, ib_pfn_mad_recv_cb_t,\r
+       <a href="#robo152">ib_mad_svc_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo152">[Definitions]<a name="Access20Layer2fib5fmad5fsvc5ftype5ft">\r
+Access Layer/ib_mad_svc_type_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_mad_svc_type_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicates the type of services provided by a MAD service.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _ib_mad_svc_type\r
+{\r
+        IB_MAD_SVC_DEFAULT = 0,\r
+        IB_MAD_SVC_RMPP,\r
+        IB_MAD_SVC_RAW\r
+\r
+}       <strong>ib_mad_svc_type_t</strong>;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IB_MAD_SVC_DEFAULT\r
+               Indicates that the access layer will provide all necessary services,\r
+               including retransmissions and RMPP for well-defined management classes.\r
+\r
+       IB_MAD_SVC_RMPP\r
+               Indicates that the MAD service requires retransmissions and the RMPP\r
+               header is available on all MADs.  (The RMPP protocol will be activated\r
+               on a per send basis.)  This service type should be used for\r
+               user-defined management classes requiring RMPP.\r
+\r
+       IB_MAD_SVC_RAW\r
+               Specifies that the MAD service will not perform retransmissions or\r
+               perform RMPP.  All MADs received or sent on a MAD service of this type\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This enum is used to define the types of MAD services available to users.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo151">ib_mad_svc_t</a>, <a href="#robo228">ib_reg_mad_svc</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo153">[Structures]<a name="Access20Layer2fib5fmcast5frec5ft">\r
+Access Layer/ib_mcast_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_mcast_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information returned as a result of joining a multicast group.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_mcast_rec\r
+{\r
+        const void* __ptr64                     mcast_context;\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+        <a href="./ib_types_h.html#robo893">ib_net16_t</a>                                      error_status;\r
+\r
+        ib_mcast_handle_t                       h_mcast;\r
+        <a href="./ib_types_h.html#robo887">ib_member_rec_t</a>* __ptr64        p_member_rec;\r
+\r
+}       <strong>ib_mcast_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       mcast_context\r
+               User-defined context information associated with the multicast join\r
+               request.\r
+\r
+       status\r
+               Indicates the success of the multicast group join operation.\r
+\r
+       error_status\r
+               Provide additional error information that was provided by the SA.\r
+               This field is only valid if status is set to IB_REMOTE_ERROR.\r
+\r
+       h_mcast\r
+               Upon successful completion of a multicast join, this references a\r
+               handle to the multicast group.  This handle is used to leave the\r
+               multicast group.\r
+\r
+       p_member_rec\r
+               References a member record that provides information about the\r
+               multicast group.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is returned to a client through a callback to notify them\r
+       of the result of a multicast join operation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo142">ib_join_mcast</a>, <a href="#robo181">ib_pfn_mcast_cb_t</a>, <a href="#robo144">ib_leave_mcast</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo154">[Structures]<a name="Access20Layer2fib5fmcast5freq5ft">\r
+Access Layer/ib_mcast_req_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_mcast_req_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information used to join a multicast group.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_mcast_req\r
+{\r
+        boolean_t                                       create;\r
+        <a href="./ib_types_h.html#robo887">ib_member_rec_t</a>                         member_rec;\r
+\r
+        const void* __ptr64                     mcast_context;\r
+        <a href="#robo181">ib_pfn_mcast_cb_t</a>                       pfn_mcast_cb;\r
+\r
+        uint32_t                                        timeout_ms;\r
+        uint32_t                                        retry_cnt;\r
+        <a href="#robo47">ib_al_flags_t</a>                           flags;\r
+\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      port_guid;\r
+        uint16_t                                        pkey_index;\r
+\r
+}       <strong>ib_mcast_req_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       create\r
+               Indicates that the multicast group should be created if it does not\r
+               already exist.\r
+\r
+       member_rec\r
+               Specifies the membership information of the multicast group to join\r
+               or create.  The mgid and join state (scope_state) fields of the\r
+               member record must be set.  In addition, if create is set to TRUE,\r
+               the following fields must also be set: qkey, tclass, service level\r
+               and flow label (sl_flow_hop), and pkey.  All other fields are ignored\r
+               by the access layer.\r
+\r
+       mcast_context\r
+               User-defined context information associated with the join request.\r
+               This context is returned to the user through the function specified\r
+               by the pfn_mcast_cb field.\r
+\r
+       pfn_mcast_cb\r
+               A user-defined callback that is invoked upon completion of the\r
+               join request.\r
+\r
+       timeout_ms\r
+               Specifies the number of milliseconds to wait for a response for\r
+               the join request until retrying or timing out the request.\r
+\r
+       retry_cnt\r
+               Specifies the number of times that the join request will be retried\r
+               before failing the request.\r
+\r
+       flags\r
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to\r
+               process the called routine synchronously.\r
+\r
+       port_guid\r
+               Indicates the port that will join the multicast group.  The QP\r
+               specified as part of the ib_join_mast call will bind to this port.\r
+\r
+       pkey_index\r
+               Specifies the pkey associated with this queue pair.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is used when joining an existing multicast group or\r
+       creating a new multicast group.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo142">ib_join_mcast</a>, <a href="#robo181">ib_pfn_mcast_cb_t</a>, <a href="./ib_types_h.html#robo856">ib_gid_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo155">[Functions]<a name="Access20Layer2fib5fmodify5fav">\r
+Access Layer/ib_modify_av</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_modify_av</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Modifies the attributes of an existing address vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_modify_av</strong>(\r
+        IN              const   ib_av_handle_t                          h_av,\r
+        IN              const   <a href="./ib_types_h.html#robo57">ib_av_attr_t</a>* const                     p_av_attr );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_av\r
+               [in] A handle to an existing address vector.\r
+\r
+       p_av_attr\r
+               [in] The new attributes to use when modifying the address vector.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The address vector was successfully modified.\r
+\r
+       IB_INVALID_AV_HANDLE\r
+               The address vector handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the address vector attributes structure was not\r
+               provided.\r
+\r
+       IB_INVALID_PORT\r
+               The port number supplied, through the address vector attributes,\r
+               was invalid for the given channel adapter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine modifies the attributes of an existing address vector.\r
+       The new attributes are specified through the p_av_attr parameter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo104">ib_create_av</a>, <a href="#robo115">ib_destroy_av</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo156">[Functions]<a name="Access20Layer2fib5fmodify5fca">\r
+Access Layer/ib_modify_ca</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_modify_ca</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Modifies the attributes and violation counters associated with a port.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_modify_ca</strong>(\r
+        IN              const   ib_ca_handle_t                          h_ca,\r
+        IN              const   uint8_t                                         port_num,\r
+        IN              const   <a href="./ib_types_h.html#robo61">ib_ca_mod_t</a>                                     ca_mod,\r
+        IN              const   <a href="./ib_types_h.html#robo199">ib_port_attr_mod_t</a>* const       p_port_attr_mod );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] A handle to an opened channel adapter.\r
+\r
+       port_num\r
+               [in] An index to the port that is being modified.  The port_num matches\r
+               the index of the port as returned through the <a href="#robo213">ib_query_ca</a> call.\r
+\r
+       ca_mod\r
+               [in] A mask of the attributes and counters to modify.\r
+\r
+       p_port_attr_mod\r
+               [in] A list of the specific port attribute information to modify.  For\r
+               the access layer to modify an attribute, its corresponding bit must be\r
+               set in the ca_mod parameter.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The attributes were successfully modified.\r
+\r
+       IB_INVALID_CA_HANDLE\r
+               The channel adapter handle was invalid.\r
+\r
+       IB_INVALID_PORT\r
+               The port number supplied was invalid for the given channel adapter.\r
+\r
+       IB_INVALID_PARAMETER\r
+               The supplied ca_mod mask is invalid or a reference to the port\r
+               attribute information was not provided.\r
+\r
+       IB_UNSUPPORTED\r
+               The optional qkey and pkey violation counters are not supported by\r
+               this channel adapter, but an attempt was made to modify them.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call sets the attributes for a port in its associated PORT_INFO\r
+       structure.  It will also reset pkey and qkey violation counters.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo164">ib_open_ca</a>, <a href="#robo213">ib_query_ca</a>, <a href="#robo68">ib_close_ca</a>, <a href="./ib_types_h.html#robo61">ib_ca_mod_t</a>, <a href="./ib_types_h.html#robo199">ib_port_attr_mod_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo157">[Functions]<a name="Access20Layer2fib5fmodify5fcq">\r
+Access Layer/ib_modify_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_modify_cq</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Modifies the attributes associated with a completion queue, allowing the\r
+       completion queue to be resized.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_modify_cq</strong>(\r
+        IN              const   ib_cq_handle_t                          h_cq,\r
+        IN      OUT                     uint32_t* const                         p_size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] A handle to an existing completion queue.\r
+\r
+       p_size\r
+               [in/out] Specifies the new size of the completion queue.  If the\r
+               modify call is successful, the actual size of the completion queue\r
+               will be returned.  The actual size of the CQ will be greater than or\r
+               equal to the requested size.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The completion queue was successfully modified.\r
+\r
+       IB_INVALID_CQ_HANDLE\r
+               The completion queue handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the completion queue size was not provided.\r
+\r
+       IB_INVALID_CQ_SIZE\r
+               The requested size of the completion queue was larger than the\r
+               maximum supported by the associated channel adapter.\r
+\r
+       IB_OVERFLOW\r
+               The specified size of the completion queue is smaller than the number\r
+               of work completions currently on the completion queue.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to modify the completion queue.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine allows a client to modify the size of a completion queue.\r
+       If the new size is larger than what the associated channel adapter can\r
+       support, an error is returned.  If the completion queue has valid\r
+       completion entries on it and the requested size is smaller than the\r
+       number of entries, an overflow error is returned and the modify\r
+       operation is aborted.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo105">ib_create_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo158">[Functions]<a name="Access20Layer2fib5fmodify5fqp">\r
+Access Layer/ib_modify_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_modify_qp</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Modifies the attributes of an existing queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_modify_qp</strong>(\r
+        IN              const   ib_qp_handle_t                          h_qp,\r
+        IN              const   <a href="./ib_types_h.html#robo207">ib_qp_mod_t</a>* const                      p_qp_mod );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] A handle to an existing queue pair.\r
+\r
+       p_qp_mod\r
+               [in] The new attributes to use when modifying the queue pair.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The queue pair was successfully modified.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the queue pair attributes was not provided.\r
+\r
+       IB_INVALID_SETTING\r
+               The specified queue pair attributes were invalid.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to register the modify the queue pair.\r
+\r
+       IB_UNSUPPORTED\r
+               The requested modification was not supported.\r
+\r
+       IB_INVALID_QP_STATE\r
+               The queue pair was in an invalid state for the requested operation.\r
+\r
+       IB_INVALID_PKEY\r
+               The specified pkey was not valid.\r
+\r
+       IB_INVALID_APM_STATE\r
+               The specified automatic path migration state was not valid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine modifies the attributes of an existing queue pair and\r
+       transitions it to a new state.  The new state and attributes are\r
+       specified through the p_qp_mod parameter.  Upon successful completion,\r
+       the queue pair is in the requested state.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo109">ib_create_qp</a>, <a href="#robo120">ib_destroy_qp</a>, <a href="./ib_types_h.html#robo207">ib_qp_mod_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo162">[Structures]<a name="Access20Layer2fib5fmra5fpdata5ft">\r
+Access Layer/ib_mra_pdata_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_mra_pdata_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User data sent as part of a message receipt acknowledgement.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ib_mra_pdata\r
+{\r
+        uint8_t                                         data[IB_MRA_PDATA_SIZE];\r
+\r
+}       <strong>ib_mra_pdata_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo163">[Functions]<a name="Access20Layer2fib5fopen5fal">\r
+Access Layer/ib_open_al</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_open_al</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine opens an instance of the access layer for the user and\r
+       returns its handle.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_open_al</strong>(\r
+                OUT                     ib_al_handle_t* const           ph_al );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       ph_al\r
+               [in] Upon successful completion of this call, this parameter will\r
+               reference a handle to the access layer.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The access layer was opened successfully.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the access layer handle was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to perform the operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function opens an instance of the access layer.  An instance of the\r
+       access layer is required before allocating additional resources from the\r
+       access layer or a channel adapter.  If successful, a handle to the access\r
+       layer is returned.  User-mode clients should not call <strong>ib_open_al</strong> from the\r
+       module initialization routine.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo67">ib_close_al</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo164">[Functions]<a name="Access20Layer2fib5fopen5fca">\r
+Access Layer/ib_open_ca</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_open_ca</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Opens a channel adapter for additional access.  A channel adapter must\r
+       be opened before consuming resources on that adapter.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_open_ca</strong>(\r
+        IN              const   ib_al_handle_t                          h_al,\r
+        IN              const   <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      ca_guid,\r
+        IN              const   <a href="#robo178">ib_pfn_event_cb_t</a>                       pfn_ca_event_cb OPTIONAL,\r
+        IN              const   void* const                                     ca_context,\r
+                OUT                     ib_ca_handle_t* const           ph_ca );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] The handle to an open instance of AL.\r
+\r
+       ca_guid\r
+               [in] The GUID of the channel adapter to open.\r
+\r
+       pfn_ca_event_cb\r
+               [in] A user-specified callback that is invoked after an\r
+               asynchronous event has occurred on the channel adapter.\r
+\r
+       ca_context\r
+               [in] A client-specified context to associate with this opened instance\r
+               of the channel adapter.  This context is returned to the user when\r
+               invoking asynchronous callbacks referencing this channel adapter.\r
+\r
+       ph_ca\r
+               [out] Upon successful completion of this call, this references a\r
+               handle to the opened channel adapter.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The operation was successful.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_GUID\r
+               No channel adapter in the system was found for the specified ca_guid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the CA handle was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to open the channel adapter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       When successful, this routine returns a handle to an open instance of a CA.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo213">ib_query_ca</a>, <a href="#robo156">ib_modify_ca</a>, <a href="#robo68">ib_close_ca</a>, <a href="#robo178">ib_pfn_event_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo166">[Functions]<a name="Access20Layer2fib5fpeek5fcq">\r
+Access Layer/ib_peek_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_peek_cq</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the number of entries currently on the completion queue.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_peek_cq</strong>(\r
+        IN              const   ib_cq_handle_t                          h_cq,\r
+        OUT                             uint32_t* const                         p_n_cqes );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Handle to the completion queue to peek.\r
+\r
+       p_n_cqes\r
+               [out] Upon successful completion of this call, contains the number\r
+               of completion queue entries currently on the completion queue.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The peek operation completed successfully.\r
+\r
+       IB_INVALID_CQ_HANDLE\r
+               The completion queue handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the completion queue entry count was not provided.\r
+\r
+       IB_UNSUPPORTED\r
+               This operation is not supported by the channel adapter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The value returned is a snapshot of the number of compleiton queue\r
+       entries curently on the completion queue.  Support for this operation\r
+       is optional by a channel adapter vendor.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo105">ib_create_cq</a>, <a href="#robo198">ib_poll_cq</a>, <a href="#robo222">ib_rearm_cq</a>, <a href="#robo223">ib_rearm_n_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo167">[Functions]<a name="Access20Layer2fib5fpfn5fcm5fapr5fcb5ft">\r
+Access Layer/ib_pfn_cm_apr_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_cm_apr_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a load\r
+       alternate path response message.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_cm_apr_cb_t</strong>)(\r
+        IN                              <a href="#robo70">ib_cm_apr_rec_t</a>                         *p_cm_apr_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_cm_apr_rec\r
+               [in] Load alternate path response information sent by the remote side.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This callback is invoked to notify the user of a load alternate path\r
+       response.  If a response is not received within the specified timeout\r
+       period, this callback will be invoked with the status set to IB_CM_TIMEOUT.\r
+\r
+       In the kernel, this callback is typically invoked from within a tasklet,\r
+       depending on the implementation of the verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo82">ib_cm_lap</a>, <a href="#robo69">ib_cm_apr</a>, <a href="#robo70">ib_cm_apr_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo168">[Functions]<a name="Access20Layer2fib5fpfn5fcm5fdrep5fcb5ft">\r
+Access Layer/ib_pfn_cm_drep_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_cm_drep_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a disconnect\r
+       reply message.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_cm_drep_cb_t</strong>)(\r
+        IN                              <a href="#robo75">ib_cm_drep_rec_t</a>                        *p_cm_drep_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_cm_drep_rec\r
+               [in] Disconnect reply information returned to the user.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This callback is invoked to notify the user of a disconnect reply.  If\r
+       no reply was received within the specified timeout period, this callback\r
+       will be invoked with the status set to IB_CM_TIMEOUT.\r
+\r
+       In the kernel, this callback is typically invoked from within a\r
+       tasklet, depending on the implementation of the verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo77">ib_cm_dreq</a>, <a href="#robo74">ib_cm_drep</a>, <a href="#robo75">ib_cm_drep_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo169">[Functions]<a name="Access20Layer2fib5fpfn5fcm5fdreq5fcb5ft">\r
+Access Layer/ib_pfn_cm_dreq_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_cm_dreq_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a disconnect\r
+       request message.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_cm_dreq_cb_t</strong>)(\r
+        IN                              <a href="#robo78">ib_cm_dreq_rec_t</a>                        *p_cm_dreq_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_cm_dreq_rec\r
+               [in] Disconnect request information returned to the user.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This callback is invoked to notify the user of a disconnect request.\r
+       Users must call <a href="#robo74">ib_cm_drep</a> to respond to the disconnect request.  After\r
+       this callback returns, the queue pair associated with the connection is\r
+       transitioned to the time-wait state and is no longer usable for sending\r
+       and receiving data.\r
+\r
+       In the kernel, this callback is typically invoked from within a tasklet,\r
+       depending on the implementation of the verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo96">ib_cm_req</a>, <a href="#robo85">ib_cm_listen</a>, <a href="#robo74">ib_cm_drep</a>, <a href="#robo78">ib_cm_dreq_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo170">[Functions]<a name="Access20Layer2fib5fpfn5fcm5flap5fcb5ft">\r
+Access Layer/ib_pfn_cm_lap_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_cm_lap_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a load\r
+       alternate path message.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_cm_lap_cb_t</strong>)(\r
+        IN                              <a href="#robo83">ib_cm_lap_rec_t</a>                         *p_cm_lap_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_cm_lap_rec\r
+               [in] Load alternate path information sent by the remote side.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This callback is invoked to notify the user of a load alternate path\r
+       request.  Users must call <a href="#robo69">ib_cm_apr</a> to respond to the load alternate\r
+       path request from within this callback.  The <a href="#robo69">ib_cm_apr</a> call is used\r
+       to accept or reject the load alternate path request.\r
+\r
+       In the kernel, this callback is typically invoked from within a\r
+       tasklet, depending on the implementation of the verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo82">ib_cm_lap</a>, <a href="#robo69">ib_cm_apr</a>, <a href="#robo83">ib_cm_lap_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo171">[Functions]<a name="Access20Layer2fib5fpfn5fcm5fmra5fcb5ft">\r
+Access Layer/ib_pfn_cm_mra_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_cm_mra_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a message\r
+       received acknowledgement.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_cm_mra_cb_t</strong>)(\r
+        IN                              <a href="#robo88">ib_cm_mra_rec_t</a>                         *p_cm_mra_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_cm_mra_rec\r
+               [in] Message received acknowledgement information received from the\r
+               remote side.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This callback is invoked to notify the user that their request was\r
+       successfully received, but additional processing is required.  This\r
+       callback may be invoked after calling <a href="#robo96">ib_cm_req</a> or <a href="#robo93">ib_cm_rep</a>\r
+\r
+       In the kernel, this callback is typically invoked from within a tasklet,\r
+       depending on the implementation of the verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo96">ib_cm_req</a>, <a href="#robo93">ib_cm_rep</a>, <a href="#robo88">ib_cm_mra_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo172">[Functions]<a name="Access20Layer2fib5fpfn5fcm5frej5fcb5ft">\r
+Access Layer/ib_pfn_cm_rej_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_cm_rej_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a connection\r
+       rejection message.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_cm_rej_cb_t</strong>)(\r
+        IN                              <a href="#robo91">ib_cm_rej_rec_t</a>                         *p_cm_rej_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_cm_rej_rec\r
+               [in] Connection rejection information returned to the user.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This callback is invoked to notify the user that a connection has been\r
+       rejected.  This routine may be invoked after calling <a href="#robo96">ib_cm_req</a> or\r
+       <a href="#robo93">ib_cm_rep</a>.\r
+\r
+       In the kernel, this callback is typically invoked from within a tasklet,\r
+       depending on the implementation of the verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo96">ib_cm_req</a>, <a href="#robo93">ib_cm_rep</a>, <a href="#robo99">ib_cm_rtu</a>, <a href="#robo90">ib_cm_rej</a>, <a href="#robo91">ib_cm_rej_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo173">[Functions]<a name="Access20Layer2fib5fpfn5fcm5frep5fcb5ft">\r
+Access Layer/ib_pfn_cm_rep_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_cm_rep_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a connection\r
+       request reply message.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_cm_rep_cb_t</strong>)(\r
+        IN                              <a href="#robo94">ib_cm_rep_rec_t</a>                         *p_cm_rep_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_cm_rep_rec\r
+               [in] Connection request reply information returned to the user,\r
+               indicating the remote connection data.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This callback is invoked to notify the user of a connection request reply.\r
+       This routine is invoked after calling <a href="#robo96">ib_cm_req</a>.  Users must call\r
+       <a href="#robo99">ib_cm_rtu</a> to accept the connection or <a href="#robo90">ib_cm_rej</a> to reject the connection\r
+       from the callback.\r
+\r
+       Users may also call <a href="#robo87">ib_cm_mra</a> to acknowledge the connection request reply\r
+       and prevent the remote side from timing out the connection request.  The\r
+       <a href="#robo87">ib_cm_mra</a> routine should be invoked if the user requires substantial\r
+       processing time to process the connection request reply.\r
+\r
+       If a reply is not received within the specified timeout period,\r
+       this callback will be invoked with the status set to IB_CM_TIMEOUT.  Users\r
+       may call <a href="#robo90">ib_cm_rej</a> to notify the remote side that the connection request\r
+       is being rejected due to a timeout.\r
+\r
+       In the kernel, this callback is typically invoked from within a tasklet,\r
+       depending on the implementation of the verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo96">ib_cm_req</a>, <a href="#robo85">ib_cm_listen</a>, <a href="#robo93">ib_cm_rep</a>, <a href="#robo90">ib_cm_rej</a>, <a href="#robo87">ib_cm_mra</a>, <a href="#robo90">ib_cm_rej</a>,\r
+       <a href="#robo94">ib_cm_rep_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo174">[Functions]<a name="Access20Layer2fib5fpfn5fcm5freq5fcb5ft">\r
+Access Layer/ib_pfn_cm_req_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_cm_req_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a connection\r
+       request message.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_cm_req_cb_t</strong>)(\r
+        IN                              <a href="#robo97">ib_cm_req_rec_t</a>                         *p_cm_req_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_cm_req_rec\r
+               [in] Connection request information returned to the user, indicating\r
+               the parameters for the connection.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This callback is invoked to notify the user of a connection request.  This\r
+       routine is invoked for peer to peer connection request calls to <a href="#robo96">ib_cm_req</a>\r
+       and for calls to <a href="#robo85">ib_cm_listen</a>.  Users must call <a href="#robo93">ib_cm_rep</a> to accept the\r
+       connection or <a href="#robo90">ib_cm_rej</a> to reject the connection from the callback.\r
+\r
+       Users may also call <a href="#robo87">ib_cm_mra</a> to acknowledge the connection request and\r
+       prevent the remote side from timing out the connection request.  The\r
+       <a href="#robo87">ib_cm_mra</a> routine should be invoked if the user requires substantial\r
+       processing time to process the connection request.\r
+\r
+       In the kernel, this callback is typically invoked from within a tasklet,\r
+       depending on the implementation of the verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo96">ib_cm_req</a>, <a href="#robo85">ib_cm_listen</a>, <a href="#robo93">ib_cm_rep</a>, <a href="#robo87">ib_cm_mra</a>, <a href="#robo90">ib_cm_rej</a>, <a href="#robo97">ib_cm_req_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo175">[Functions]<a name="Access20Layer2fib5fpfn5fcm5frtu5fcb5ft">\r
+Access Layer/ib_pfn_cm_rtu_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_cm_rtu_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a connection\r
+       ready to use message.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_cm_rtu_cb_t</strong>)(\r
+        IN                              <a href="#robo100">ib_cm_rtu_rec_t</a>                         *p_cm_rtu_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_cm_rtu_rec\r
+               [in] Connection ready to use information returned to the user.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This callback is invoked to notify the user that a connection is ready\r
+       to use.  This routine is invoked after calling <a href="#robo93">ib_cm_rep</a>.  If a ready to\r
+       use message is not received within the specified timeout period, this\r
+       callback will be invoked with the status set to IB_CM_TIMEOUT.\r
+\r
+       This callback will be invoked before a user is notified of any completions\r
+       that has occurred on the associated queue pair.\r
+\r
+       In the kernel, this callback is typically invoked from within a tasklet,\r
+       depending on the implementation of the verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo93">ib_cm_rep</a>, <a href="#robo100">ib_cm_rtu_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo176">[Functions]<a name="Access20Layer2fib5fpfn5fcomp5fcb5ft">\r
+Access Layer/ib_pfn_comp_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_comp_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Completion callback provided by a client.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_comp_cb_t</strong>)(\r
+        IN              const   ib_cq_handle_t                          h_cq,\r
+        IN                              void                                            *cq_context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Handle for the completion queue on which the completion occurred.\r
+\r
+       cq_context\r
+               [in] User-specified context for the completion queue on which the\r
+               completion occurred.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is invoked upon completion of a work request on a queue pair\r
+       associated with the completion queue.  The context associated with the\r
+       completion queue on which the completion occurred is return to the client\r
+       through the callback.\r
+\r
+       In the kernel, this callback is usually invoked using a tasklet, dependent\r
+       on the implementation of the underlying verbs provider driver.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo177">[Functions]<a name="Access20Layer2fib5fpfn5fdestroy5fcb5ft">\r
+Access Layer/ib_pfn_destroy_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_destroy_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Asynchronous callback invoked after a resource has been successfully\r
+       destroyed.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_destroy_cb_t</strong>)(\r
+        IN                              void                                            *context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       context\r
+               [in] User-specified context associated with the resource being\r
+               destroyed.  The context for the resource is usually set during the\r
+               object's creation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This callback notifies a client that a resource has been successfully\r
+       destroyed.  It is used to indicate that all pending callbacks associated\r
+       with the resource have completed, and no additional events will be\r
+       generated for that resource.\r
+\r
+       This callback is invoked within a system thread context in the kernel.\r
+\r
+       If the user specifies <a href="#robo256">ib_sync_destroy</a> as the asynchronous callback, then\r
+       the object being destroyed will be destroyed synchronously.  This may \r
+       result in the calling thread blocking while outstanding callbacks complete.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo256">ib_sync_destroy</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo178">[Functions]<a name="Access20Layer2fib5fpfn5fevent5fcb5ft">\r
+Access Layer/ib_pfn_event_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_event_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after an asynchronous event\r
+       has occurred on an allocated resource.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_event_cb_t</strong>)(\r
+        IN                              <a href="#robo55">ib_async_event_rec_t</a>            *p_event_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_event_rec\r
+               [in] Information returned to the user, indicating the type of\r
+               event and the associated user context.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This callback is invoked within a system thread context in the kernel.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo55">ib_async_event_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo179">[Functions]<a name="Access20Layer2fib5fpfn5flisten5ferr5fcb5ft">\r
+Access Layer/ib_pfn_listen_err_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_listen_err_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after an error has occurred on\r
+       a listen request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_listen_err_cb_t</strong>)(\r
+        IN                              <a href="#robo146">ib_listen_err_rec_t</a>                     *p_listen_err_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_listen_err_rec\r
+               [in] Error information returned to the user, indicating the reason\r
+               for the error and associated context information.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This callback is invoked within a system thread context in the kernel.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       p_listen_err_rec\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo180">[Functions]<a name="Access20Layer2fib5fpfn5fmad5fcomp5fcb5ft">\r
+Access Layer/ib_pfn_mad_comp_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_mad_comp_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User-defined callback used to notify the user of a completion for a\r
+       sent or received datagram.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_mad_comp_cb_t</strong>)(\r
+        IN              const   ib_mad_svc_handle_t                     h_mad_svc,\r
+        IN                              void                                            *mad_svc_context,\r
+        IN                              <a href="#robo150">ib_mad_element_t</a>                        *p_mad_element );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mad_svc\r
+               [in] Handle to the MAD service on which the completion occured.\r
+\r
+       mad_svc_context\r
+               [in] User-defined context information associated with the MAD service\r
+               on which the completion occurred.\r
+\r
+       p_mad_element\r
+               [in] References information on the completed MAD request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function is invoked upon completion of a sent or receive MAD.\r
+       It is separate from the normal completion callbacks in order to allow\r
+       the access layer to perform post processing on the MAD, such as\r
+       segmentation and reassembly, and retransmissions if a response was\r
+       expected.\r
+\r
+       The mad element returned through this call should be returned to its MAD\r
+       pool after completion processing on the MAD has concluded.  Completed\r
+       receive MAD elements should not be reposted to the receive queue of a\r
+       MAD QP.\r
+\r
+       In the kernel, this callback is typically invoked from within a\r
+       tasklet, depending on the implementation of the verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo247">ib_send_mad</a>, <a href="#robo228">ib_reg_mad_svc</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo181">[Functions]<a name="Access20Layer2fib5fpfn5fmcast5fcb5ft">\r
+Access Layer/ib_pfn_mcast_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_mcast_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User-defined callback invoked on completion of a multicast join request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_mcast_cb_t</strong>)(\r
+        IN                              <a href="#robo153">ib_mcast_rec_t</a>                          *p_mcast_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_mcast_rec\r
+               [in] References the result of the join operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The callback is used to notify a client of the result of a multicast\r
+       join request.\r
+\r
+       This callback is invoked within a system thread context in the kernel.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo142">ib_join_mcast</a>, <a href="#robo153">ib_mcast_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo182">[Functions]<a name="Access20Layer2fib5fpfn5fpnp5fcb5ft">\r
+Access Layer/ib_pfn_pnp_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_pnp_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User-defined callback that is invoked to notify a client of the addition\r
+       or removal of a channel adapter, a port up or down event, port changes,\r
+       and the assignment of an I/O controller to a local port.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API * __ptr64 <strong>ib_pfn_pnp_cb_t</strong>)(\r
+        IN                              <a href="#robo196">ib_pnp_rec_t</a>                            *p_pnp_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pnp_rec\r
+               [in] A reference to a plug and play record.  The plug and play\r
+               record contains details about the type of local event that has\r
+               occurred, along with the relevant device information.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               Indicates to the PnP manager that the callback client requires it\r
+               to maintain a context for this event.\r
+\r
+       Other\r
+               Indicates to the PnP manager that the callback client does not need\r
+               a context for this event.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The callback is used to notify users of local events that have occurred\r
+       on a given channel adapter.  Information about the type of event that\r
+       occurred along with the associated device is returned to the user through\r
+       the p_pnp_rec parameter.\r
+\r
+       Users register for plug and play changes by requesting notification from\r
+       the access layer.  Users may register for notifications either by directly\r
+       invoking the appropriate function in the access layer, or indirectly by\r
+       adding the necessary registration data to the access layer device file.\r
+\r
+       This callback is invoked from within a system thread context.\r
+\r
+       If the callback returns a status other than IB_SUCCESS, no further\r
+       callback for related events will be delivered.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo196">ib_pnp_rec_t</a>, <a href="#robo231">ib_reg_pnp</a>, <a href="#robo113">ib_dereg_pnp</a>, <a href="#robo239">ib_reject_ioc</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo183">[Functions]<a name="Access20Layer2fib5fpfn5fquery5fcb5ft">\r
+Access Layer/ib_pfn_query_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_query_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User-defined callback invoked on completion of a subnet administrator\r
+       query.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_query_cb_t</strong>)(\r
+        IN                              <a href="#robo219">ib_query_rec_t</a>                          *p_query_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_query_rec\r
+               [in] This is a reference to a structure containing the result of the\r
+               query.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine is invoked to notify a client of the result of a subnet\r
+       administration query.  The p_query_rec parameter references the result\r
+       of the query and, in the case of a successful query, any information\r
+       returned by the subnet administrator.\r
+\r
+       In the kernel, this callback is usually invoked using a tasklet, dependent\r
+       on the implementation of the underlying verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo219">ib_query_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo184">[Functions]<a name="Access20Layer2fib5fpfn5freg5fsvc5fcb5ft">\r
+Access Layer/ib_pfn_reg_svc_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_reg_svc_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User-defined callback that is invoked to notify a client of the result\r
+       of a service registration attempt.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_reg_svc_cb_t</strong>)(\r
+        IN                              <a href="#robo235">ib_reg_svc_rec_t</a>                        *p_reg_svc_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_reg_svc_rec\r
+               [in] References the result of the service registration attempt.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The callback is used to notify a client of the result of a service\r
+       registration attempt with the subnet administrator.\r
+\r
+       In the kernel, this callback is usually invoked using a tasklet, dependent\r
+       on the implementation of the underlying verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo234">ib_reg_svc</a>, <a href="#robo235">ib_reg_svc_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo185">[Functions]<a name="Access20Layer2fib5fpfn5freport5fcb5ft">\r
+Access Layer/ib_pfn_report_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_report_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User-defined callback that is invoked to notify a client of an event\r
+       that has occurred on the fabric.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_report_cb_t</strong>)(\r
+        IN                              <a href="#robo242">ib_report_rec_t</a>                         *p_report_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_report_rec\r
+               [in] A reference to an event report.  The report contains\r
+               details about the type of event that has occurred, along with the\r
+               relevant device information.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The callback is used to notify users of remote events that have been seen\r
+       by a specified class manager.  Information about the type of event that\r
+       occurred along with the associated device is returned to the user through\r
+       the p_report_rec parameter.\r
+\r
+       Users register for device changes by subscribing with a class manager.\r
+       Users may subscribe for events either by directly invoking the\r
+       appropriate function in the access layer, or indirectly by adding the\r
+       necessary registration data to the access layer device file.\r
+\r
+       This callback is invoked from within a system thread context.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo242">ib_report_rec_t</a>, <a href="#robo255">ib_subscribe</a>, <a href="#robo257">ib_unsubscribe</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo186">[Functions]<a name="Access20Layer2fib5fpfn5fsub5fcb5ft">\r
+Access Layer/ib_pfn_sub_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pfn_sub_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User-defined callback invoked on completion of a subscription request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API * __ptr64 <strong>ib_pfn_sub_cb_t</strong>)(\r
+        IN                              <a href="#robo253">ib_sub_rec_t</a>                            *p_sub_rec );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_sub_rec\r
+               [in] This is a reference to a structure containing the result of the\r
+               subscription request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine is invoked to notify a client of the result of a\r
+       subscription request with a class manager.  If the subscription request\r
+       was successful, the client will receive future notifications of the\r
+       subscribed event from the class manager.\r
+\r
+       This callback will always be invoked before a client receives information\r
+       reported on a subscribed event that has occurred.\r
+\r
+       In the kernel, this callback is usually invoked using a tasklet, dependent\r
+       on the implementation of the underlying verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo255">ib_subscribe</a>, <a href="#robo253">ib_sub_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo189">[Structures]<a name="Access20Layer2fib5fpnp5fca5frec5ft">\r
+Access Layer/ib_pnp_ca_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pnp_ca_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Notification information used to describe local channel adapter events.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_ca_rec\r
+{\r
+        <a href="#robo196">ib_pnp_rec_t</a>                            pnp_rec;\r
+        <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>* __ptr64           p_ca_attr;\r
+\r
+}       <strong>ib_pnp_ca_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pnp_rec\r
+               Structure describing the plug and play event being reported.\r
+\r
+       p_ca_attr\r
+               Attributes of the channel adapter that has experienced the event.\r
+               NULL for IB_PNP_CA_REMOVE, IB_PNP_PORT_REMOVE, and IB_PNP_IOC_REMOVE\r
+               events.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is returned to the user to notify them of the addition\r
+       or the removal of a channel adapter.\r
+\r
+       The context field is NULL unless a context value has already been set\r
+       by the user.\r
+\r
+       Context values can be changed by updating the appropriate field\r
+       and will be take effect once the notification callback returns.\r
+\r
+       Once a device has been removed, all context associated with that device\r
+       is lost.\r
+\r
+       Recipients of CA-related PnP events should cast the <a href="#robo196">ib_pnp_rec_t</a> structure\r
+       returned in the PnP callback to this type to access CA-specific information.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo163">ib_open_al</a>, <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>, <a href="#robo231">ib_reg_pnp</a>, <a href="#robo113">ib_dereg_pnp</a>, <a href="#robo182">ib_pfn_pnp_cb_t</a>,\r
+       ib_ioc_info_t, <a href="#robo239">ib_reject_ioc</a>, <a href="#robo191">ib_pnp_event_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo190">[Definitions]<a name="Access20Layer2fib5fpnp5fclass5ft">\r
+Access Layer/ib_pnp_class_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pnp_class_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Specifies the class of plug and play events that are being subscribed for.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#define IB_PNP_CA                                               0x00000001\r
+#define IB_PNP_PORT                                             0x00000002\r
+#define IB_PNP_IOU                                              0x00000004\r
+#define IB_PNP_IOC                                              0x00000008\r
+\r
+#define IB_PNP_FLAG_REG_SYNC                    0x40000000\r
+#define IB_PNP_FLAG_REG_COMPLETE                0x80000000\r
+#define IB_PNP_FLAG_MASK                                0xF0000000\r
+#define IB_PNP_CLASS_MASK                               0x000000FF\r
+\r
+typedef uint32_t        <strong>ib_pnp_class_t</strong>;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IB_PNP_CA\r
+               Value used to register for local channel adapter events.  These\r
+                events include the addition or removal of a local channel adapter.\r
+\r
+       IB_PNP_PORT\r
+               Value used to register for local port events.  These events include\r
+               local port up or down events and port LID or Pkey changes.\r
+\r
+       IB_PNP_IOU\r
+               Value used to register for I/O unit PnP events.  I/O unit events\r
+               include notifications of I/O unit assignment to and dissociation from\r
+               the local host.\r
+\r
+       IB_PNP_IOC\r
+               Value used to register for an I/O controller PnP event.  I/O controller\r
+               events include notification of an I/O controller assignment to a local\r
+               port and indication that an I/O controller dissociation has occurred.\r
+\r
+       IB_PNP_FLAG_REG_SYNC\r
+               Flag that is ORed with the PnP Class to control behavior of the\r
+               ib_pnp_reg call.  When set, ib_pnp_reg returns after client has\r
+               received all events for the current state of the system.\r
+\r
+       IB_PNP_FLAG_REG_COMPLETE\r
+               Flag that is ORed with the PnP Class to control whether an event\r
+               is generated to indicate that a client has received all events for the\r
+               current state of the system.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       When registering for PnP notification, a client specifies the class of\r
+       local events that the client wishes to be notified of.  For example to\r
+       request notification of events on a port, a client would use IB_PNP_PORT.\r
+       To be notified of the assignment of an I/O controller, a client would use\r
+       IB_PNP_IOC.\r
+\r
+       The PnP APIs do not support registration for multiple event classes at\r
+       a time.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo182">ib_pfn_pnp_cb_t</a>, <a href="#robo185">ib_pfn_report_cb_t</a>, <a href="#robo196">ib_pnp_rec_t</a>, <a href="#robo191">ib_pnp_event_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo191">[Definitions]<a name="Access20Layer2fib5fpnp5fevent5ft">\r
+Access Layer/ib_pnp_event_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pnp_event_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicates the type of plug and play event that has occurred.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#define IB_PNP_EVENT_PATH                               0x00000800\r
+#define IB_PNP_EVENT_ADD                                0x00001000\r
+#define IB_PNP_EVENT_REMOVE                             0x00002000\r
+#define IB_PNP_EVENT_CHANGE                             0x00004000\r
+#define IB_PNP_EVENT_INIT                               0x00008000\r
+#define IB_PNP_EVENT_ARMED                              0x00010000\r
+#define IB_PNP_EVENT_ACTIVE                             0x00020000\r
+#define IB_PNP_EVENT_DOWN                               0x00040000\r
+#define IB_PNP_EVENT_PKEY                               0x00080000\r
+#define IB_PNP_EVENT_SM                                 0x00100000\r
+#define IB_PNP_EVENT_GID                                0x00200000\r
+#define IB_PNP_EVENT_LID                                0x00400000\r
+#define IB_PNP_EVENT_SUBNET                             0x00800000\r
+\r
+#define IB_PNP_CA_ADD                                   (IB_PNP_CA | IB_PNP_EVENT_ADD)\r
+#define IB_PNP_CA_REMOVE                                (IB_PNP_CA | IB_PNP_EVENT_REMOVE)\r
+\r
+#define IB_PNP_PORT_ADD                                 (IB_PNP_PORT | IB_PNP_EVENT_ADD)\r
+#define IB_PNP_PORT_REMOVE                              (IB_PNP_PORT | IB_PNP_EVENT_REMOVE)\r
+#define IB_PNP_PORT_INIT                                (IB_PNP_PORT | IB_PNP_EVENT_INIT)\r
+#define IB_PNP_PORT_ARMED                               (IB_PNP_PORT | IB_PNP_EVENT_ARMED)\r
+#define IB_PNP_PORT_ACTIVE                              (IB_PNP_PORT | IB_PNP_EVENT_ACTIVE)\r
+#define IB_PNP_PORT_DOWN                                (IB_PNP_PORT | IB_PNP_EVENT_DOWN)\r
+#define IB_PNP_PKEY_CHANGE                              (IB_PNP_PORT | IB_PNP_EVENT_PKEY)\r
+#define IB_PNP_SM_CHANGE                                (IB_PNP_PORT | IB_PNP_EVENT_SM)\r
+#define IB_PNP_GID_CHANGE                               (IB_PNP_PORT | IB_PNP_EVENT_GID)\r
+#define IB_PNP_LID_CHANGE                               (IB_PNP_PORT | IB_PNP_EVENT_LID)\r
+#define IB_PNP_SUBNET_TIMEOUT_CHANGE    (IB_PNP_PORT | IB_PNP_EVENT_SUBNET)\r
+\r
+#define IB_PNP_IOU_ADD                                  (IB_PNP_IOU | IB_PNP_EVENT_ADD)\r
+#define IB_PNP_IOU_REMOVE                               (IB_PNP_IOU | IB_PNP_EVENT_REMOVE)\r
+#define IB_PNP_IOC_ADD                                  (IB_PNP_IOC | IB_PNP_EVENT_ADD)\r
+#define IB_PNP_IOC_REMOVE                               (IB_PNP_IOC | IB_PNP_EVENT_REMOVE)\r
+#define IB_PNP_IOC_PATH_ADD                             (IB_PNP_IOC | IB_PNP_EVENT_PATH | \\r
+                                                                                IB_PNP_EVENT_ADD)\r
+#define IB_PNP_IOC_PATH_REMOVE                  (IB_PNP_IOC | IB_PNP_EVENT_PATH | \\r
+                                                                                IB_PNP_EVENT_REMOVE)\r
+\r
+#define IB_PNP_REG_COMPLETE                             IB_PNP_FLAG_REG_COMPLETE\r
+\r
+typedef uint32_t        <strong>ib_pnp_event_t</strong>;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IB_PNP_CA_ADD\r
+               Indicates that a new channel adapter has been added.\r
+\r
+       IB_PNP_CA_REMOVE\r
+               Indicates that a channel adapter has been removed.\r
+\r
+       IB_PNP_PORT_ADD\r
+               Indicates that a new port has been added.  This callback will always\r
+               be followed by a callback to indicate the actual port state to allow\r
+               clients to use the PnP callbacks to drive their state machine.\r
+\r
+       IB_PNP_PORT_REMOVE\r
+               Indicates that a port has been removed.\r
+               A CA remove event will trigger this event first.\r
+\r
+       IB_PNP_PORT_INIT\r
+               Indicates that a port is in the IB_LINK_INIT state.\r
+\r
+       IB_PNP_PORT_ARMED\r
+               Indicates that a port is in the IB_LINK_ARMED state.\r
+\r
+       IB_PNP_PORT_ACTIVE\r
+               Indicates that a port is in the IB_LINK_ACTIVE state.\r
+\r
+       IB_PNP_PORT_DOWN\r
+               Indicates that a port down event has occurred.\r
+\r
+       IB_PNP_PKEY_CHANGE\r
+               Indicates that port Pkey change has ocurred.\r
+\r
+       IB_PNP_SM_CHANGE\r
+               Indicates that the SM assignment for a port has changed.\r
+\r
+       IB_PNP_GID_CHANGE\r
+               Indicates that the GID assignment for a port has changed.\r
+\r
+       IB_PNP_LID_CHANGE\r
+               Indicates that the LID or LMC assignment for a port has changed.\r
+\r
+       IB_PNP_SUBNET_TIMEOUT_CHANGE\r
+               Indicates that the subnet timeout assignment for a port has changed.\r
+\r
+       IB_PNP_IOU_ADD\r
+               Indicates that an I/O unit assignment has occured.\r
+\r
+       IB_PNP_IOU_REMOVE\r
+               Indicates that an I/O unit disassociation has occured.\r
+\r
+       IB_PNP_IOC_ADD\r
+               Indicates that an I/O controller assignment has occurred.\r
+\r
+       IB_PNP_IOC_REMOVE\r
+               Indicates that an I/O controller dissociation has occurred.\r
+               A port down event will trigger this event first.\r
+\r
+       IB_PNP_IOC_PATH_ADD\r
+               Indicates that a new path to an I/O controller is available.\r
+\r
+       IB_PNP_IOC_PATH_REMOVE\r
+               Indiactes that a path to an I/O controller is no longer avaialble.\r
+\r
+       IB_PNP_REG_COMPLETE\r
+               Indicates that all events associated with a <a href="#robo231">ib_reg_pnp</a> call have been\r
+               reported to the user.  The user's state of the system is now in\r
+               sync with that of the access layer.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>               The Access Layer maintains a queue of client PnP registrations.\r
+               Using this queue, PnP events are reported to clients in a specific\r
+               order.  CA add, port add, and IOC add events are reported from the\r
+               head of the queue, while CA remove, port remove, and IOC remove events\r
+               are reported from the tail.  Clients are responsible for performing\r
+               registrations in the proper sequence to ensure that PnP event\r
+               notifiations occur in the desired order.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo182">ib_pfn_pnp_cb_t</a>, <a href="#robo185">ib_pfn_report_cb_t</a>, <a href="#robo196">ib_pnp_rec_t</a>, <a href="#robo190">ib_pnp_class_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo192">[Structures]<a name="Access20Layer2fib5fpnp5fioc5fpath5frec5ft">\r
+Access Layer/ib_pnp_ioc_path_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pnp_ioc_path_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Notification information used to describe local channel adapter, port,\r
+       and I/O controller events.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_ioc_path_rec\r
+{\r
+        <a href="#robo196">ib_pnp_rec_t</a>                            pnp_rec;\r
+        net64_t                                         ca_guid;\r
+        net64_t                                         port_guid;\r
+        <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>                           path;\r
+\r
+}       <strong>ib_pnp_ioc_path_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pnp_rec\r
+               Structure describing the plug and play event being reported.\r
+\r
+       ca_guid\r
+               GUID of the local HCA through which the I/O controller is accessible.\r
+               Valid only for IB_PNP_IOC_PATH_ADD and IB_PNP_IOC_PATH_REMOVE events.\r
+\r
+       port_guid\r
+               GUID of the local HCA port through which the I/O controller is\r
+               accessible.  Valid only for IB_PNP_IOC_PATH_ADD and\r
+               IB_PNP_IOC_PATH_REMOVE events.\r
+\r
+       p_path\r
+               Path record that provides connectivity with a given I/O controller.\r
+               Valid only for IB_PNP_IOC_PATH_ADD and IB_PNP_IOC_PATH_REMOVE events.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is returned to the user to notify them of the addition\r
+       and removal of a path to an I/O controller.  I/O controller path\r
+       notifications are only delivered with respect to a previously reported\r
+       I/O controller.\r
+\r
+       The context field is NULL unless a context value has already been set\r
+       by the user.\r
+\r
+       Context values can be changed by updating the appropriate field\r
+       and will be take effect once the notification callback returns.\r
+\r
+       Once a device has been removed, all context associated with that device\r
+       is lost.  Context is maintained between port down and subsequent port up\r
+       events provided that the channel adapter is not removed.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo163">ib_open_al</a>, <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>, <a href="#robo231">ib_reg_pnp</a>, <a href="#robo113">ib_dereg_pnp</a>, <a href="#robo182">ib_pfn_pnp_cb_t</a>,\r
+       ib_ioc_info_t, <a href="#robo239">ib_reject_ioc</a>, <a href="#robo191">ib_pnp_event_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo193">[Structures]<a name="Access20Layer2fib5fpnp5fioc5frec5ft">\r
+Access Layer/ib_pnp_ioc_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pnp_ioc_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Notification information used to describe local channel adapter, port,\r
+       and I/O controller events.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_ioc_rec\r
+{\r
+        <a href="#robo196">ib_pnp_rec_t</a>                            pnp_rec;\r
+        net64_t                                         ca_guid;\r
+        ib_ioc_info_t                           info;\r
+        <a href="./ib_types_h.html#robo968">ib_svc_entry_t</a>                          svc_entry_array[1];\r
+\r
+}       <strong>ib_pnp_ioc_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pnp_rec\r
+               Structure describing the plug and play event being reported.\r
+\r
+       ca_guid\r
+               GUID of the local HCA through which the I/O controller is accessible.\r
+               Valid only for IB_PNP_IOC_ADD events.\r
+\r
+       p_ioc_info\r
+               The I/O controller information for an assigned controller, including\r
+               information for the I/O unit.  Valid only for IB_PNP_IOC_ADD events.\r
+\r
+       svc_entry_array\r
+               If an I/O controller is being reported, this will reference an array\r
+               of service entries associated with the I/O controller.  The actual\r
+               number of entries in the array may be determined by examining the\r
+               svc_entries field in the I/O controller profile.  Valid only for\r
+               IB_PNP_IOC_ADD events.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is returned to the user to notify them of the addition\r
+       and removal of an I/O controller.\r
+\r
+       The context field is NULL unless a context value has already been set\r
+       by the user.\r
+\r
+       Context values can be changed by updating the appropriate field\r
+       and will be take effect once the notification callback returns.\r
+\r
+       Once a device has been removed, all context associated with that device\r
+       is lost.  Context is maintained between port down and subsequent port up\r
+       events provided that the channel adapter is not removed.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo163">ib_open_al</a>, <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>, <a href="#robo231">ib_reg_pnp</a>, <a href="#robo113">ib_dereg_pnp</a>, <a href="#robo182">ib_pfn_pnp_cb_t</a>,\r
+       ib_ioc_info_t, <a href="#robo239">ib_reject_ioc</a>, <a href="#robo191">ib_pnp_event_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo194">[Structures]<a name="Access20Layer2fib5fpnp5fiou5frec5ft">\r
+Access Layer/ib_pnp_iou_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pnp_iou_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Notification information used to describe local I/O unit events.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_iou_rec\r
+{\r
+        <a href="#robo196">ib_pnp_rec_t</a>                            pnp_rec;\r
+        net64_t                                         ca_guid;\r
+        net64_t                                         chassis_guid;\r
+        uint8_t                                         slot;\r
+        net32_t                                         vend_id;\r
+        net16_t                                         dev_id;\r
+        net32_t                                         revision;\r
+        char                                            desc[IB_NODE_DESCRIPTION_SIZE + 1];\r
+\r
+}       <strong>ib_pnp_iou_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pnp_rec\r
+               Structure describing the plug and play event being reported.\r
+\r
+       ca_guid\r
+               GUID of the local HCA through which the I/O unit is accessible.  Valid\r
+               only for IB_PNP_IOU_ADD events.\r
+\r
+       chassis guid\r
+               GUID of the chassis in which an I/O unit is installed.  Valid only for\r
+               IB_PNP_IOU_ADD events.\r
+\r
+       slot\r
+               Chassis slot number in which an I/O unit is installed.  Valid only for\r
+               IB_PNP_IOU_ADD events.\r
+\r
+       guid\r
+               GUID of an I/O unit from which one or more I/O controllers are assigned\r
+               to this host.  Valid only for IB_PNP_IOU_ADD events.\r
+\r
+       vend_id\r
+               Vendor ID of an I/O unit from which one or more I/O controllers are\r
+               assigned to this host.  Valid only for IB_PNP_IOU_ADD events.\r
+\r
+       dev_id\r
+               Device ID of an I/O unit from which one or more I/O controllers are\r
+               assigned to this host.  Valid only for IB_PNP_IOU_ADD events.\r
+\r
+       revision\r
+               Revision of an I/O unit from which one or more I/O controllers are\r
+               assigned to this host.  Valid only for IB_PNP_IOU_ADD events.\r
+\r
+       desc\r
+               Node description string for an I/O unit from which one or more I/O\r
+               controllers are assigned to this host.  Valid only for IB_PNP_IOU_ADD\r
+               events.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is returned to the user to notify them of the addition\r
+       and removal of an I/O Unit.\r
+\r
+       The context field is NULL unless a context value has already been set\r
+       by the user.\r
+\r
+       Context values can be changed by updating the appropriate field\r
+       and will be take effect once the notification callback returns.\r
+\r
+       Once a device has been removed, all context associated with that device\r
+       is lost.  Context is maintained between port down and subsequent port up\r
+       events provided that the channel adapter is not removed.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo163">ib_open_al</a>, <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>, <a href="#robo231">ib_reg_pnp</a>, <a href="#robo113">ib_dereg_pnp</a>, <a href="#robo182">ib_pfn_pnp_cb_t</a>,\r
+       ib_ioc_info_t, <a href="#robo239">ib_reject_ioc</a>, <a href="#robo191">ib_pnp_event_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo195">[Structures]<a name="Access20Layer2fib5fpnp5fport5frec5ft">\r
+Access Layer/ib_pnp_port_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pnp_port_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Notification information used to describe local port events.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_port_rec\r
+{\r
+        <a href="#robo196">ib_pnp_rec_t</a>                            pnp_rec;\r
+        <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>* __ptr64           p_ca_attr;\r
+        <a href="./ib_types_h.html#robo200">ib_port_attr_t</a>* __ptr64         p_port_attr;\r
+\r
+}       <strong>ib_pnp_port_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pnp_rec\r
+               Structure describing the plug and play event being reported.\r
+\r
+       p_ca_attr\r
+               Attributes of the channel adapter that has experienced the event.\r
+               NULL for IB_PNP_CA_REMOVE, IB_PNP_PORT_REMOVE, and IB_PNP_IOC_REMOVE\r
+               events.\r
+\r
+       p_port_attr\r
+               Attributes of the port that has experienced the event.  Valid only\r
+               for IB_PNP_PORT_UP, IB_PNP_PORT_DOWN, IB_PNP_PKEY_CHANGE, and\r
+               IB_PNP_IOC_ADD events.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is returned to the user to notify them of port events.\r
+\r
+       The context field is NULL unless a context value has already been set\r
+       by the user.\r
+\r
+       Context values can be changed by updating the appropriate field\r
+       and will be take effect once the notification callback returns.\r
+\r
+       Once a device has been removed, all context associated with that device\r
+       is lost.  Context is maintained between port down and subsequent port up\r
+       events provided that the channel adapter is not removed.\r
+\r
+       Recipients of port related PnP events should cast the <a href="#robo196">ib_pnp_rec_t</a> structure\r
+       returned in the PnP callback to this type to access port specific information.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo163">ib_open_al</a>, <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>, <a href="#robo231">ib_reg_pnp</a>, <a href="#robo113">ib_dereg_pnp</a>, <a href="#robo182">ib_pfn_pnp_cb_t</a>,\r
+       ib_ioc_info_t, <a href="#robo239">ib_reject_ioc</a>, <a href="#robo191">ib_pnp_event_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo196">[Structures]<a name="Access20Layer2fib5fpnp5frec5ft">\r
+Access Layer/ib_pnp_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pnp_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Notification information used to describe local channel adapter, port,\r
+       and I/O controller events.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_rec\r
+{\r
+        <a href="#robo191">ib_pnp_event_t</a>                          pnp_event;\r
+\r
+        ib_pnp_handle_t                         h_pnp;\r
+        ib_pnp_handle_t                         h_ioc_event;\r
+\r
+        void* __ptr64                           pnp_context;\r
+        void* __ptr64                           context;\r
+\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      guid;\r
+\r
+}       <strong>ib_pnp_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pnp_event\r
+               Describes the type of plug and play event that is being reported.\r
+\r
+       h_pnp\r
+               A handle to the notification registration for which this PnP record\r
+               was generated.  This handle will match the handle returned through\r
+               an <a href="#robo231">ib_reg_pnp</a> call.  It is provided in case a PnP notification event\r
+               occurs before a client's call to <a href="#robo231">ib_reg_pnp</a> can return.  This handle\r
+               may be used to cancel further notification of PnP events.\r
+\r
+       h_ioc_event\r
+               A handle that is unique to an I/O controller assignment event.\r
+               This handle is used to reject the assignment of an I/O controller\r
+               from within the <a href="#robo182">ib_pfn_pnp_cb_t</a> callback.  Valid for IB_PNP_IOC_ADD\r
+               events only.\r
+\r
+       pnp_context\r
+               User-defined context information specified when registering for\r
+               notification of the event.  See the notes section below for\r
+               more details.\r
+\r
+       context\r
+               This field references a user-specified context on which the event\r
+               occurred.  See the notes section below for more details.\r
+\r
+       guid\r
+               The GUID of the adapter, port, IOU, or IOC for which\r
+               the PnP event occurred.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is returned to the user to notify them of: the addition\r
+       of a channel adapter, the removal of a channel adapter, a port up or down\r
+       event, a port pkey change, and I/O controller addition and removal events.\r
+\r
+       The context field is NULL unless a context value has already been set\r
+       by the user.\r
+\r
+       The context value can be changed by updating its field\r
+       and will take effect once the notification callback returns.\r
+\r
+       Once a device has been removed, all context associated with that device\r
+       is lost.  Context is maintained between port down and subsequent port up\r
+       events provided that the channel adapter is not removed.\r
+\r
+       I/O controller path notifications are only delivered with respect to a\r
+       previously reported I/O controller.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo163">ib_open_al</a>, <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>, <a href="#robo231">ib_reg_pnp</a>, <a href="#robo113">ib_dereg_pnp</a>, <a href="#robo182">ib_pfn_pnp_cb_t</a>,\r
+       ib_ioc_info_t, <a href="#robo239">ib_reject_ioc</a>, <a href="#robo191">ib_pnp_event_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo197">[Structures]<a name="Access20Layer2fib5fpnp5freq5ft">\r
+Access Layer/ib_pnp_req_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pnp_req_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information used to register for notification of local and I/O\r
+       controller assignment events.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_req\r
+{\r
+        <a href="#robo190">ib_pnp_class_t</a>                          pnp_class;\r
+        const void                                      *pnp_context;\r
+        <a href="#robo182">ib_pfn_pnp_cb_t</a>                         pfn_pnp_cb;\r
+\r
+}       <strong>ib_pnp_req_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pnp_class\r
+               Specifies the class of PnP events that the client wishes to be\r
+               notified of.\r
+\r
+       pnp_context\r
+               User-defined context information associated with this notification.\r
+               The context data is returned to the user as a part of their PnP\r
+               notification callback.\r
+\r
+       pfn_pnp_cb\r
+               User-defined callback function that is invoked to notify the user of\r
+               the occurrance of a plug and play event.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is used when requesting notification of local events from\r
+       the access layer.  The class of PnP events which to be notified of is\r
+       specified through the pnp_class field.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo190">ib_pnp_class_t</a>, <a href="#robo182">ib_pfn_pnp_cb_t</a>, <a href="#robo231">ib_reg_pnp</a>, <a href="#robo196">ib_pnp_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo198">[Functions]<a name="Access20Layer2fib5fpoll5fcq">\r
+Access Layer/ib_poll_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_poll_cq</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Checks a completion queue for completed work requests.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_poll_cq</strong>(\r
+        IN              const   ib_cq_handle_t                          h_cq,\r
+        IN      OUT                     <a href="./ib_types_h.html#robo260">ib_wc_t</a>** const                         pp_free_wclist,\r
+                OUT                     <a href="./ib_types_h.html#robo260">ib_wc_t</a>** const                         pp_done_wclist );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] A handle to a completion queue to check for completions on.\r
+\r
+       pp_free_wclist\r
+               [in/out] On input, a list of work completion structures provided by\r
+               the client.  These are used to report completed work requests through\r
+               the pp_done_wclist.\r
+\r
+               On output, this contains the list of work completions structures for\r
+               which no work completion was found.\r
+\r
+       pp_done_wclist\r
+               [out] A list of work completions retrieved from the completion queue.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The poll operation completed successfully.  If the work completion\r
+               structures referenced by the pp_free_wclist list is empty there are\r
+               potentially more completions available to retrieve.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the free or done work completion list was not provided.\r
+\r
+       IB_INVALID_CQ_HANDLE\r
+               The completion queue handle was invalid.\r
+\r
+       IB_NOT_FOUND\r
+               No completed work requests were removed from the completion queue.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine retrieves completed work requests from the specified\r
+       completion queue.  This call will retrieve all completed requests,\r
+       up to to the number of work completion structures referenced by the\r
+       pp_free_wclist.  Completed requests will be returned through the\r
+       pp_done_wclist parameter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo105">ib_create_cq</a>, <a href="#robo203">ib_post_send</a>, <a href="#robo202">ib_post_recv</a>, <a href="#robo58">ib_bind_mw</a>, <a href="./ib_types_h.html#robo260">ib_wc_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo202">[Functions]<a name="Access20Layer2fib5fpost5frecv">\r
+Access Layer/ib_post_recv</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_post_recv</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine posts a work request to the receive queue of a queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_post_recv</strong>(\r
+        IN              const   ib_qp_handle_t                          h_qp,\r
+        IN                              <a href="./ib_types_h.html#robo225">ib_recv_wr_t</a>* const                     p_recv_wr,\r
+                OUT                     <a href="./ib_types_h.html#robo225">ib_recv_wr_t</a>                            **pp_recv_failure OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] The queue pair to which this work request is being submitted.\r
+\r
+       p_recv_wr\r
+               [in] A reference to the head of the work request list.\r
+\r
+       pp_recv_failure\r
+               [out] If the post receive operation failed, this references the work\r
+               request in the p_recv_wr list where the first failure occurred.\r
+               This parameter may be NULL if only a single work request is being\r
+               posted to the QP.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               All work requests were successfully posted.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the receive work request list was not provided.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               The number of posted work requests exceed the current depth available\r
+               on the receive queue.\r
+\r
+       IB_INVALID_WR_TYPE\r
+               The work request type was invalid.\r
+\r
+       IB_INVALID_QP_STATE\r
+               The current queue pair state does not allow posting receives.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine posts a work request to the receive queue of a queue pair.\r
+       The type of work to perform is defined by the p_recv_wr parameter.  This\r
+       call is used to post data buffers to receive incoming message sends.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="./ib_types_h.html#robo225">ib_recv_wr_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo203">[Functions]<a name="Access20Layer2fib5fpost5fsend">\r
+Access Layer/ib_post_send</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_post_send</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine posts a work request to the send queue of a queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_post_send</strong>(\r
+        IN              const   ib_qp_handle_t                          h_qp,\r
+        IN                              <a href="./ib_types_h.html#robo249">ib_send_wr_t</a>* const                     p_send_wr,\r
+                OUT                     <a href="./ib_types_h.html#robo249">ib_send_wr_t</a>                            **pp_send_failure OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] The queue pair to which this work request is being submitted.\r
+\r
+       p_send_wr\r
+               [in] A reference to the head of the work request list.\r
+\r
+       pp_send_failure\r
+               [out] If the post send operation failed, this references the work\r
+               request in the p_send_wr list where the first failure occurred.\r
+               This parameter may be NULL if only a single work request is being\r
+               posted to the QP.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               All work requests were successfully posted.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the send work request list was not provided.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               The number of posted work requests exceed the current depth available\r
+               on the send queue.\r
+\r
+       IB_INVALID_WR_TYPE\r
+               The work request type was invalid.\r
+\r
+       IB_INVALID_QP_STATE\r
+               The current queue pair state does not allow posting sends.\r
+\r
+       IB_INVALID_MAX_SGE\r
+               The number of work request scatter gather elements exceed the queue\r
+               pair configuration.\r
+\r
+       IB_UNSUPPORTED\r
+               The requested operation is not supported by the channel adapter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine posts a work request to the send queue of a queue pair.\r
+       The type of work to perform is defined by the p_send_wr parameter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="./ib_types_h.html#robo249">ib_send_wr_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo204">[Functions]<a name="Access20Layer2fib5fput5fmad">\r
+Access Layer/ib_put_mad</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_put_mad</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a list of MAD elements to the pool.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_put_mad</strong>(\r
+        IN              const   <a href="#robo150">ib_mad_element_t</a>*                       p_mad_element_list );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_mad_element_list\r
+               [in] A pointer to a list of MAD elements.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The list of MAD elements was successfully returned to the MAD pool.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the MAD element list was not provided.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function returns a list of MAD elements to the pool.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo129">ib_get_mad</a>, <a href="#robo150">ib_mad_element_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo211">[Functions]<a name="Access20Layer2fib5fquery">\r
+Access Layer/ib_query</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_query</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Routine used to request an access layer provided query of the subnet\r
+       administrator.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_query</strong>(\r
+        IN              const   ib_al_handle_t                          h_al,\r
+        IN              const   <a href="#robo220">ib_query_req_t</a>* const           p_query_req,\r
+                OUT                     ib_query_handle_t* const        ph_query OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an open instance of the access layer.\r
+\r
+       p_query_req\r
+               [in] Specifies the type of query that the access layer should perform,\r
+               along with information needed to process the completed query.\r
+\r
+       ph_query\r
+               [out] Pointer to a query handle that can be used to cancel the query.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The subnet administrator query was initiated.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the query request was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to perform the operation.\r
+\r
+       IB_INVALID_GUID\r
+               No port was found for the port_guid specified in the request.\r
+\r
+       IB_ERROR\r
+               An invalid query_type was specified in the request.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to perform the operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine directs the access layer to initiate a query to the subnet\r
+       administrator for desired information.  The access layer will issue the\r
+       query, collect the results, and report them to the client through a user-\r
+       specified callback.  The access layer is responsible for retrying the\r
+       operation as directed by the client.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo63">ib_cancel_query</a>, <a href="#robo220">ib_query_req_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo212">[Functions]<a name="Access20Layer2fib5fquery5fav">\r
+Access Layer/ib_query_av</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_query_av</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the attributes of an address vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_query_av</strong>(\r
+        IN              const   ib_av_handle_t                          h_av,\r
+                OUT                     <a href="./ib_types_h.html#robo57">ib_av_attr_t</a>* const                     p_av_attr,\r
+                OUT                     ib_pd_handle_t* const           ph_pd );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_av\r
+               [in] A handle to an existing address vector.\r
+\r
+       p_av_attr\r
+               [out] Upon successful completion, the structure referenced by this\r
+               parameter contains the attributes of the specified address vector.\r
+\r
+       ph_pd\r
+               [out] Upon successful completion, this references a handle to the\r
+               protection domain associated with the address vector.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The attributes were returned successfully.\r
+\r
+       IB_INVALID_AV_HANDLE\r
+               The address vector handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the address vector attributes structure or protection\r
+               domain handle was not provided.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo104">ib_create_av</a>, <a href="#robo155">ib_modify_av</a>, <a href="#robo115">ib_destroy_av</a>, <a href="./ib_types_h.html#robo57">ib_av_attr_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo213">[Functions]<a name="Access20Layer2fib5fquery5fca">\r
+Access Layer/ib_query_ca</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_query_ca</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Queries the attributes of an opened channel adapter.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_query_ca</strong>(\r
+        IN              const   ib_ca_handle_t                          h_ca,\r
+                OUT                     <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>* const                     p_ca_attr OPTIONAL,\r
+        IN      OUT                     uint32_t* const                         p_size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] The handle to an open channel adapter.\r
+\r
+       p_ca_attr\r
+               [out] A reference to a buffer where the channel adapter attributes,\r
+               including port attribute information will be copied.  If this parameter\r
+               is NULL, then the required buffer size needed to return all of the CA\r
+               attribute information is returned through the p_size parameter.  The\r
+               <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a> structure for the specified channel adapter is stored\r
+               at the top of the buffer.\r
+\r
+       p_size\r
+               [in/out] On input, this references the size of the data buffer\r
+               referenced by the p_ca_attr parameter.\r
+\r
+               On output, the number of bytes used or needed to copy all CA\r
+               attribute information.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The attributes were returned successfully.\r
+\r
+       IB_INVALID_CA_HANDLE\r
+               The channel adapter handle was invalid.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               The size of the p_ca_attr buffer, specified through p_size, is\r
+               insufficient to store all of the CA attribute information.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the size was not provided.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine returns information about the specified channel adapter,\r
+       including port attributes.  The amount of information returned through\r
+       this call is variable sized.  Users may obtain the size of the data\r
+       buffer required to obtain the CA attributes by calling this function\r
+       with p_ca_attr set to NULL.  The access layer will then return the\r
+       necessary size in the variable referenced by the p_size parameter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo164">ib_open_ca</a>, <a href="#robo214">ib_query_ca_by_guid</a>, <a href="#robo156">ib_modify_ca</a>, <a href="#robo68">ib_close_ca</a>, <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo214">[Functions]<a name="Access20Layer2fib5fquery5fca5fby5fguid">\r
+Access Layer/ib_query_ca_by_guid</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_query_ca_by_guid</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Queries the attributes of an opened channel adapter.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_query_ca_by_guid</strong>(\r
+        IN              const   ib_al_handle_t                          h_al,\r
+        IN              const   <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      ca_guid,\r
+                OUT                     <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>* const                     p_ca_attr OPTIONAL,\r
+        IN      OUT                     uint32_t* const                         p_size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] The handle to an open instance of AL.\r
+\r
+       ca_guid\r
+               [in] The GUID of the channel adapter to query.\r
+\r
+       p_ca_attr\r
+               [out] A reference to a buffer where the channel adapter attributes,\r
+               including port attribute information will be copied.  If this parameter\r
+               is NULL, then the required buffer size needed to return all of the CA\r
+               attribute information is returned through the p_size parameter.  The\r
+               <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a> structure for the specified channel adapter is stored\r
+               at the top of the buffer.\r
+\r
+       p_size\r
+               [in/out] On input, this references the size of the data buffer\r
+               referenced by the p_ca_attr parameter.\r
+\r
+               On output, the number of bytes used or needed to copy all CA\r
+               attribute information.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The attributes were returned successfully.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_GUID\r
+               No channel adapter in the system was found for the specified ca_guid.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               The size of the p_ca_attr buffer, specified through p_size, is\r
+               insufficient to store all of the CA attribute information.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the size was not provided.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine returns information about the specified channel adapter,\r
+       including port attributes.  The amount of information returned through\r
+       this call is variable sized.  Users may obtain the size of the data\r
+       buffer required to obtain the CA attributes by calling this function\r
+       with p_ca_attr set to NULL.  The access layer will then return the\r
+       necessary size in the variable referenced by the p_size parameter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo164">ib_open_ca</a>, <a href="#robo213">ib_query_ca</a>, <a href="#robo156">ib_modify_ca</a>, <a href="#robo68">ib_close_ca</a>, <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo215">[Functions]<a name="Access20Layer2fib5fquery5fcq">\r
+Access Layer/ib_query_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_query_cq</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns information about the specified completion queue.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_query_cq</strong>(\r
+        IN              const   ib_cq_handle_t          h_cq,\r
+        OUT             uint32_t* const                         p_size );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] A handle to an existing completion queue.\r
+\r
+       p_size\r
+               [out] Upon successful completion of this call, contains the actual\r
+               size of the completion queue.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The completion queue was successfully queried.\r
+\r
+       IB_INVALID_CQ_HANDLE\r
+               The completion queue handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the completion queue size was not provided.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo105">ib_create_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo216">[Functions]<a name="Access20Layer2fib5fquery5fmr">\r
+Access Layer/ib_query_mr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_query_mr</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Query the current attributes of a memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_query_mr</strong>(\r
+        IN              const   ib_mr_handle_t                          h_mr,\r
+                OUT                     <a href="./ib_types_h.html#robo159">ib_mr_attr_t</a>* const                     p_mr_attr );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mr\r
+               [in] A handle to a registered memory region.\r
+\r
+       p_mr_attr\r
+               [out] A reference to a structure where the registered memory attributes\r
+               will be copied.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The memory region attributes were returned successfully.\r
+\r
+       IB_INVALID_MR_HANDLE\r
+               The memory region handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the memory region attributes was not provided.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine returns information about the specified registered memory\r
+       region.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo112">ib_dereg_mr</a>, <a href="#robo229">ib_reg_mem</a>, <a href="#robo232">ib_reg_shared</a>, <a href="./ib_types_h.html#robo159">ib_mr_attr_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo217">[Functions]<a name="Access20Layer2fib5fquery5fmw">\r
+Access Layer/ib_query_mw</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_query_mw</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Query the current attributes of a memory window.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_query_mw</strong>(\r
+        IN              const   ib_mw_handle_t                          h_mw,\r
+                OUT                     ib_pd_handle_t* const           ph_pd,\r
+                OUT                     net32_t* const                          p_rkey );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mw\r
+               [in] A handle to an existing memory window.\r
+\r
+       ph_pd\r
+               [out] Upon successful completion of this call, this will reference\r
+               the protection domain associated with this memory window.\r
+\r
+       p_rkey\r
+               [out] Upon successful completion of this call, this will reference\r
+               the current rkey associated with this memory window.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The memory window attributes were returned successfully.\r
+\r
+       IB_INVALID_MW_HANDLE\r
+               The memory window handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the protection domain handle or rkey was not provided.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine returns information about the specified memory window.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo108">ib_create_mw</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo218">[Functions]<a name="Access20Layer2fib5fquery5fqp">\r
+Access Layer/ib_query_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_query_qp</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Query the current attributes of the queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_query_qp</strong>(\r
+        IN              const   ib_qp_handle_t                          h_qp,\r
+                OUT                     <a href="./ib_types_h.html#robo205">ib_qp_attr_t</a>* const                     p_qp_attr );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] A handle to an existing queue pair.\r
+\r
+       p_qp_attr\r
+               [out] Upon successful completion of this call, the structure\r
+               referenced by this parameter contains the attributes of the specified\r
+               quere pair.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The queue pair attributes were returned successfully.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the queue pair attributes structure was not provided.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine returns information about the specified queue pair.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo109">ib_create_qp</a>, <a href="#robo158">ib_modify_qp</a>, <a href="./ib_types_h.html#robo205">ib_qp_attr_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo219">[Structures]<a name="Access20Layer2fib5fquery5frec5ft">\r
+Access Layer/ib_query_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_query_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Contains the results of a subnet administration query.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_query_rec\r
+{\r
+        const void* __ptr64                     query_context;\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        <a href="#robo221">ib_query_type_t</a>                         query_type;\r
+        uint32_t                                        result_cnt;\r
+        <a href="#robo150">ib_mad_element_t</a>* __ptr64       p_result_mad;\r
+\r
+}       <strong>ib_query_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       query_context\r
+               User-defined context information associated with the query through\r
+               the ib_reg_query call.\r
+\r
+       status\r
+               Indicates the success of the query operation.\r
+\r
+       query_type\r
+               Indicates the type of query for which the results are being returned.\r
+               This matches the query_type specified through the ib_reg_query call.\r
+\r
+       result_cnt\r
+               The number of result structures that were returned by the query.\r
+\r
+       p_result_mad\r
+               For queries returning IB_SUCCESS or IB_REMOTE_ERROR, this references\r
+               the MAD returned by the subnet administrator containing the list\r
+               of results or the returned error code.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       A query result structure is returned to a client through their\r
+       <a href="#robo183">ib_pfn_query_cb_t</a> routine to notify them of the results of a subnet\r
+       administration query.  If the query was successful or received an error\r
+       from the subnet administrator, p_result_mad will reference a MAD element\r
+       containing the results.  The MAD referenced by p_result_mad is owned by\r
+       the user and remains available even after their callback returns.  Users\r
+       must call <a href="#robo204">ib_put_mad</a>() to return the MAD element back to the access layer\r
+       when they are done accessing the results.\r
+\r
+       To retrieve individual result structures from the p_result_mad, users\r
+       may call <a href="#robo135">ib_get_query_result</a>().\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo211">ib_query</a>, <a href="#robo183">ib_pfn_query_cb_t</a>, <a href="./ib_types_h.html#robo49">ib_api_status_t</a>, <a href="#robo204">ib_put_mad</a>, <a href="#robo150">ib_mad_element_t</a>\r
+       ib_query_status_t, <a href="#robo221">ib_query_type_t</a>, <a href="#robo135">ib_get_query_result</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo220">[Structures]<a name="Access20Layer2fib5fquery5freq5ft">\r
+Access Layer/ib_query_req_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_query_req_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information used to request an access layer provided query of the subnet\r
+       administrator.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_query_req\r
+{\r
+        <a href="#robo221">ib_query_type_t</a>                         query_type;\r
+        const void* __ptr64                     p_query_input;\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      port_guid;\r
+\r
+        uint32_t                                        timeout_ms;\r
+        uint32_t                                        retry_cnt;\r
+        <a href="#robo47">ib_al_flags_t</a>                           flags;\r
+\r
+        const void* __ptr64                     query_context;\r
+        <a href="#robo183">ib_pfn_query_cb_t</a>                       pfn_query_cb;\r
+\r
+}       <strong>ib_query_req_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       query_type\r
+               Indicates the type of query that the access layer should perform.\r
+\r
+       p_query_input\r
+               A pointer to the input for the query.  The data referenced by this\r
+               structure is dependent on the type of query being requested and is\r
+               determined by the specified query_type.\r
+\r
+       port_guid\r
+               Directs the query to use the specified port.  The request will\r
+               contact the management entity reachable through the given port.\r
+\r
+       timeout_ms\r
+               Specifies the number of milliseconds to wait for a response for\r
+               this query until retrying or timing out the request.\r
+\r
+       retry_cnt\r
+               Specifies the number of times that the query will be retried before\r
+               failing the request.\r
+\r
+       flags\r
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to\r
+               process the called routine synchronously.\r
+\r
+       query_context\r
+               User-defined context information associated with this query.  The\r
+               context data is returned to the user as a part of their query\r
+               callback.\r
+\r
+       pfn_query_cb\r
+               A user-defined callback that is invoked upon completion of the query.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is used when requesting an access layer provided query\r
+       of the subnet administrator.  Clients specify the type of query through\r
+       the query_type field.  Based on the type of query, the p_query_input\r
+       field is set to reference the appropriate data structure.\r
+\r
+       The information referenced by the p_query_input field is one of the\r
+       following:\r
+\r
+               -- a NULL terminated service name\r
+               -- a service id\r
+               -- a single GUID\r
+               -- a pair of GUIDs specified through an <a href="#robo139">ib_guid_pair_t</a> structure\r
+               -- a pair of GIDs specified through an <a href="#robo138">ib_gid_pair_t</a> structure\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo221">ib_query_type_t</a>, <a href="#robo183">ib_pfn_query_cb_t</a>, <a href="#robo139">ib_guid_pair_t</a>,\r
+       <a href="#robo138">ib_gid_pair_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo221">[Definitions]<a name="Access20Layer2fib5fquery5ftype5ft">\r
+Access Layer/ib_query_type_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_query_type_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Abstracted queries supported by the access layer.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _ib_query_type\r
+{\r
+        IB_QUERY_USER_DEFINED,\r
+\r
+        IB_QUERY_ALL_SVC_RECS,\r
+        IB_QUERY_SVC_REC_BY_NAME,\r
+        IB_QUERY_SVC_REC_BY_ID,\r
+\r
+        IB_QUERY_CLASS_PORT_INFO,\r
+\r
+        IB_QUERY_NODE_REC_BY_NODE_GUID,\r
+        IB_QUERY_PORT_REC_BY_LID,\r
+\r
+        IB_QUERY_VLARB_BY_LID_PORT_BLOCK,\r
+        IB_QUERY_SLVL_BY_LID_AND_PORTS,\r
+\r
+        IB_QUERY_PATH_REC_BY_PORT_GUIDS,\r
+        IB_QUERY_PATH_REC_BY_GIDS,\r
+        IB_QUERY_PATH_REC_BY_LIDS,\r
+\r
+}       <strong>ib_query_type_t</strong>;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IB_QUERY_USER_DEFINED\r
+               Query the SA based on user-defined input.  Queries of this type\r
+               should reference an <a href="#robo258">ib_user_query_t</a> structure as input into the\r
+               query.\r
+\r
+       IB_QUERY_SVC_REC_BY_NAME\r
+               Query for service records based on the service name.  Queries of\r
+               this type should reference an ib_svc_name_t structure as input\r
+               into the query.\r
+\r
+       IB_QUERY_SVC_REC_BY_ID\r
+               Query for service records based on the service ID.  Queries of\r
+               this type should reference an <a href="./ib_types_h.html#robo895">ib_net64_t</a> value that indicates the\r
+               ID of the service being requested.\r
+\r
+       IB_QUERY_NODE_REC_BY_NODE_GUID\r
+               Query for node information based on the node's GUID.  Queries of\r
+               this type should reference an <a href="./ib_types_h.html#robo895">ib_net64_t</a> value that indicates the\r
+               GUID of the node being requested.\r
+\r
+       IB_QUERY_PORT_REC_BY_LID\r
+               Query for port information based on the port's base LID.  Queries of\r
+               this type should reference an <a href="./ib_types_h.html#robo893">ib_net16_t</a> value that indicates the\r
+               base LID of the port being requested.\r
+\r
+       IB_QUERY_PATH_REC_BY_PORT_GUIDS\r
+               Query for path records between the specified pair of port GUIDs.\r
+               Queries of this type should reference an <a href="#robo139">ib_guid_pair_t</a> structure\r
+               that indicates the GUIDs of the path being requested.\r
+\r
+       IB_QUERY_PATH_REC_BY_GIDS\r
+               Query for path records between the specified pair of port GIDs.\r
+               Queries of this type should reference an <a href="#robo138">ib_gid_pair_t</a> structure\r
+               that indicates the GIDs of the path being requested.\r
+\r
+       IB_QUERY_PATH_REC_BY_LIDS\r
+               Query for path records between the specified pair of port LIDs.\r
+               Queries of this type should reference an <a href="#robo145">ib_lid_pair_t</a> structure\r
+               that indicates the LIDs of the path being requested.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This enum is used to define abstracted queries provided by the access\r
+       layer.  Users may issue queries not listed here by sending MADs directly\r
+       to the subnet administrator or a class manager.  These queries are\r
+       intended to represent those most often used by clients.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo211">ib_query</a>, <a href="#robo220">ib_query_req_t</a>, <a href="#robo258">ib_user_query_t</a>, <a href="#robo138">ib_gid_pair_t</a>, <a href="#robo145">ib_lid_pair_t</a>\r
+       <a href="#robo139">ib_guid_pair_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo222">[Functions]<a name="Access20Layer2fib5frearm5fcq">\r
+Access Layer/ib_rearm_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_rearm_cq</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This indicates that the completion queue should notify the client when\r
+       the next completion is added.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_rearm_cq</strong>(\r
+        IN              const   ib_cq_handle_t                          h_cq,\r
+        IN              const   boolean_t                                       solicited );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Handle to the completion queue to rearm.\r
+\r
+       solicited\r
+               [in] A flag indicating whether the request is to generate a\r
+               notification on the next entry, if set to FALSE, or on the next\r
+               solicited entry being added to the completion queue, if set to TRUE.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The completion queue rearm request was registered successfully.\r
+\r
+       IB_INVALID_CQ_HANDLE\r
+               The completion queue handle was invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine instructs the channel interface to invoke the completion\r
+       handler when the next completion queue entry is added to this CQ.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo105">ib_create_cq</a>, <a href="#robo166">ib_peek_cq</a>, <a href="#robo198">ib_poll_cq</a>, <a href="#robo223">ib_rearm_n_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo223">[Functions]<a name="Access20Layer2fib5frearm5fn5fcq">\r
+Access Layer/ib_rearm_n_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_rearm_n_cq</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This indicates that the completion queue should notify the client when\r
+       the next N completions have been added to this CQ.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_rearm_n_cq</strong>(\r
+        IN              const   ib_cq_handle_t                          h_cq,\r
+        IN              const   uint32_t                                        n_cqes );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Handle to the completion queue to rearm.\r
+\r
+       n_cqes\r
+               [in] The number of completion queue entries to be added to the\r
+               completion queue before notifying the client.  This value must\r
+               greater than or equal to one and less than or equal to the size\r
+               of the completion queue.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The completion queue rearm request was registered successfully.\r
+\r
+       IB_INVALID_CQ_HANDLE\r
+               The completion queue handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               The requested number of completion queue entries was invalid.\r
+\r
+       IB_UNSUPPORTED\r
+               This operation is not supported by the channel adapter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine instructs the channel interface to invoke the completion\r
+       handler when the next N completions have been added to this CQ regardless\r
+       of the completion type (solicited or unsolicited).  Any CQ entries that\r
+       existed before the rearm is enabled will not result in a call to the\r
+       handler.  Support for this operation is optional by a channel adapter\r
+       vendor.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo105">ib_create_cq</a>, <a href="#robo166">ib_peek_cq</a>, <a href="#robo198">ib_poll_cq</a>, <a href="#robo222">ib_rearm_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo226">[Functions]<a name="Access20Layer2fib5freg5fioc">\r
+Access Layer/ib_reg_ioc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_reg_ioc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Registers an I/O controller with the local device manager, which will\r
+       export the controller to the fabric.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_reg_ioc</strong>(\r
+        IN              const   ib_ioc_handle_t                         h_ioc );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ioc\r
+               [in] A handle to the controller being registered.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The I/O controller was successfully registered.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to register the I/O controller.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the I/O\r
+               unit to register the I/O controller.\r
+\r
+       IB_INVALID_HANDLE\r
+               The I/O controller handle was invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine registers an I/O controller with the local device manager.\r
+       The device manager exports the controller to the fabric as part of an\r
+       I/O unit.  Typically, clients will call <a href="#robo46">ib_add_svc_entry</a> to add services\r
+       to the controller before registering it with the device manager.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo106">ib_create_ioc</a>, <a href="#robo117">ib_destroy_ioc</a>, <a href="#robo46">ib_add_svc_entry</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo227">[Functions]<a name="Access20Layer2fib5freg5fmad5fpool">\r
+Access Layer/ib_reg_mad_pool</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_reg_mad_pool</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Registers a MAD pool for use with a protection domain.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_reg_mad_pool</strong>(\r
+        IN              const   ib_pool_handle_t                        h_pool,\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+                OUT                     ib_pool_key_t* const            p_pool_key );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pool\r
+               [in] A handle to a MAD pool.\r
+\r
+       h_pd\r
+               [in] A handle to a protection domain.\r
+\r
+       p_pool_key\r
+               [out] A key associated with registering the MAD pool with the\r
+               protection domain.  This key is returned to the user and is used\r
+               when retrieving MADs from the pool.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The MAD pool was successfully registered with the protection domain.\r
+\r
+       IB_INVALID_HANDLE\r
+               The MAD pool handle was invalid.\r
+\r
+       IB_INVALID_PD_HANDLE\r
+               The protection domain handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the pool key was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to register the MAD pool.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to register the MAD pool.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This function registers a MAD pool with a protection domain.  After\r
+       successful completion of this call, the MAD elements of the associated\r
+       pool are usable on any queue pairs associated with the given protection\r
+       domain.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo107">ib_create_mad_pool</a>, <a href="#robo118">ib_destroy_mad_pool</a>, <a href="#robo111">ib_dereg_mad_pool</a>, <a href="#robo129">ib_get_mad</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo228">[Functions]<a name="Access20Layer2fib5freg5fmad5fsvc">\r
+Access Layer/ib_reg_mad_svc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_reg_mad_svc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Requests management datagram support for a specified class with a\r
+       queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_reg_mad_svc</strong>(\r
+        IN              const   ib_qp_handle_t                          h_qp,\r
+        IN              const   <a href="#robo151">ib_mad_svc_t</a>* const                     p_mad_svc,\r
+                OUT                     ib_mad_svc_handle_t* const      ph_mad_svc );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] A handle to queue pair.  The queue pair must have been created\r
+               as one of the following types: IB_QPT_QP0, IB_QPT_QP0_ALIAS,\r
+               IB_QPT_QP1, IB_QPT_QP1_ALIAS, or IB_QPT_MAD.\r
+\r
+       p_mad_svc\r
+               [in] A reference to the management class and methods supported by\r
+               this queue pair.\r
+\r
+       ph_mad_svc\r
+               [out] On successful completion of this call, this references a\r
+               handle to the newly created MAD service.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The queue pair was registered successfully.\r
+\r
+       IB_INVALID_QP_HANDLE\r
+               The queue pair handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               The queue pair handle was not created with the proper queue pair\r
+               type or a reference to the MAD service information or handle was\r
+               not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to register the queue pair.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine registers a queue pair as using a particular management\r
+       class.  This indicates that the access layer should perform additional\r
+       processing on MADs sent and received by this queue pair.  Queue pairs\r
+       registered for MAD support receive access layer SAR and retransmissions\r
+       services.  A queue pair may be registered for multiple management classes.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo109">ib_create_qp</a>, <a href="#robo151">ib_mad_svc_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo229">[Functions]<a name="Access20Layer2fib5freg5fmem">\r
+Access Layer/ib_reg_mem</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_reg_mem</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Registers a virtual memory region with a channel adapter.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_reg_mem</strong>(\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+        IN              const   <a href="./ib_types_h.html#robo160">ib_mr_create_t</a>* const           p_mr_create,\r
+                OUT                     net32_t* const                          p_lkey,\r
+                OUT                     net32_t* const                          p_rkey,\r
+                OUT                     ib_mr_handle_t* const           ph_mr );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] A handle to an existing protection domain that the memory\r
+               should be registered with.\r
+\r
+       p_mr_create\r
+               [in] Information describing the memory region to register.\r
+\r
+       p_lkey\r
+               [out] The local access key associated with this registered memory\r
+               region.\r
+\r
+       p_rkey\r
+               [out] A key that may be used by a remote end-point when performing\r
+               RDMA or atomic operations to this registered memory region.\r
+\r
+       ph_mr\r
+               [out] Upon successful completion of this call, this references a\r
+               handle to the registered memory region.  This handle is used when\r
+               performing data transfers and to deregister the memory.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The memory region was successfully registered.\r
+\r
+       IB_INVALID_PD_HANDLE\r
+               The protection domain to associate with the memory region was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the memory region information, lkey, rkey, or handle\r
+               was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to register the memory region.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to register the memory region.\r
+\r
+       IB_UNSUPPORTED\r
+               The requested access rights are not supported by the channel adapter.\r
+\r
+       IB_INVALID_PERMISSION\r
+               The requested access rights are invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine registers a virtual memory region with a channel adapter.\r
+       Memory must be registered before being used in a data transfer operation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo112">ib_dereg_mr</a>, <a href="#robo230">ib_reg_phys</a>, <a href="#robo232">ib_reg_shared</a>, <a href="./ib_types_h.html#robo160">ib_mr_create_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo230">[Functions]<a name="Access20Layer2fib5freg5fphys">\r
+Access Layer/ib_reg_phys</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_reg_phys</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Registers a physical memory region with a channel adapter.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_reg_phys</strong>(\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+        IN              const   <a href="./ib_types_h.html#robo187">ib_phys_create_t</a>* const         p_phys_create,\r
+        IN      OUT                     uint64_t* const                         p_vaddr,\r
+                OUT                     net32_t* const                          p_lkey,\r
+                OUT                     net32_t* const                          p_rkey,\r
+                OUT                     ib_mr_handle_t* const           ph_mr );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] A handle to an existing protection domain that the memory\r
+               should be registered with.\r
+\r
+       p_phys_create\r
+               [in] Information describing the memory region to register.\r
+\r
+       p_vaddr\r
+               [in/out] On input, references the requested virtual address for the\r
+               start of the physical region.  On output, references the actual\r
+               virtual address assigned to the registered region.\r
+\r
+       p_lkey\r
+               [out] The local access key associated with this registered memory\r
+               region.\r
+\r
+       p_rkey\r
+               [out] A key that may be used by a remote end-point when performing\r
+               RDMA or atomic operations to this registered memory region.\r
+\r
+       ph_mr\r
+               [out] Upon successful completion of this call, this references a\r
+               handle to the registered memory region.  This handle is used when\r
+               performing data transfers and to deregister the memory.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The physical memory region was successfully registered.\r
+\r
+       IB_INVALID_PD_HANDLE\r
+               The protection domain to associate with the physical memory region\r
+               was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the physical memory region information, virtual address,\r
+               lkey, rkey, or handle was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to register the physical memory region.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to register the physical memory region.\r
+\r
+       IB_UNSUPPORTED\r
+               The requested access rights are not supported by the channel adapter.\r
+\r
+       IB_INVALID_PERMISSION\r
+               The requested access rights are invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine registers an array of physical pages as a single virtually\r
+       contiguous region with a channel adapter.  Memory must be registered\r
+       before being used in a data transfer operation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo112">ib_dereg_mr</a>, <a href="#robo229">ib_reg_mem</a>, <a href="#robo232">ib_reg_shared</a>, <a href="./ib_types_h.html#robo187">ib_phys_create_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo231">[Functions]<a name="Access20Layer2fib5freg5fpnp">\r
+Access Layer/ib_reg_pnp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_reg_pnp</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Routine used to register for notification of local and I/O controller\r
+       assignment events.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_reg_pnp</strong>(\r
+        IN              const   ib_al_handle_t                          h_al,\r
+        IN              const   <a href="#robo197">ib_pnp_req_t</a>* const                     p_pnp_req,\r
+                OUT                     ib_pnp_handle_t* const          ph_pnp );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an open instance of the access layer.\r
+\r
+       p_pnp_req\r
+               [in] Specifies the type of events that the user wishes to be notified\r
+               of, along with information needed to process the completed query.\r
+\r
+       ph_pnp\r
+               [out] Upon successful completion of this call, this references a handle\r
+               to the PnP notification request.  This handle may be used to cancel the\r
+               notification registration.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The PnP registration was successful.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the PnP request information or handle was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to register for PnP notification.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine registers the calling client with the access layer for\r
+       notification of locally occurring events, or the assignment of I/O\r
+       controllers to a local device.  Once registered, a client will receive\r
+       notification, via a callback, that a given event has occurred on a\r
+       local device.  Clients may restrict the types of events and devices\r
+       that are reported.  The p_pnp_req parameter is used to indicate which\r
+       device events to report to the user.\r
+\r
+       Upon invoking this routine, the client may receive a callback through\r
+       the <a href="#robo182">ib_pfn_pnp_cb_t</a> routine to notify them of the current system state.\r
+       For example, if a client registers for notification of port up events,\r
+       then the access layer will notify the client of all available ports when\r
+       this routine is first invoked.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo113">ib_dereg_pnp</a>, <a href="#robo197">ib_pnp_req_t</a>, <a href="#robo196">ib_pnp_rec_t</a>, <a href="#robo182">ib_pfn_pnp_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo232">[Functions]<a name="Access20Layer2fib5freg5fshared">\r
+Access Layer/ib_reg_shared</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_reg_shared</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Registers a memory region that has the same physical pages as an\r
+       existing registered memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_reg_shared</strong>(\r
+        IN              const   ib_mr_handle_t                          h_mr,\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+        IN              const   <a href="./ib_types_h.html#robo45">ib_access_t</a>                                     access_ctrl,\r
+        IN      OUT                     uint64_t* const                         p_vaddr,\r
+                OUT                     net32_t* const                          p_lkey,\r
+                OUT                     net32_t* const                          p_rkey,\r
+                OUT                     ib_mr_handle_t* const           ph_mr );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mr\r
+               [in] A handle to an existing registered memory region that this\r
+               registration should share physical pages with.\r
+\r
+       h_pd\r
+               [in] Handle to the PD on which memory is being registered\r
+\r
+       access_ctrl\r
+               [in] Access rights of the registered region.\r
+\r
+       p_vaddr\r
+               [in/out] On input, this specifies the requested virtual address for the\r
+               start of the physical region.  On output, this references the actual\r
+               virtual address assigned to the registered region.  This is always a\r
+               64-bit quantity to support registering more than 4GB of memory on\r
+               32-bit systems with PAE.\r
+\r
+       p_lkey\r
+               [out] The local access key associated with this registered memory\r
+               region.\r
+\r
+       p_rkey\r
+               [out] A key that may be used by a remote end-point when performing RDMA\r
+               or atomic operations to this registered memory region.\r
+\r
+       ph_mr\r
+               [out] Upon successful completion of this call, this references a handle\r
+               to the registered memory region.  This handle is used when performing\r
+               data transfers and to deregister the memory.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The shared memory region was successfully registered.\r
+\r
+       IB_INVALID_MR_HANDLE\r
+               The memory region handle was invalid.\r
+\r
+       IB_INVALID_PD_HANDLE\r
+               The protection domain handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the virtual address, lkey, rkey, or handle was not\r
+               provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to register the shared memory region.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to register the shared memory region.\r
+\r
+       IB_UNSUPPORTED\r
+               The requested access rights are not supported by the channel adapter.\r
+\r
+       IB_INVALID_PERMISSION\r
+               The requested access rights are invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine registers a memory region that shares the same set of\r
+       physical pages associated with an existing registered memory region.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo112">ib_dereg_mr</a>, <a href="#robo229">ib_reg_mem</a>, <a href="#robo230">ib_reg_phys</a>, <strong>ib_reg_shared</strong>, <a href="./ib_types_h.html#robo160">ib_mr_create_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo233">[Functions]<a name="Access20Layer2fib5freg5fshmid">\r
+Access Layer/ib_reg_shmid</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_reg_shmid</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Registers a memory region to be shared across multiple processes.\r
+       The memory is referenced by a shared memory identifier.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_reg_shmid</strong>(\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+        IN              const   <a href="#robo250">ib_shmid_t</a>                                      shmid,\r
+        IN              const   <a href="./ib_types_h.html#robo160">ib_mr_create_t</a>* const           p_mr_create,\r
+                OUT                     uint64_t* const                         p_vaddr,\r
+                OUT                     net32_t* const                          p_lkey,\r
+                OUT                     net32_t* const                          p_rkey,\r
+                OUT                     ib_mr_handle_t* const           ph_mr );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] A handle to an existing protection domain that the memory\r
+               should be registered with.\r
+\r
+       shmid\r
+               [in] An identifier for the shared memory region.\r
+\r
+       p_mr_create\r
+               [in] Information describing the attributes of the memory region to\r
+               register.\r
+\r
+       p_vaddr,\r
+               [out] The HCA assigned, HCA relative virtual address for the\r
+               memory region.\r
+\r
+       p_lkey\r
+               [out] The local access key associated with this registered memory\r
+               region.\r
+\r
+       p_rkey\r
+               [out] A key that may be used by a remote end-point when performing RDMA\r
+               or atomic operations to this registered memory region.\r
+\r
+       ph_mr\r
+               [out] Upon successful completion of this call, this references a handle\r
+               to the registered memory region.  This handle is used when performing\r
+               data transfers and to deregister the memory.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The shared memory region was successfully registered.\r
+\r
+       IB_INVALID_PD_HANDLE\r
+               The protection domain handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the memory region information, lkey, rkey, or handle\r
+               was not provided.\r
+\r
+       IB_INVALID_SETTING\r
+               The length and page mapping for the memory region do not match those\r
+               of the region identified by the provided SHMID.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to register the shared memory region.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to register the shared memory region.\r
+\r
+       IB_UNSUPPORTED\r
+               The requested access rights are not supported by the channel adapter.\r
+\r
+       IB_INVALID_PERMISSION\r
+               The requested access rights are invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine registers a memory region that is shared between processes.\r
+       The region being registered is identified through a shared memory\r
+       identifier.  The registered region shares hardware resources as much\r
+       as possible.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo112">ib_dereg_mr</a>, <a href="#robo229">ib_reg_mem</a>, <a href="#robo232">ib_reg_shared</a>, <a href="./ib_types_h.html#robo160">ib_mr_create_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo234">[Functions]<a name="Access20Layer2fib5freg5fsvc">\r
+Access Layer/ib_reg_svc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_reg_svc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Routine used to register for a service with the subnet administrator.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_reg_svc</strong>(\r
+        IN              const   ib_al_handle_t                          h_al,\r
+        IN              const   <a href="#robo236">ib_reg_svc_req_t</a>* const         p_reg_svc_req,\r
+                OUT                     ib_reg_svc_handle_t* const      ph_reg_svc );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an open instance of the access layer.\r
+\r
+       p_reg_svc_req\r
+               [in] Describes the service to register with the subnet administrator.\r
+\r
+       ph_reg_svc\r
+               [out] Pointer to a service registration handle, used to deregister\r
+               the service.  Set upon successful completion of the function.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The service registration was initiated.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the service registration request was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to perform the operation.\r
+\r
+       IB_NOT_FOUND\r
+               No channel adapters in the system contain the GID specified in the\r
+               service record.\r
+\r
+       IB_INVALID_GID\r
+               No port was found matching the GID specified in the service record.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to perform the operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine registers a service with the subnet administrator.  Registered\r
+       services are reported by the subnet administrator to clients querying the\r
+       subnet administrator for service information.\r
+\r
+       Once registered, a client will receive notification, via a callback,\r
+       that a service has been successfully registered.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo114">ib_dereg_svc</a>, <a href="#robo236">ib_reg_svc_req_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo235">[Structures]<a name="Access20Layer2fib5freg5fsvc5frec5ft">\r
+Access Layer/ib_reg_svc_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       _<strong>ib_reg_svc_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information returned as a result of registering a service with the subnet\r
+       administrator.  This includes name service registration.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_reg_svc_rec\r
+{\r
+        const void* __ptr64                     svc_context;\r
+        ib_reg_svc_handle_t                     h_reg_svc;\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         req_status;\r
+        <a href="./ib_types_h.html#robo893">ib_net16_t</a>                                      resp_status;\r
+        ib_service_record_t                     svc_rec;\r
+\r
+}       <strong>ib_reg_svc_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       svc_context\r
+               User-defined context information associated with the registration\r
+               through the <a href="#robo234">ib_reg_svc</a> call.\r
+\r
+       req_status\r
+               Indicates the success of the registration operation.\r
+\r
+       resp_status\r
+               Indicates the status of the response from the SA\r
+\r
+       h_reg_svc\r
+               For successful queries, this references the first record of\r
+               information returned by the subnet administrator.  If multiple\r
+               records of information were returned, the <strong>ib_reg_svc_rec_t</strong> will\r
+               be chained together.\r
+\r
+       svc_rec\r
+               The service record returned by the SA for the registered service.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       A query result structure is returned to a client through their\r
+       <a href="#robo183">ib_pfn_query_cb_t</a> routine to notify them of the results of a subnet\r
+       administration query.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo234">ib_reg_svc</a>, <a href="#robo184">ib_pfn_reg_svc_cb_t</a>, ib_reg_svc_status_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo236">[Structures]<a name="Access20Layer2fib5freg5fsvc5freq5ft">\r
+Access Layer/ib_reg_svc_req_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_reg_svc_req_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information used to request that a service be registered with the subnet\r
+       administrator.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_reg_svc_req\r
+{\r
+        ib_service_record_t                     svc_rec;\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      port_guid;\r
+\r
+        uint32_t                                        timeout_ms;\r
+        uint32_t                                        retry_cnt;\r
+        <a href="#robo47">ib_al_flags_t</a>                           flags;\r
+\r
+        const void                                      *svc_context;\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      svc_data_mask;\r
+\r
+        <a href="#robo184">ib_pfn_reg_svc_cb_t</a>                     pfn_reg_svc_cb;\r
+\r
+}       <strong>ib_reg_svc_req_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       svc_rec\r
+               Service record that describes the service being registered.\r
+\r
+       port_guid\r
+               Directs the registration to use the specified port.  The request will\r
+               contact the management entity reachable through the given port.\r
+\r
+       timeout_ms\r
+               Specifies the number of milliseconds to wait for a response for\r
+               the registration until retrying or timing out the request.\r
+\r
+       retry_cnt\r
+               Specifies the number of times that the registration will be retried\r
+               before failing the request.\r
+\r
+       flags\r
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to\r
+               process the called routine synchronously.\r
+\r
+       svc_context\r
+               User-defined context information associated with this registration\r
+               request.  This context is returned to the user through the function\r
+               specified by the pfn_reg_svc_cb field.\r
+\r
+       svc_data_mask\r
+               User-defined component mask indicating which parts of the private\r
+               data is populated. This is used as an extension to the svc_id\r
+               for data compare. Also used as a cheap way to communicate data\r
+               to all clients for this service.\r
+\r
+       pfn_reg_svc_cb\r
+               A user-defined callback that is invoked upon completion of the\r
+               registration request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is used to register a service with the subnet administrator.\r
+       The registration call operates asynchronously unless the flags field is\r
+       set to IB_FLAGS_SYNC.  If synchronous operation is indicated, the client\r
+       will receive a callback with the results of the registration attempt\r
+       before the <a href="#robo234">ib_reg_svc</a> call returns.  Synchronous operation results in\r
+       the calling thread blocking.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo234">ib_reg_svc</a>, ib_svc_rec_t, <a href="#robo184">ib_pfn_reg_svc_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo237">[Structures]<a name="Access20Layer2fib5frej5fpdata5ft">\r
+Access Layer/ib_rej_pdata_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_rej_pdata_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User data sent as part of a connection reject message.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ib_rej_pdata\r
+{\r
+        uint8_t                                         data[IB_REJ_PDATA_SIZE];\r
+\r
+}       <strong>ib_rej_pdata_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo239">[Functions]<a name="Access20Layer2fib5freject5fioc">\r
+Access Layer/ib_reject_ioc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_reject_ioc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Rejects an I/O controller assignment to a host.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_reject_ioc</strong>(\r
+        IN              const   ib_al_handle_t                          h_al,\r
+        IN              const   ib_pnp_handle_t                         h_ioc_event );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an open instance of the access layer.\r
+\r
+       h_ioc_event\r
+               [in] A handle provided as part of the notification of an I/O controller\r
+               being assigned.  This handle is obtained through the <a href="#robo196">ib_pnp_rec_t</a>\r
+               structure given to a client through their <a href="#robo182">ib_pfn_pnp_cb_t</a> callback.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The I/O controller reject request was initiated.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_HANDLE\r
+               The I/O controller handle was invalid.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to perform the operation.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to perform the operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine rejects an I/O controller assigned by the configuration\r
+       manager to the local host.  The access layer sends a rejection notification\r
+       to the configuration manager and disable access to the controller from\r
+       the local host.  This routine must be called from a client's\r
+       <a href="#robo182">ib_pfn_pnp_cb_t</a> callback to reject a newly assigned I/O controller.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo182">ib_pfn_pnp_cb_t</a>, <a href="#robo196">ib_pnp_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo240">[Functions]<a name="Access20Layer2fib5fremove5fsvc5fentry">\r
+Access Layer/ib_remove_svc_entry</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_remove_svc_entry</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This removes a service entry from an I/O controller.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_remove_svc_entry</strong>(\r
+        IN              const   ib_svc_handle_t                         h_svc );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_svc\r
+               [in] A handle to an existing service entry.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The service entry was successfully removed.\r
+\r
+       IB_INVALID_HANDLE\r
+               The service entry handle was invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine removes the specified service from its associated I/O\r
+       controller.  Once removed, the service information will no longer be\r
+       exported along with the controller.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo46">ib_add_svc_entry</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo241">[Structures]<a name="Access20Layer2fib5frep5fpdata5ft">\r
+Access Layer/ib_rep_pdata_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_rep_pdata_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User data sent as part of a reply to a request for communication.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ib_rep_pdata\r
+{\r
+        uint8_t                                         data[IB_REP_PDATA_SIZE];\r
+\r
+}       <strong>ib_rep_pdata_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo242">[Structures]<a name="Access20Layer2fib5freport5frec5ft">\r
+Access Layer/ib_report_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_report_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Reported event information returned to the user when a subscribed for\r
+       event occurs.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_report_rec\r
+{\r
+        const void* __ptr64                             report_context;\r
+        ib_mad_notice_attr_t* __ptr64   p_notice;\r
+\r
+}       <strong>ib_report_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       report_context\r
+               Client-defined context information specified when registering for\r
+               the report.\r
+\r
+       p_notice\r
+               Reported information that describes the event that has occurred.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Subscription for reported events is done through a class manager.  When\r
+       a class manager detects that such an event occurs, it will generate a\r
+       report to the subscribed client.  The reported information is referenced\r
+       through the p_notice field.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo243">[Structures]<a name="Access20Layer2fib5freq5fpdata5ft">\r
+Access Layer/ib_req_pdata_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_req_pdata_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User data sent as part of a request for communication.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ib_req_pdata\r
+{\r
+        uint8_t                                         data[IB_REQ_PDATA_SIZE];\r
+\r
+}       <strong>ib_req_pdata_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo244">[Functions]<a name="Access20Layer2fib5frereg5fmem">\r
+Access Layer/ib_rereg_mem</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_rereg_mem</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Modifies the attributes of an existing memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_rereg_mem</strong>(\r
+        IN              const   ib_mr_handle_t                          h_mr,\r
+        IN              const   <a href="./ib_types_h.html#robo161">ib_mr_mod_t</a>                                     mr_mod_mask,\r
+        IN              const   <a href="./ib_types_h.html#robo160">ib_mr_create_t</a>* const           p_mr_create OPTIONAL,\r
+                OUT                     net32_t* const                          p_lkey,\r
+                OUT                     net32_t* const                          p_rkey,\r
+        IN              const   ib_pd_handle_t                          h_pd OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mr\r
+               [in] A handle to the registered memory region being modified.\r
+\r
+       mr_mod_mask\r
+               [in] A mask used to specify which attributes of the memory region are\r
+               being modified.\r
+\r
+       p_mr_create\r
+               [in] This references information needed to perform the modification on\r
+               the registered memory region.  This parameter may be NULL if only the\r
+               protection domain will be modified.\r
+\r
+       p_lkey\r
+               [out] The local access key associated with this registered memory\r
+               region.\r
+\r
+       p_rkey\r
+               [out] A key that may be used by a remote end-point when performing RDMA\r
+               or atomic operations to this registered memory region.\r
+\r
+       h_pd\r
+               [in] An optionally provided parameter used to modify the protection\r
+               domain of a registered region.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The memory region attributes were modified successfully.\r
+\r
+       IB_INVALID_MR_HANDLE\r
+               The memory region handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the lkey or rkey was not provided or the specified\r
+               modify mask is invalid.\r
+\r
+       IB_INVALID_SETTING\r
+               The specified memory region attributes are invalid.\r
+\r
+       IB_INVALID_PD_HANDLE\r
+               The protection domain handle was invalid.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to modify the memory region.\r
+\r
+       IB_UNSUPPORTED\r
+               The requested access rights are not supported by the channel adapter.\r
+\r
+       IB_INVALID_PERMISSION\r
+               The requested access rights are invalid.\r
+\r
+       IB_RESOURCE_BUSY\r
+               The memory region has windows bound to it.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine modifies the attributes of the specified memory region.\r
+       The memory being modified may have been registered using either virtual\r
+       or physical registration.  Conceptually, this routine is equivalent to\r
+       to calling <a href="#robo112">ib_dereg_mr</a>, followed by <a href="#robo229">ib_reg_mem</a>, but may be higher\r
+       performing.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo229">ib_reg_mem</a>, <a href="#robo230">ib_reg_phys</a>, <a href="#robo112">ib_dereg_mr</a>, <a href="./ib_types_h.html#robo161">ib_mr_mod_t</a>, <a href="./ib_types_h.html#robo160">ib_mr_create_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo245">[Functions]<a name="Access20Layer2fib5frereg5fphys">\r
+Access Layer/ib_rereg_phys</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_rereg_phys</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Modifies the attributes of an existing memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_rereg_phys</strong>(\r
+        IN              const   ib_mr_handle_t                          h_mr,\r
+        IN              const   <a href="./ib_types_h.html#robo161">ib_mr_mod_t</a>                                     mr_mod_mask,\r
+        IN              const   <a href="./ib_types_h.html#robo187">ib_phys_create_t</a>* const         p_phys_create OPTIONAL,\r
+        IN      OUT                     uint64_t* const                         p_vaddr,\r
+                OUT                     net32_t* const                          p_lkey,\r
+                OUT                     net32_t* const                          p_rkey,\r
+        IN              const   ib_pd_handle_t                          h_pd OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mr\r
+               [in] A handle to the registered memory region being modified.\r
+\r
+       mr_mod_mask\r
+               [in] A mask used to specify which attributes of the memory region are\r
+               being modified.\r
+\r
+       p_phys_create\r
+               [in] This references information needed to perform the modification on\r
+               the registered memory region.  This parameter may be NULL if\r
+               only the protection domain will be modified.\r
+\r
+       p_vaddr\r
+               [in/out] On input, this specifies the requested virtual address for the\r
+               start of the physical region.  On output, this references the actual\r
+               virtual address assigned to the registered region.\r
+\r
+       p_lkey\r
+               [out] The local access key associated with this registered memory\r
+               region.\r
+\r
+       p_rkey\r
+               [out] A key that may be used by a remote end-point when performing RDMA\r
+               or atomic operations to this registered memory region.\r
+\r
+       h_pd\r
+               [in] An optionally provided parameter used to modify the protection\r
+               domain of a registered region.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The memory region attributes were modified successfully.\r
+\r
+       IB_INVALID_MR_HANDLE\r
+               The memory region handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the virtual address, lkey, rkey was not provided or\r
+               the specified modify mask is invalid.\r
+\r
+       IB_INVALID_SETTING\r
+               The specified memory region attributes are invalid.\r
+\r
+       IB_INVALID_PD_HANDLE\r
+               The protection domain handle was invalid.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to modify the memory region.\r
+\r
+       IB_UNSUPPORTED\r
+               The requested access rights are not supported by the channel adapter.\r
+\r
+       IB_INVALID_PERMISSION\r
+               The requested access rights are invalid.\r
+\r
+       IB_RESOURCE_BUSY\r
+               The memory region has windows bound to it.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine modifies the attributes of the specified memory region.\r
+       The memory being modified may have been registered using either virtual\r
+       or physical registration.  Conceptually, this routine is equivalent to\r
+       to calling <a href="#robo112">ib_dereg_mr</a>, followed by <a href="#robo230">ib_reg_phys</a>, but may be higher\r
+       performing.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo229">ib_reg_mem</a>, <a href="#robo230">ib_reg_phys</a>, <a href="#robo112">ib_dereg_mr</a>, <a href="./ib_types_h.html#robo161">ib_mr_mod_t</a>, <a href="./ib_types_h.html#robo160">ib_mr_create_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo246">[Structures]<a name="Access20Layer2fib5frtu5fpdata5ft">\r
+Access Layer/ib_rtu_pdata_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_rtu_pdata_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User data sent as part of a ready to use message.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ib_rtu_pdata\r
+{\r
+        uint8_t                                         data[IB_RTU_PDATA_SIZE];\r
+\r
+}       <strong>ib_rtu_pdata_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo247">[Functions]<a name="Access20Layer2fib5fsend5fmad">\r
+Access Layer/ib_send_mad</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_send_mad</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine posts a work request to the send queue of a queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_send_mad</strong>(\r
+        IN              const   ib_mad_svc_handle_t                     h_mad_svc,\r
+        IN                              <a href="#robo150">ib_mad_element_t</a>* const         p_mad_element_list,\r
+                OUT                     <a href="#robo150">ib_mad_element_t</a>                        **pp_mad_failure OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mad_svc\r
+               [in] The MAD service to which this work request is being submitted.\r
+\r
+       p_mad_element_list\r
+               [in] A list of MAD elements that will be posted to the send queue.\r
+\r
+       pp_mad_failure\r
+               [out] If the send MAD operation failed, this references the MAD\r
+               element in the p_mad_element_list where the first failure occurred.\r
+               This parameter is optional if p_mad_element_list contains a single\r
+               MAD.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The MAD element list was successfully posted.\r
+\r
+       IB_INVALID_HANDLE\r
+               The MAD service handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the MAD element list was not provided.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available to complete\r
+               the request.\r
+\r
+       IB_INVALID_SETTING\r
+               The MAD element RMPP version is not supported by the access layer.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to complete the request.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine posts a work request to send a MAD on a MAD service.  All\r
+       MAD elements successfully posted by this call are under the control of\r
+       the access layer and should not be accessed until the send operation\r
+       completes.\r
+\r
+       In order to guarantee that MADs sent by separate clients do not use the\r
+       same transaction ID, the access layer reserves the upper 32-bits of the\r
+       TID on all unsolicited MADs.  MADs sent with the response bit set will\r
+       not have their transaction ID's modified.  Unsolicited MADs will have the\r
+       upper 32-bits of their TID set to an access layer generated client ID.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo150">ib_mad_element_t</a>, <a href="#robo62">ib_cancel_mad</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo250">[Structures]<a name="Access20Layer2fib5fshmid5ft">\r
+Access Layer/ib_shmid_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_shmid_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Shared Memory Identifier, used to uniquely identify a shared memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef uint8_t         <strong>ib_shmid_t</strong>[64];\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo233">ib_reg_shmid</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo251">[Structures]<a name="Access20Layer2fib5fsidr5frep5fpdata5ft">\r
+Access Layer/ib_sidr_rep_pdata_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_sidr_rep_pdata_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User data sent as part of a service ID resolution reply.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ib_sidr_rep_pdata\r
+{\r
+        uint8_t                                         data[IB_SIDR_REP_PDATA_SIZE];\r
+\r
+}       <strong>ib_sidr_rep_pdata_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo252">[Structures]<a name="Access20Layer2fib5fsidr5freq5fpdata5ft">\r
+Access Layer/ib_sidr_req_pdata_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_sidr_req_pdata_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User data sent as part of a service ID resolution request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ib_sidr_req_pdata\r
+{\r
+        uint8_t                                         data[IB_SIDR_REQ_PDATA_SIZE];\r
+\r
+}       <strong>ib_sidr_req_pdata_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo253">[Structures]<a name="Access20Layer2fib5fsub5frec5ft">\r
+Access Layer/ib_sub_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_sub_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information returned to a user that indicates the result of a subscription\r
+       request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_sub_rec\r
+{\r
+        const void* __ptr64                     sub_context;\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+        ib_sub_handle_t                         h_sub;\r
+\r
+}       <strong>ib_sub_rec_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       sub_context\r
+               References user-defined context information associated with the\r
+               subscription request.  This field is set by the user through the\r
+               <a href="#robo255">ib_subscribe</a> routine.\r
+\r
+       status\r
+               Indicates the success of the subscription request.\r
+\r
+       h_sub\r
+               The handle to the subscription request that was returned to the user\r
+               from the <a href="#robo255">ib_subscribe</a> call.  This handle is provided to the user to\r
+               avoid a race condition between the return of the <a href="#robo255">ib_subscribe</a> routine\r
+               and the notification of an event.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is returned to the user to notify them of the results\r
+       of a subscription request.  After successfully subscribing with a\r
+       class manager for an event, this structure will be returned to the user\r
+       with the status set to IB_SUCCESS.  The sub_context field will be set\r
+       to the context specified through the p_sub_req parameter in the\r
+       <a href="#robo255">ib_subscribe</a> routine.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo255">ib_subscribe</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo254">[Structures]<a name="Access20Layer2fib5fsub5freq5ft">\r
+Access Layer/ib_sub_req_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_sub_req_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information used to subscribed for event notification from a class\r
+       manager.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_sub_req\r
+{\r
+        ib_svc_name_t* __ptr64          p_class_mgr_name;\r
+        ib_inform_info_t* __ptr64       p_inform_info;\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      port_guid;\r
+\r
+        uint32_t                                        timeout_ms;\r
+        uint32_t                                        retry_cnt;\r
+        <a href="#robo47">ib_al_flags_t</a>                           flags;\r
+\r
+        const void* __ptr64                     sub_context;\r
+        <a href="#robo186">ib_pfn_sub_cb_t</a>                         pfn_sub_cb;\r
+\r
+        const void* __ptr64                     report_context;\r
+        <a href="#robo185">ib_pfn_report_cb_t</a>                      pfn_report_cb;\r
+\r
+}       <strong>ib_sub_req_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       p_class_mgr_name\r
+               The service name of the class manager to subscribe for events with.\r
+\r
+       p_inform_info\r
+               Information describing the type of event being subscribed to.\r
+\r
+       port_guid\r
+               Directs the subscription request to use the specified port.  The\r
+               request will contact the subnet administrator reachable through the\r
+               given port.\r
+\r
+       timeout_ms\r
+               Specifies the number of milliseconds to wait for a response for\r
+               this subscription until retrying or timing out the request.\r
+\r
+       retry_cnt\r
+               Specifies the number of times that the query will be retried before\r
+               failing the request.\r
+\r
+       flags\r
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to\r
+               process the called routine synchronously.\r
+\r
+       sub_context\r
+               User-defined context information associated with this subscription\r
+               request.  This context is returned to the user through the function\r
+               specified by the pfn_sub_cb field.\r
+\r
+       pfn_sub_cb\r
+               A user-defined callback that is invoked upon completion of the\r
+               subscription request.  This is used to notify a client that of the\r
+               result of their subscription request.\r
+\r
+       report_context\r
+               User-defined context information associated with this subscription.\r
+               This context is returned to the user through the client's\r
+               <a href="#robo185">ib_pfn_report_cb_t</a> callback routine specified in <a href="#robo163">ib_open_al</a>.\r
+\r
+       pfn_report_cb\r
+               A user-defined callback that is invoked to notify the user that an\r
+               event report has been received.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is used to subscribe for events with a class manager.  Both\r
+       the subscription request and any corresponding event notifications operate\r
+       asynchronously.  Clients will be notified of the result of their\r
+       subscription request before receiving notification of associated events.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo255">ib_subscribe</a>, ib_svc_name_t, ib_inform_info_t, <a href="#robo186">ib_pfn_sub_cb_t</a>,\r
+       <a href="#robo185">ib_pfn_report_cb_t</a>, <a href="#robo163">ib_open_al</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo255">[Functions]<a name="Access20Layer2fib5fsubscribe">\r
+Access Layer/ib_subscribe</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_subscribe</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Subscribe with a class manager for event notification.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_subscribe</strong>(\r
+        IN              const   ib_al_handle_t                          h_al,\r
+        IN              const   <a href="#robo254">ib_sub_req_t</a>* const                     p_sub_req,\r
+                OUT                     ib_sub_handle_t* const          ph_sub );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an open instance of the access layer.\r
+\r
+       p_sub_req\r
+               [in] Specifies the type of events that the user wishes to be\r
+               notified of, along with information needed to process the completed\r
+               subscription.\r
+\r
+       ph_sub\r
+               [out] Upon successful completion of this call, this references a handle\r
+               to the subscription request.  This handle may be used to unsubscribe\r
+               from the events.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The subscription request was initiated.\r
+\r
+       IB_INVALID_AL_HANDLE\r
+               The access layer handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the subscription request or handle was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to perform the operation.\r
+\r
+       IB_INVALID_GUID\r
+               No port was found for the port_guid specified in the request.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to perform the operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine registers the calling client with a class manager for\r
+       notification of events.  Once registered, a client will receive\r
+       notification, via a callback, that a given event has occurred on\r
+       a device managed by the class manager.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo257">ib_unsubscribe</a>, <a href="#robo254">ib_sub_req_t</a>, <a href="#robo186">ib_pfn_sub_cb_t</a>, <a href="#robo185">ib_pfn_report_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo256">[Functions]<a name="Access20Layer2fib5fsync5fdestroy">\r
+Access Layer/ib_sync_destroy</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_sync_destroy</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Access layer routine used to indicate synchronous destruction of an\r
+       object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT void AL_API\r
+<strong>ib_sync_destroy</strong>(\r
+        IN                              void                                            *context );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       Not Applicable.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Users specify <strong>ib_sync_destroy</strong> as the <a href="#robo177">ib_pfn_destroy_cb_t</a> callback in order\r
+       to force synchronous object destruction.  This may result in the calling\r
+       thread blocking while outstanding callbacks complete.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo177">ib_pfn_destroy_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo257">[Functions]<a name="Access20Layer2fib5funsubscribe">\r
+Access Layer/ib_unsubscribe</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_unsubscribe</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Unsubscribe with a class manager for event notification.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a> AL_API\r
+<strong>ib_unsubscribe</strong>(\r
+        IN              const   ib_sub_handle_t                         h_sub,\r
+        IN              const   <a href="#robo177">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_al\r
+               [in] A handle to an open instance of the access layer.\r
+\r
+       h_sub\r
+               [in] A handle to a subscribed event.\r
+\r
+       pfn_destroy_cb\r
+               [in] A user-specified callback that is invoked after the subscription\r
+               request has been successfully canceled.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The unsubscribe request was initiated.\r
+\r
+       IB_INVALID_HANDLE\r
+               The subscription handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the subscription request or handle was not provided.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to perform the operation.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               There were insufficient resources currently available on the channel\r
+               adapter to perform the operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine cancels an active or pending event subscription with a class\r
+       manager.  To avoid a race condition canceling a subscription at the same\r
+       time an event notification callback is in progress, the unsubscribe\r
+       operation operates asynchronously.  For additional details see\r
+       <a href="#robo177">ib_pfn_destroy_cb_t</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo255">ib_subscribe</a>, <a href="#robo177">ib_pfn_destroy_cb_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo258">[Structures]<a name="Access20Layer2fib5fuser5fquery5ft">\r
+Access Layer/ib_user_query_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_user_query_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       User-defined query information.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_user_query\r
+{\r
+        uint8_t                                 method;\r
+        <a href="./ib_types_h.html#robo893">ib_net16_t</a>                              attr_id;\r
+        uint32_t                                attr_size;\r
+        <a href="./ib_types_h.html#robo895">ib_net64_t</a>                              comp_mask;\r
+        void* __ptr64                   p_attr;\r
+\r
+}       <strong>ib_user_query_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       method\r
+               Method to be run\r
+\r
+       attr_id\r
+               Attribute identifier of query data.\r
+\r
+       attr_size\r
+               Size of the query attribute in bytes.  This is translated into the\r
+               attr_offset field of the SA MAD by the <a href="#robo211">ib_query</a> call.\r
+\r
+       comp_mask\r
+               Indicates the attribute components that are specified for the query.\r
+\r
+       p_attr\r
+               References the attribute structure used as input into the query.\r
+               This field is ignored if comp_mask is set to 0.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is used to describe a user-defined query.  The attribute\r
+       ID, attribute offset, component mask, and attribute structure must match\r
+       those defined by the IBA specification.  Users should refer to chapter 15\r
+       of the IBA specification for additional details.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo221">ib_query_type_t</a>, <a href="#robo211">ib_query</a>, ib_get_attr_offset, ib_get_attr_size\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/iba/ib_al_ioctl_h.html b/trunk/docs/iba/ib_al_ioctl_h.html
new file mode 100644 (file)
index 0000000..3d5b32a
--- /dev/null
@@ -0,0 +1,3208 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/iba/ib_al_ioctl_h.html</title>\r
+<!-- Source: ./inc/iba/ib_al_ioctl.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/iba/ib_al_ioctl.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:23\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo980">[Structures]<a name="User2dmode20Access20Layer2fual5falloc5fpd5fioctl5ft">\r
+User-mode Access Layer/ual_alloc_pd_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_alloc_pd_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo48">ib_alloc_pd</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_alloc_pd_ioctl\r
+{\r
+        struct _ual_alloc_pd_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_ca;\r
+                <a href="./ib_types_h.html#robo165">ib_pd_type_t</a>                            type;\r
+                void* __ptr64                           context;\r
+\r
+        }       in;\r
+        struct _ual_alloc_pd_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint64_t                                        h_pd;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_alloc_pd_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.h_ca\r
+               The handle to an open instance of CA returned in a ual_open_ca_ioctl.\r
+\r
+       in.context\r
+               UAL's pd context. This context will be provided on destroy callback.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation\r
+\r
+       out.h_pd\r
+               The handle to the PD to use in further PD-related IOCTLs.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo981">[Structures]<a name="User2dmode20Access20Layer2fual5fattach5fmcast5fioctl5ft">\r
+User-mode Access Layer/ual_attach_mcast_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_attach_mcast_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       verbs attach multicast call.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_attach_mcast_ioctl\r
+{\r
+        struct _ual_attach_mcast_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_qp;\r
+                <a href="./ib_types_h.html#robo856">ib_gid_t</a>                                        mgid;\r
+                <a href="./ib_types_h.html#robo893">ib_net16_t</a>                                      mlid;\r
+\r
+        }       in;\r
+        struct _ual_attach_mcast_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint64_t                                        h_attach;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_attach_mcast_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.h_qp\r
+               Handle to the QP that is joining the multicast group.\r
+\r
+       in.mgid\r
+               Multicast GID address for this multicast group.\r
+\r
+       in.mlid\r
+               Multicast LID for this multicast group.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       h_attach\r
+               Multicast group handle.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo982">[Structures]<a name="User2dmode20Access20Layer2fual5fbind5ffile5fioctl5ft">\r
+User-mode Access Layer/ual_bind_file_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_bind_file_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       binding a file handle to an existing proxy context.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_bind_file_ioctl\r
+{\r
+        void* __ptr64                   h_file;\r
+\r
+}       <strong>ual_bind_file_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       h_file\r
+               File handle from the user-mode process intended for asynchronous requests.\r
+               The IOCTL code will specify the type of asynchronous requests to be\r
+               performed on this file handle.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span>\r
+<hr />\r
+\r
+<h2><a name="robo983">[Structures]<a name="User2dmode20Access20Layer2fual5fbind5fmw5fioctl5ft">\r
+User-mode Access Layer/ual_bind_mw_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_bind_mw_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo58">ib_bind_mw</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_bind_mw_ioctl\r
+{\r
+        struct _ual_bind_mw_ioctl_in\r
+        {\r
+                uint64_t                                        h_mw;\r
+                uint64_t                                        h_qp;\r
+                <a href="./ib_types_h.html#robo59">ib_bind_wr_t</a>                            mw_bind;\r
+\r
+        }       in;\r
+        struct _ual_bind_mw_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint32_t                                        r_key;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_bind_mw_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_mw\r
+               A handle to an existing memory window.\r
+\r
+       in.h_qp\r
+               The qp handle to post the bind request.\r
+\r
+       in.mw_bind\r
+               Bind request.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.rkey\r
+               RKey for the memory window.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo984">[Structures]<a name="User2dmode20Access20Layer2fual5fcancel5fmad5fioctl5ft">\r
+User-mode Access Layer/ual_cancel_mad_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cancel_mad_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo62">ib_cancel_mad</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_cancel_mad_ioctl\r
+{\r
+        struct _ual_cancel_mad_ioctl_in\r
+        {\r
+                uint64_t                                        h_mad_svc;\r
+                void* __ptr64                           h_proxy_element;\r
+\r
+        }       in;\r
+        struct _ual_cancel_mad_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_cancel_mad_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_mad_svc\r
+               contains the handle to the mad service\r
+\r
+       in.h_mad_send\r
+               this references the handle to the sent MAD operation.\r
+\r
+       out.status\r
+               Status of the operation.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo985">[Structures]<a name="User2dmode20Access20Layer2fual5fcancel5fsa5freq5fioctl5ft">\r
+User-mode Access Layer/ual_cancel_sa_req_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cancel_sa_req_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input parameters for cancelling an\r
+       SA request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_cancel_sa_req_ioctl\r
+{\r
+        uint64_t                        h_sa_req;\r
+\r
+}       <strong>ual_cancel_sa_req_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_sa_req\r
+               Handle to the query to cancel.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo986">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5fapr5fioctl5ft">\r
+User-mode Access Layer/ual_cep_apr_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_apr_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input parameters for\r
+       ib_cep_apr\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_cep_apr_ioctl\r
+{\r
+        struct _ual_cep_apr_ioctl_in\r
+        {\r
+                net32_t                                 cid;\r
+                <a href="./ib_al_h.html#robo71">ib_cm_apr_t</a>                             cm_apr;\r
+                uint8_t                                 apr_info[IB_APR_INFO_SIZE];\r
+                uint8_t                                 pdata[IB_APR_PDATA_SIZE];\r
+\r
+        }       in;\r
+\r
+        struct _ual_cep_apr_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                 status;\r
+                <a href="./ib_types_h.html#robo207">ib_qp_mod_t</a>                             apr;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_cep_apr_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_cm_lap\r
+               The cm_lap connection handle got on the LAP callback.\r
+\r
+       in.cm_apr\r
+               CM APR parameters.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo987">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5fdrep5fioctl5ft">\r
+User-mode Access Layer/ual_cep_drep_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_drep_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo74">ib_cm_drep</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_cep_drep_ioctl\r
+{\r
+        net32_t                                         cid;\r
+        <a href="./ib_al_h.html#robo76">ib_cm_drep_t</a>                            cm_drep;\r
+        uint8_t                                         pdata[IB_DREP_PDATA_SIZE];\r
+\r
+}       <strong>ual_cep_drep_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_cm_dreq\r
+               The cm_dreq connection handle got on the callback.\r
+\r
+       in.cm_drep\r
+               CM DREP parameters.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo988">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5fdreq5fioctl5ft">\r
+User-mode Access Layer/ual_cep_dreq_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_dreq_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input parameters for\r
+       <a href="./ib_al_h.html#robo77">ib_cm_dreq</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_cep_dreq_ioctl\r
+{\r
+        net32_t                                         cid;\r
+        uint8_t                                         pdata_len;\r
+        uint8_t                                         pdata[IB_DREQ_PDATA_SIZE];\r
+\r
+}       <strong>ual_cep_dreq_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       cm_dreq\r
+               CM DREQ parameters.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo989">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5fget5frtr5fioctl5ft">\r
+User-mode Access Layer/ual_cep_get_rtr_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_get_rtr_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the output parameters for\r
+       al_cep_get_rtr_attr call.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_cep_get_rtr_ioctl\r
+{\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+        <a href="./ib_types_h.html#robo207">ib_qp_mod_t</a>                                     rtr;\r
+\r
+}       <strong>ual_cep_get_rtr_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       out.status\r
+               Status of the operation.\r
+\r
+       out.rtr\r
+               QP modify paramters for RTR state transition.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo990">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5fget5frts5fioctl5ft">\r
+User-mode Access Layer/ual_cep_get_rts_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_get_rts_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the output parameters for\r
+       al_cep_get_rts_attr call.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_cep_get_rts_ioctl\r
+{\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+        <a href="./ib_types_h.html#robo207">ib_qp_mod_t</a>                                     rts;\r
+\r
+}       <strong>ual_cep_get_rts_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       out.status\r
+               Status of the operation.\r
+\r
+       out.rts\r
+               QP modify paramters for RTS state transition.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo991">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5fget5ftimewait5fioctl5ft">\r
+User-mode Access Layer/ual_cep_get_timewait_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_get_timewait_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the output parameters for\r
+       ib_cep_get_timewait\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_cep_get_timewait_ioctl\r
+{\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+        uint64_t                                        timewait_us;\r
+\r
+}       <strong>ual_cep_get_timewait_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.status\r
+               Status of the request.\r
+\r
+       in.timewait_us\r
+               Timewait value, in microseconds.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo992">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5fhandoff5fioctl5ft">\r
+User-mode Access Layer/ual_cep_handoff_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_handoff_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo81">ib_cm_handoff</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_cep_handoff_ioctl\r
+{\r
+        struct _ual_cep_handoff_ioctl_in\r
+        {\r
+                uint64_t                                        h_cm;\r
+                net64_t                                         sid;\r
+\r
+        }       in;\r
+        struct _ual_cep_handoff_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_cep_handoff_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_cm\r
+               The connection handle got on the callback.\r
+\r
+       in.sid\r
+               Service ID to which to handoff the listen.\r
+\r
+       out.status\r
+               Status of the operation\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo993">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5flap5fioctl5ft">\r
+User-mode Access Layer/ual_cep_lap_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_lap_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input parameters for\r
+       <a href="./ib_al_h.html#robo82">ib_cm_lap</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_cep_lap_ioctl\r
+{\r
+        net32_t                                         cid;\r
+        <a href="./ib_al_h.html#robo84">ib_cm_lap_t</a>                                     cm_lap;\r
+        <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>                           alt_path;\r
+        uint8_t                                         pdata[IB_LAP_PDATA_SIZE];\r
+\r
+}       <strong>ual_cep_lap_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.cm_lap\r
+               CM LAP parameters\r
+\r
+       in.alt_path\r
+               Alternate path information.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo994">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5flisten5fioctl5ft">\r
+User-mode Access Layer/ual_cep_listen_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_listen_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input parameters to\r
+       perform a CM listen request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_cep_listen_ioctl\r
+{\r
+        net32_t                                         cid;\r
+        <a href="./ib_al_h.html#robo64">ib_cep_listen_t</a>                         cep_listen;\r
+        uint8_t                                         compare[IB_REQ_PDATA_SIZE];\r
+\r
+}       <strong>ual_cep_listen_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.cid\r
+               CID of an existing CEP.\r
+\r
+       in.cep_listen\r
+               Information used to direct the listen request to match incoming\r
+               connection requests.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo995">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5fmra5fioctl5ft">\r
+User-mode Access Layer/ual_cep_mra_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_mra_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input parameters for\r
+       <a href="./ib_al_h.html#robo87">ib_cm_mra</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_cep_mra_ioctl\r
+{\r
+        net32_t                                         cid;\r
+        <a href="./ib_al_h.html#robo89">ib_cm_mra_t</a>                                     cm_mra;\r
+        uint8_t                                         pdata[IB_MRA_PDATA_SIZE];\r
+\r
+}       <strong>ual_cep_mra_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.cid\r
+               The CID for the target CEP.\r
+\r
+       in.cm_mra\r
+               CM MRA parameters.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo996">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5fpoll5fioctl5ft">\r
+User-mode Access Layer/ual_cep_poll_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_poll_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the output parameters to\r
+       poll for incoming events on a CEP.  The input parameter is the CID.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_cep_poll_ioctl\r
+{\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+        void* __ptr64                           context;\r
+        net32_t                                         new_cid;\r
+        <a href="./ib_al_h.html#robo150">ib_mad_element_t</a>                        element;\r
+        <a href="./ib_types_h.html#robo859">ib_grh_t</a>                                        grh;\r
+        uint8_t                                         mad_buf[<a href="./ib_types_h.html#robo832">MAD_BLOCK_SIZE</a>];\r
+\r
+}       <strong>ual_cep_poll_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       status\r
+               Status of the operation.\r
+\r
+       new_cep\r
+               For listen requests, CEP information of CEPs created in response\r
+               to incoming REQs.\r
+\r
+       mad_buf\r
+               Payload of a received MAD (or failed send)\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo997">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5frej5fioctl5ft">\r
+User-mode Access Layer/ual_cep_rej_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_rej_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input parameters for\r
+       al_cep_rej\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_cep_rej_ioctl\r
+{\r
+        net32_t                                         cid;\r
+\r
+        <a href="./ib_types_h.html#robo238">ib_rej_status_t</a>                         rej_status;\r
+        uint8_t                                         ari_len;\r
+        uint8_t                                         pdata_len;\r
+        uint8_t                                         ari[IB_ARI_SIZE];\r
+        uint8_t                                         pdata[IB_REJ_PDATA_SIZE];\r
+\r
+}       <strong>ual_cep_rej_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.cid\r
+               The CID of the target CEP.\r
+\r
+       in.rej_status\r
+               Rejection status as defined in IB spec.\r
+\r
+       in.ari_len\r
+               Length of the ARI data.\r
+\r
+       in.pdata_len\r
+               Length of the private data.\r
+\r
+       in.ari\r
+               ARI data.\r
+\r
+       in.pdata\r
+               Private data.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo998">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5frep5fioctl5ft">\r
+User-mode Access Layer/ual_cep_rep_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_rep_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       al_cep_pre_rep call.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_cep_rep_ioctl\r
+{\r
+        struct _ual_cep_rep_ioctl_in\r
+        {\r
+                void* __ptr64                           context;\r
+                net32_t                                         cid;\r
+                <a href="./ib_al_h.html#robo95">ib_cm_rep_t</a>                                     cm_rep;\r
+                uint8_t                                         pdata[IB_REP_PDATA_SIZE];\r
+\r
+        }       in;\r
+        struct _ual_cep_rep_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                <a href="./ib_types_h.html#robo207">ib_qp_mod_t</a>                                     init;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_cep_rep_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_cm_req\r
+               The cm_req connection handle got on the callback.\r
+\r
+       in.cm_rep\r
+               CM REP parameters.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.init\r
+               QP modify paramters for INIT state transition.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo999">[Structures]<a name="User2dmode20Access20Layer2fual5fcep5frtu5fioctl5ft">\r
+User-mode Access Layer/ual_cep_rtu_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cep_rtu_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input parameters for\r
+       al_cep_rtu call.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_cep_rtu_ioctl\r
+{\r
+        net32_t                                         cid;\r
+        uint8_t                                         pdata_len;\r
+        uint8_t                                         pdata[IB_RTU_PDATA_SIZE];\r
+\r
+}       <strong>ual_cep_rtu_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.cid\r
+               The cm_rep connection handle got on the callback.\r
+\r
+       in.pdata_len\r
+               Length of private data.\r
+\r
+       in.pdata\r
+               Private data.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1000">[Structures]<a name="User2dmode20Access20Layer2fual5fci5fcall5fioctl5ft">\r
+User-mode Access Layer/ual_ci_call_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_ci_call_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo65">ib_ci_call</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_ci_call_ioctl\r
+{\r
+        struct _ual_ci_call_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo66">ib_ci_op_t</a>                                      ci_op;\r
+                uint64_t                                        h_ca;\r
+                uint32_t                                        num_handles;\r
+                uint64_t                                        handle_array[1];\r
+\r
+        }       in;\r
+        struct _ual_ci_call_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo66">ib_ci_op_t</a>                                      ci_op;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_ci_call_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.ci_op\r
+               Contains information on the operation that needs to be performed\r
+               by the verbs provider.  The proxy marshals the data buffer between\r
+               user mode and kernel space.\r
+\r
+       in.h_ca\r
+               The handle to an open instance of CA returned by a ual_open_ca_ioctl.\r
+\r
+       in.num_handles\r
+               The number of handles in the array at in.p_handle_array.\r
+\r
+       in.handle_array\r
+               First entry in an array of handles used for this operation.  Ignored if\r
+               in.num_handles is zero.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation\r
+\r
+       out.ci_op\r
+               Contains information on the operation that needs to be performed\r
+               by the verbs provider.  The proxy marshals the data buffer between\r
+               user mode and kernel space.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1001">[Structures]<a name="User2dmode20Access20Layer2fual5fclose5fca5fioctl5ft">\r
+User-mode Access Layer/ual_close_ca_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_close_ca_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo68">ib_close_ca</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_close_ca_ioctl\r
+{\r
+        struct _ual_close_ca_ioctl_in\r
+        {\r
+                uint64_t                                        h_ca;\r
+\r
+        }       in;\r
+        struct _ual_close_ca_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_close_ca_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_ca\r
+               The handle to an open instance of CA (in KAL space).\r
+\r
+       out.status\r
+               Status of the operation\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1002">[Structures]<a name="User2dmode20Access20Layer2fual5fcm5freq5fioctl5ft">\r
+User-mode Access Layer/ual_cm_req_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_cm_req_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       al_cep_pre_req call.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_cep_req_ioctl\r
+{\r
+        struct _ual_cep_req_ioctl_in\r
+        {\r
+                net32_t                                         cid;\r
+                <a href="./ib_al_h.html#robo98">ib_cm_req_t</a>                                     cm_req;\r
+                <a href="./ib_types_h.html#robo927">ib_path_rec_t</a>                           paths[2];\r
+                uint8_t                                         pdata[IB_REQ_PDATA_SIZE];\r
+                uint8_t                                         compare[IB_REQ_PDATA_SIZE];\r
+\r
+        }       in;\r
+        struct _ual_cep_req_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                <a href="./ib_types_h.html#robo207">ib_qp_mod_t</a>                                     init;\r
+\r
+        }       out;\r
+\r
+}       ual_cep_req_ioctl_t;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.cid\r
+               CID of the target CEP.\r
+\r
+       in.cm_req\r
+               CM REQ parameters.\r
+\r
+       in.paths\r
+               Array of paths, the first being the primary path to use for the REQ.\r
+\r
+       out.status\r
+               Status of the operation\r
+\r
+       out.init\r
+               QP modify paramters for INIT state transition.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1003">[Structures]<a name="User2dmode20Access20Layer2fual5fcreate5fav5fioctl5ft">\r
+User-mode Access Layer/ual_create_av_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_create_av_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo104">ib_create_av</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_create_av_ioctl\r
+{\r
+        struct _ual_create_av_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_pd;\r
+                <a href="./ib_types_h.html#robo57">ib_av_attr_t</a>                            attr;\r
+\r
+        }       in;\r
+        struct _ual_create_av_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint64_t                                        h_av;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_create_av_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.h_pd\r
+               The handle to an already allocated PD (in KAL space).\r
+\r
+       in.attr\r
+               Attributes of the address vector that needs to be created.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.h_av\r
+               Handle to the newly created address vector.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1004">[Structures]<a name="User2dmode20Access20Layer2fual5fcreate5fcep5fioctl5ft">\r
+User-mode Access Layer/ual_create_cep_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_create_cep_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the output parameters to\r
+       create a CEP.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_create_cep_ioctl\r
+{\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+        net32_t                                         cid;\r
+\r
+}       <strong>ual_create_cep_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       status\r
+               Status of the operation.\r
+\r
+       cid\r
+               CID of the created CEP.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1005">[Structures]<a name="User2dmode20Access20Layer2fual5fcreate5fcq5fioctl5ft">\r
+User-mode Access Layer/ual_create_cq_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_create_cq_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo105">ib_create_cq</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_create_cq_ioctl\r
+{\r
+        struct _ual_create_cq_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_ca;\r
+                void* __ptr64                           h_wait_obj;\r
+                void* __ptr64                           context;\r
+                uint32_t                                        size;\r
+                boolean_t                                       ev_notify;\r
+\r
+        }       in;\r
+        struct _ual_create_cq_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint64_t                                        h_cq;\r
+                uint32_t                                        size;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_create_cq_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.h_ca\r
+               CA handle on which to create the CQ.\r
+\r
+       in.cq_create\r
+               Attributes necessary for creating the cq.\r
+\r
+       in.cq_context\r
+               UAL's cq context that needs to be returned on a callback.\r
+\r
+       in.ev_notify\r
+               Boolean indicating whether asynchronous events should be\r
+               forwared to user-mode.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       h_cq\r
+               Handle to the newly created CQ.\r
+\r
+       size\r
+               Actual size of the newly created CQ.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1006">[Structures]<a name="User2dmode20Access20Layer2fual5fcreate5fmw5fioctl5ft">\r
+User-mode Access Layer/ual_create_mw_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_create_mw_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo108">ib_create_mw</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_create_mw_ioctl\r
+{\r
+        struct _ual_create_mw_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_pd;\r
+\r
+        }       in;\r
+        struct _ual_create_mw_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                net32_t                                         rkey;\r
+                uint64_t                                        h_mw;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_create_mw_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.h_pd\r
+               A handle to the protection domain on which the memory window should\r
+               be created.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.rkey\r
+               RKey associated with the memory window.\r
+\r
+       h_mw\r
+               Handle to the newly created MW.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1007">[Structures]<a name="User2dmode20Access20Layer2fual5fcreate5fqp5fioctl5ft">\r
+User-mode Access Layer/ual_create_qp_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_create_qp_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo109">ib_create_qp</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_create_qp_ioctl\r
+{\r
+        struct _ual_create_qp_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_pd;\r
+                <a href="./ib_types_h.html#robo206">ib_qp_create_t</a>                          qp_create;\r
+                void* __ptr64                           context;\r
+                boolean_t                                       ev_notify;\r
+\r
+        }       in;\r
+        struct _ual_create_qp_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                <a href="./ib_types_h.html#robo205">ib_qp_attr_t</a>                            attr;\r
+                uint64_t                                        h_qp;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_create_qp_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.h_pd\r
+               Protection domain on which to create the QP.\r
+\r
+       in.qp_create\r
+               Attributes necessary for creating the QP.\r
+\r
+       in.context\r
+               UAL's qp context that needs to be returned on a callback.\r
+\r
+       in.ev_notify\r
+               Boolean indicating whether asynchronous events should be\r
+               forwarded to user-mode.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.attr\r
+               Actual attributes of the newly created QP.\r
+\r
+       out.h_qp\r
+               Handle for the newly created QP.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1008">[Structures]<a name="User2dmode20Access20Layer2fual5fdealloc5fpd5fioctl5ft">\r
+User-mode Access Layer/ual_dealloc_pd_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_dealloc_pd_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo110">ib_dealloc_pd</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_dealloc_pd_ioctl\r
+{\r
+        struct _ual_dealloc_pd_ioctl_in\r
+        {\r
+                uint64_t                                        h_pd;\r
+\r
+        }       in;\r
+        struct _ual_dealloc_pd_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_dealloc_pd_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_pd\r
+               The handle of the PD that is going to be deallocated.\r
+\r
+       out.status\r
+               Status of the operation\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1009">[Structures]<a name="User2dmode20Access20Layer2fual5fdereg5fmad5fpool5fioctl5ft">\r
+User-mode Access Layer/ual_dereg_mad_pool_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_dereg_mad_pool_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       deregistering a mad pool to be used with special qp.\r
+       The kernel proxy will deregister and destroy the mad pool\r
+       created on behalf of the user process.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_dereg_mad_pool_ioctl\r
+{\r
+        struct _ual_dereg_mad_pool_ioctl_in\r
+        {\r
+                uint64_t                                        pool_key;\r
+\r
+        }       in;\r
+        struct _ual_dereg_mad_pool_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_dereg_mad_pool_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.pool_key\r
+               <a href="../complib/cl_pool_h.html#robo24">Pool</a> key to the mad pool in kernel space.\r
+\r
+       out.status\r
+               Status of the operation\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1010">[Structures]<a name="User2dmode20Access20Layer2fual5fdereg5fmad5fsvc5fioctl5ft">\r
+User-mode Access Layer/ual_dereg_mad_svc_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_dereg_mad_svc_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       ib_dereg_mad_svc\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_dereg_mad_svc_ioctl\r
+{\r
+        struct _ual_dereg_mad_svc_ioctl_in\r
+        {\r
+                uint64_t                                        h_mad_svc;\r
+\r
+        }       in;\r
+        struct _ual_dereg_mad_svc_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_dereg_mad_svc_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_mad_svc\r
+               Handle to the mad service.\r
+\r
+       out.status\r
+               Status of the operation.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1011">[Structures]<a name="User2dmode20Access20Layer2fual5fdereg5fmr5fioctl5ft">\r
+User-mode Access Layer/ual_dereg_mr_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_dereg_mr_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo112">ib_dereg_mr</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_dereg_mr_ioctl\r
+{\r
+        struct _ual_dereg_mr_ioctl_in\r
+        {\r
+                uint64_t                                        h_mr;\r
+\r
+        }       in;\r
+        struct _ual_dereg_mr_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+        \r
+        }       out;\r
+\r
+} <strong>ual_dereg_mr_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_mr\r
+               A handle to a registered memory region.\r
+\r
+       out.status\r
+               Status of the operation.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1012">[Structures]<a name="User2dmode20Access20Layer2fual5fdereg5fpnp5fioctl5ft">\r
+User-mode Access Layer/ual_dereg_pnp_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_dereg_pnp_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input parameters for cancelling an\r
+       SA request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_dereg_pnp_ioctl\r
+{\r
+        uint64_t                        h_pnp;\r
+\r
+}       <strong>ual_dereg_pnp_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This is an asynchronous IOCTL.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pnp\r
+               Handle to the PnP registration to deregister.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1013">[Structures]<a name="User2dmode20Access20Layer2fual5fdestroy5fav5fioctl5ft">\r
+User-mode Access Layer/ual_destroy_av_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_destroy_av_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo115">ib_destroy_av</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_destroy_av_ioctl\r
+{\r
+        struct _ual_destroy_av_ioctl_in\r
+        {\r
+                uint64_t                                        h_av;\r
+\r
+        }       in;\r
+        struct _ual_destroy_av_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_destroy_av_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_av\r
+               A handle to an existing address vector.\r
+\r
+       out.status\r
+               Status of the operation.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1014">[Structures]<a name="User2dmode20Access20Layer2fual5fdestroy5fcq5fioctl5ft">\r
+User-mode Access Layer/ual_destroy_cq_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_destroy_cq_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo116">ib_destroy_cq</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_destroy_cq_ioctl\r
+{\r
+        struct _ual_destroy_cq_ioctl_in\r
+        {\r
+                uint64_t                                        h_cq;\r
+\r
+        }       in;\r
+        struct _ual_destroy_cq_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_destroy_cq_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_cq\r
+               Handle of the cq that needs to be destroyed.\r
+\r
+       out.status\r
+               Status of the operation.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1015">[Structures]<a name="User2dmode20Access20Layer2fual5fdestroy5fmw5fioctl5ft">\r
+User-mode Access Layer/ual_destroy_mw_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_destroy_mw_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo119">ib_destroy_mw</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_destroy_mw_ioctl\r
+{\r
+        struct _ual_destroy_mw_ioctl_in\r
+        {\r
+                uint64_t                                        h_mw;\r
+\r
+        }       in;\r
+        struct _ual_destroy_mw_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_destroy_mw_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_mw\r
+               A handle to an existing memory window.\r
+\r
+       out.status\r
+               Status of the operation\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1016">[Structures]<a name="User2dmode20Access20Layer2fual5fdestroy5fqp5fioctl5ft">\r
+User-mode Access Layer/ual_destroy_qp_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_destroy_qp_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo120">ib_destroy_qp</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_destroy_qp_ioctl\r
+{\r
+        struct _ual_destroy_qp_ioctl_in\r
+        {\r
+                uint64_t                                        h_qp;\r
+\r
+        }       in;\r
+        struct _ual_destroy_qp_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_destroy_qp_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_qp\r
+               Handle of the QP that needs to be destroyed.\r
+\r
+       out.status\r
+               Status of the operation.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1017">[Structures]<a name="User2dmode20Access20Layer2fual5fdetach5fmcast5fioctl5ft">\r
+User-mode Access Layer/ual_detach_mcast_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_detach_mcast_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       verbs detach call.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_detach_mcast_ioctl\r
+{\r
+        struct _ual_detach_mcast_ioctl_in\r
+        {\r
+                uint64_t                                        h_attach;\r
+\r
+        }       in;\r
+        struct _ual_detach_mcast_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_detach_mcast_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_attach\r
+               A handle to the multicast group.\r
+\r
+       out.status\r
+               Status of the operation.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1018">[Structures]<a name="User2dmode20Access20Layer2fual5fforce5fapm5fioctl5ft">\r
+User-mode Access Layer/ual_force_apm_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_force_apm_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo125">ib_force_apm</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_force_apm_ioctl\r
+{\r
+        union _ual_force_apm_ioctl_in\r
+        {\r
+                uint64_t                                        h_qp;\r
+\r
+        }       in;\r
+        struct _ual_force_apm_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_force_apm_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_qp\r
+               A handle to the QP to migrate.\r
+\r
+       out.status\r
+               Status of the operation\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1019">[Structures]<a name="User2dmode20Access20Layer2fual5fget5fuvp5fname5ft">\r
+User-mode Access Layer/ual_get_uvp_name_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_get_uvp_name_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       getting the user library information.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_get_uvp_name\r
+{\r
+        struct _ual_get_uvp_name_in\r
+        {\r
+                <a href="./ib_types_h.html#robo895">ib_net64_t</a>                              ca_guid;\r
+\r
+        }       in;\r
+        struct _ual_get_uvp_name_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                 status;\r
+                char                                    uvp_lib_name[MAX_LIB_NAME];\r
+\r
+        }       out;\r
+\r
+}       ual_get_uvp_name_ioctl_t;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.ca_guid\r
+               The GUID of the channel adapter\r
+\r
+       out.status\r
+               Status of the operation\r
+\r
+       out.uvp_lib_name\r
+               The vendor's library name associated with the CA\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span>\r
+<hr />\r
+\r
+<h2><a name="robo1020">[Structures]<a name="User2dmode20Access20Layer2fual5fmad5frecv5fioctl5ft">\r
+User-mode Access Layer/ual_mad_recv_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_mad_recv_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters to get\r
+       the mad_element information upon receiving MAD.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_mad_recv_ioctl\r
+{\r
+        struct _ual_mad_recv_comp_ioctl_in\r
+        {\r
+                uint64_t                                        h_mad;\r
+                <a href="./ib_al_h.html#robo150">ib_mad_element_t</a>* __ptr64       p_user_mad;\r
+                <a href="./ib_types_h.html#robo882">ib_mad_t</a>* __ptr64                       p_mad_buf;\r
+                <a href="./ib_types_h.html#robo859">ib_grh_t</a>* __ptr64                       p_grh;\r
+\r
+        }       in;\r
+        struct _ual_mad_recv_comp_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+} <strong>ual_mad_recv_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_mad\r
+               Received MAD handle handed to usermode in the MAD recv notification.\r
+\r
+       in.p_user_mad\r
+               Pointer to a user-mode mad element.\r
+\r
+       in.p_mad_buf\r
+               Pointer to the MAD element's user-mode buffer.\r
+\r
+       in.p_grh\r
+               Ponter to the MAD element's user-mode GRH buffer.\r
+\r
+       out.status\r
+               Status of the operation.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1021">[Structures]<a name="User2dmode20Access20Layer2fual5fmodify5fav5fioctl5ft">\r
+User-mode Access Layer/ual_modify_av_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_modify_av_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo155">ib_modify_av</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_modify_av_ioctl\r
+{\r
+        struct _ual_modify_av_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_av;\r
+                <a href="./ib_types_h.html#robo57">ib_av_attr_t</a>                            attr;\r
+\r
+        }       in;\r
+        struct _ual_modify_av_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_modify_av_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.h_av\r
+               A handle to an existing address vector.\r
+\r
+       in.attr\r
+               The requested attributes to be used for modifying the address vector.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1022">[Structures]<a name="User2dmode20Access20Layer2fual5fmodify5fca5fioctl5ft">\r
+User-mode Access Layer/ual_modify_ca_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_modify_ca_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo156">ib_modify_ca</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_modify_ca_ioctl\r
+{\r
+        struct _ual_modify_ca_ioctl_in\r
+        {\r
+                uint64_t                                        h_ca;\r
+                uint8_t                                         port_num;\r
+                <a href="./ib_types_h.html#robo61">ib_ca_mod_t</a>                                     ca_mod;\r
+                <a href="./ib_types_h.html#robo199">ib_port_attr_mod_t</a>                      port_attr_mod;\r
+\r
+        }       in;\r
+        struct _ual_modify_ca_ioclt_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+\r
+}       <strong>ual_modify_ca_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_ca\r
+               The handle to an open instance of CA (in KAL space).\r
+\r
+       in.port_num\r
+               An index of the port that is being modified.\r
+\r
+       in.ca_mod\r
+               The mask of the attributes and counters to modify.\r
+\r
+       in.port_attr_mod\r
+               <a href="../complib/cl_list_h.html#robo15">List</a> of port attribute information to modify.\r
+\r
+       out.status\r
+               Status of the operation\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1023">[Structures]<a name="User2dmode20Access20Layer2fual5fmodify5fcq5fioctl5ft">\r
+User-mode Access Layer/ual_modify_cq_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_modify_cq_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo157">ib_modify_cq</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_modify_cq_ioctl\r
+{\r
+        struct _ual_modify_cq_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_cq;\r
+                uint32_t                                        size;\r
+\r
+        }       in;\r
+        struct _ual_modify_cq_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint32_t                                        size;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_modify_cq_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.h_cq\r
+               A handle to the CQ to modify.\r
+\r
+       in.size\r
+               The requested new size of the CQ.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.size\r
+               The actual size of the CQ.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1024">[Structures]<a name="User2dmode20Access20Layer2fual5fmodify5fqp5fioctl5ft">\r
+User-mode Access Layer/ual_modify_qp_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_modify_qp_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo158">ib_modify_qp</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_modify_qp_ioctl\r
+{\r
+        struct _ual_modify_qp_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_qp;\r
+                <a href="./ib_types_h.html#robo207">ib_qp_mod_t</a>                                     modify_attr;\r
+\r
+        }       in;\r
+        struct _ual_modify_qp_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                //ib_qp_query_t                         query_attr; // Not returned by AL\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_modify_qp_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.h_qp\r
+               A handle to an existing Queue Pair.\r
+\r
+       in.modify_attr\r
+               Attributes used for modifying the QP.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.query_attr\r
+               On return from the ioctl, contains the actual attributes of\r
+               the QP just modified.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1025">[Structures]<a name="User2dmode20Access20Layer2fual5fopen5fca5fioctl5ft">\r
+User-mode Access Layer/ual_open_ca_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_open_ca_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo164">ib_open_ca</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_open_ca_ioctl\r
+{\r
+        struct _ual_open_ca_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      guid;\r
+                void* __ptr64                           context;\r
+\r
+        }       in;\r
+\r
+        struct _ual_open_ca_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint64_t                                        h_ca;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_open_ca_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.guid\r
+               The GUID of the channel adapter to open.\r
+\r
+       in.context\r
+               A caller-specified context to associate with this opened instance\r
+               of the channel adapter.  This context is returned to the user when\r
+               invoking asynchronous callbacks referencing this channel adapter.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation\r
+\r
+       out.h_ca\r
+               On return from IOCTL, contains the CA Handle from AL.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1026">[Structures]<a name="User2dmode20Access20Layer2fual5fpeek5fcq5fioctl5ft">\r
+User-mode Access Layer/ual_peek_cq_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_peek_cq_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo166">ib_peek_cq</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_peek_cq_ioctl\r
+{\r
+        struct _ual_peek_cq_ioctl_in\r
+        {\r
+                uint64_t                                        h_cq;\r
+\r
+        }       in;\r
+        struct _ual_peek_cq_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint32_t                                        n_cqes;\r
+\r
+        }       out;\r
+\r
+} <strong>ual_peek_cq_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_cq\r
+               A handle to a CQ.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.n_cqes\r
+               The number of completion queue entries currently on the CQ.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1027">[Structures]<a name="User2dmode20Access20Layer2fual5fpoll5fcq5fioctl5ft">\r
+User-mode Access Layer/ual_poll_cq_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_poll_cq_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo198">ib_poll_cq</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_poll_cq_ioctl\r
+{\r
+        struct _ual_poll_cq_ioctl_in\r
+        {\r
+                uint64_t                                        h_cq;\r
+                uint32_t                                        num_wc;\r
+\r
+        }       in;\r
+        struct _ual_poll_cq_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint32_t                                        num_wc;\r
+                <a href="./ib_types_h.html#robo260">ib_wc_t</a>                                         wc[1];\r
+                /* Additional WC's follow. */\r
+        }       out;\r
+\r
+}       <strong>ual_poll_cq_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_cq\r
+               A handle to cq that is going to be polled for completions.\r
+\r
+       in.num_wc\r
+               Number of work completions in the output array.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.num_wc\r
+               Number of work completions polled.\r
+\r
+       out.wc\r
+               First work completion in the array to use for polling.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1028">[Structures]<a name="User2dmode20Access20Layer2fual5fpoll5fpnp5fioctl5ft">\r
+User-mode Access Layer/ual_poll_pnp_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_poll_pnp_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the parameters for retriveing data for\r
+       a PnP event.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_poll_pnp_ioctl\r
+{\r
+        struct _ual_poll_pnp_ioctl_in\r
+        {\r
+                uint64_t                                        evt_hdl;\r
+\r
+        }       in;\r
+        struct _ual_poll_pnp_ioctl_out\r
+        {\r
+                <a href="./ib_al_h.html#robo196">ib_pnp_rec_t</a>                            pnp_rec;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_poll_pnp_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This is a synchronous IOCTL.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       in.evt_hdl\r
+               Handle to a new PnP event.\r
+\r
+       out.pnp_rec\r
+               Buffer for the new PnP event.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1029">[Structures]<a name="User2dmode20Access20Layer2fual5fpost5frecv5fioctl5ft">\r
+User-mode Access Layer/ual_post_recv_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_post_recv_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo202">ib_post_recv</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_post_recv_ioctl\r
+{\r
+        struct _ual_post_recv_ioctl_in\r
+        {\r
+                uint64_t                                        h_qp;\r
+                uint32_t                                        num_wr;\r
+                uint32_t                                        num_ds;\r
+                <a href="./ib_types_h.html#robo225">ib_recv_wr_t</a>                            recv_wr[1];\r
+                /* Additional work requests follow, followed by data segments. */\r
+\r
+        }       in;\r
+        struct _ual_post_recv_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint32_t                                        failed_cnt;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_post_recv_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_qp\r
+               A handle to QP where the work request is being posted.\r
+\r
+       in.num_wr\r
+               Number of work request items in the array of work requests.\r
+\r
+       in.num_ds\r
+               Number of data segments following the array of work requests.\r
+\r
+       in.recv_wr\r
+               First work request in the array of work requests being posted.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       failed_cnt\r
+               Number of work request that failed.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1030">[Structures]<a name="User2dmode20Access20Layer2fual5fpost5fsend5fioctl5ft">\r
+User-mode Access Layer/ual_post_send_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_post_send_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo203">ib_post_send</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_post_send_ioctl\r
+{\r
+        struct _ual_post_send_ioctl_in\r
+        {\r
+                uint64_t                                        h_qp;\r
+                uint32_t                                        num_wr;\r
+                uint32_t                                        num_ds;\r
+                <a href="./ib_types_h.html#robo249">ib_send_wr_t</a>                            send_wr[1];\r
+                /* Additional work requests follow, followed by data segments. */\r
+\r
+        }       in;\r
+        struct _ual_post_send_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint32_t                                        failed_cnt;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_post_send_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_qp\r
+               A handle to QP where the work request is being posted.\r
+\r
+       in.num_wr\r
+               Number of work request items in the array of work requests.\r
+\r
+       in.num_ds\r
+               Number of data segments following the array of work requests.\r
+\r
+       in.send_wr\r
+               First work request in the array of work requests being posted.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.failed_cnt\r
+               Number of work request that failed.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1031">[Structures]<a name="User2dmode20Access20Layer2fual5fquery5fav5fioctl5ft">\r
+User-mode Access Layer/ual_query_av_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_query_av_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo212">ib_query_av</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_query_av_ioctl\r
+{\r
+        struct _ual_query_av_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_av;\r
+\r
+        }       in;\r
+        struct _ual_query_av_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                <a href="./ib_types_h.html#robo57">ib_av_attr_t</a>                            attr;\r
+                void* __ptr64                           pd_context;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_query_av_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.h_av\r
+               A handle to an existing address vector.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.attr\r
+               Attributes of the address vector.\r
+\r
+       pd_context\r
+               Context associated with the PD when created.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1032">[Structures]<a name="User2dmode20Access20Layer2fual5fquery5fca5fioctl5ft">\r
+User-mode Access Layer/ual_query_ca_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_query_ca_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo213">ib_query_ca</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_query_ca_ioctl\r
+{\r
+        struct _ual_query_ca_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_ca;\r
+                uint32_t                                        byte_cnt;\r
+                <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>* __ptr64           p_ca_attr;\r
+\r
+        }       in;\r
+        struct _ual_query_ca_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint32_t                                        byte_cnt;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_query_ca_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.h_ca\r
+               The handle to an open instance of CA returned via a\r
+               ual_open_ca_ioctl structure.\r
+\r
+       in.byte_cnt\r
+               Specifies the size of the data buffer referenced by the p_ca_attr\r
+               parameter.\r
+\r
+       p_ca_attr\r
+               A reference to a buffer where the channel adapter attributes,\r
+               including port attribute information will be copied.  If this parameter\r
+               is NULL, then the required buffer size needed to return all of the CA\r
+               attribute information is returned through the out.byte_cnt parameter.\r
+               The <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a> structure for the specified channel adapter is stored\r
+               at the top of this buffer.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation\r
+\r
+       out.byte_cnt\r
+               Contains the number of bytes used or needed to copy all CA attributes.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1033">[Structures]<a name="User2dmode20Access20Layer2fual5fquery5fcq5fioctl5ft">\r
+User-mode Access Layer/ual_query_cq_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_query_cq_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo215">ib_query_cq</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_query_cq_ioctl\r
+{\r
+        struct _ual_query_cq_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_cq;\r
+\r
+        }       in;\r
+        struct _ual_query_cq_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint32_t                                        size;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_query_cq_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.h_cq\r
+               A handle to an existing CQ.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.size\r
+               The size of the CQ.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1034">[Structures]<a name="User2dmode20Access20Layer2fual5fquery5fmr5fioctl5ft">\r
+User-mode Access Layer/ual_query_mr_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_query_mr_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo216">ib_query_mr</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_query_mr_ioctl\r
+{\r
+        struct _ual_query_mr_ioctl_in\r
+        {\r
+                uint64_t                                        h_mr;\r
+\r
+        }       in;\r
+        struct _ual_query_mr_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                <a href="./ib_types_h.html#robo159">ib_mr_attr_t</a>                            attr;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_query_mr_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_mr\r
+               A handle to a registered memory region.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.attr\r
+               Attributes of the registered memory region.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1035">[Structures]<a name="User2dmode20Access20Layer2fual5fquery5fmw5fioctl5ft">\r
+User-mode Access Layer/ual_query_mw_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_query_mw_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo217">ib_query_mw</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_query_mw_ioctl\r
+{\r
+        struct _ual_query_mw_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_mw;\r
+\r
+        }       in;\r
+        struct _ual_query_mw_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                void* __ptr64                           pd_context;\r
+                net32_t                                         rkey;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_query_mw_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       in.h_mw\r
+               A handle to an existing memory window.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       pd_context\r
+               This user-mode context for the protection domain\r
+               associated with the memory window.\r
+\r
+       rkey\r
+               RKey associated with the memory window.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1036">[Structures]<a name="User2dmode20Access20Layer2fual5fquery5fqp5fioctl5ft">\r
+User-mode Access Layer/ual_query_qp_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_query_qp_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo218">ib_query_qp</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_query_qp_ioctl\r
+{\r
+        struct _ual_query_qp_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_qp;\r
+\r
+        }       in;\r
+        struct _ual_query_qp_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                <a href="./ib_types_h.html#robo205">ib_qp_attr_t</a>                            attr;\r
+\r
+        }       out;\r
+\r
+} <strong>ual_query_qp_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.umv_buf\r
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to\r
+               exchange private information with the kernel-mode HCA driver.\r
+\r
+       h_qp\r
+               Handle to the QP whose attributes to query.\r
+\r
+       out.umv_buf\r
+               Returns the status from the HCA driver to the user-mode HCA library,\r
+               along with any vendor specific output information.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.attr\r
+               Attributes of the QP.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1037">[Structures]<a name="User2dmode20Access20Layer2fual5frearm5fcq5fioctl5ft">\r
+User-mode Access Layer/ual_rearm_cq_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_rearm_cq_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo222">ib_rearm_cq</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_rearm_cq_ioctl\r
+{\r
+        struct _ual_rearm_cq_ioctl_in\r
+        {\r
+                uint64_t                                        h_cq;\r
+                boolean_t                                       solicited;\r
+\r
+        }       in;\r
+        struct _ual_rearm_cq_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_rearm_cq_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_cq\r
+               A handle to a CQ.\r
+\r
+       in.solicited\r
+               Flag for rearm CQ.\r
+\r
+       out.status\r
+               Status of the operation.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1038">[Structures]<a name="User2dmode20Access20Layer2fual5frearm5fn5fcq5fioctl5ft">\r
+User-mode Access Layer/ual_rearm_n_cq_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_rearm_n_cq_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo223">ib_rearm_n_cq</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_rearm_n_cq_ioctl\r
+{\r
+        struct _ual_rearm_n_cq_ioctl_in\r
+        {\r
+                uint64_t                                        h_cq;\r
+                uint32_t                                        n_cqes;\r
+\r
+        }       in;\r
+        struct _ual_rearm_n_cq_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_rearm_n_cq_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_cq\r
+               A handle to a CQ.\r
+\r
+       in.n_cqes\r
+               Rearm the CQ to signal when the next N completions are added.\r
+\r
+       in.status\r
+               Status of the operation.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1039">[Structures]<a name="User2dmode20Access20Layer2fual5frearm5fpnp5fioctl5fin5ft">\r
+User-mode Access Layer/ual_rearm_pnp_ioctl_in_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_rearm_pnp_ioctl_in_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input parameters for requesting\r
+       notification of the next PnP event.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_rearm_pnp_ioctl_in\r
+{\r
+        uint64_t                                        pnp_hdl;\r
+        uint64_t                                        last_evt_hdl;\r
+        void* __ptr64                           last_evt_context;\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         last_evt_status;\r
+\r
+}       <strong>ual_rearm_pnp_ioctl_in_t</strong>;\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This is an asynchronous IOCTL.\r
+\r
+       The output parameters are a <a href="#robo1040">ual_rearm_pnp_ioctl_out_t</a>.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       pnp_hdl\r
+               Handle to the PnP registration to rearm.\r
+\r
+       last_evt_hdl\r
+               Handle to the last PnP event processed.\r
+\r
+       last_evt_context\r
+               Context value to set for the last reported PnP event.\r
+\r
+       last_evt_status\r
+               Status value to return for the last reported PnP event.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1040">[Structures]<a name="User2dmode20Access20Layer2fual5frearm5fpnp5fioctl5fout5ft">\r
+User-mode Access Layer/ual_rearm_pnp_ioctl_out_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_rearm_pnp_ioctl_out_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the output parameters for a PnP event.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_rearm_pnp_ioctl_out\r
+{\r
+        uint64_t                                        evt_hdl;\r
+        uint32_t                                        evt_size;\r
+\r
+}       <strong>ual_rearm_pnp_ioctl_out_t</strong>;\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This is an asynchronous IOCTL.\r
+\r
+       The output parameters are identical to that of ual_reg_pnp_ioctl_t.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       evt_hdl\r
+               Handle to a new PnP event.\r
+\r
+       evt_size\r
+               Buffer size needed to poll the new PnP event.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1041">[Structures]<a name="User2dmode20Access20Layer2fual5freg5fmad5fpool5fioctl5ft">\r
+User-mode Access Layer/ual_reg_mad_pool_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_reg_mad_pool_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       registering a mad pool to be used with special qp. This ioctl\r
+       will result in user-mode pool registered. Additionally,\r
+       the kernel proxy will allocate a kernel mad pool and register it\r
+       so that later mad_sends will have the appropriate pool in kernel.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_reg_mad_pool_ioctl\r
+{\r
+        struct _ual_reg_mad_pool_ioctl_in\r
+        {\r
+                uint64_t                                        h_pd;\r
+\r
+        }       in;\r
+        struct _ual_reg_mad_pool_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint64_t                                        pool_key;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_reg_mad_pool_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_pd\r
+               PD associated with the pool\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.pool_key\r
+               <a href="../complib/cl_pool_h.html#robo24">Pool</a> key to the mad pool in kernel space\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1042">[Structures]<a name="User2dmode20Access20Layer2fual5freg5fmad5fsvc5fioctl5ft">\r
+User-mode Access Layer/ual_reg_mad_svc_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_reg_mad_svc_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo228">ib_reg_mad_svc</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_reg_mad_svc_ioctl\r
+{\r
+        struct _ual_reg_mad_svc_ioctl_in\r
+        {\r
+                uint64_t                                        h_qp;\r
+                <a href="./ib_al_h.html#robo151">ib_mad_svc_t</a>                            mad_svc;\r
+\r
+        }       in;\r
+        struct _ual_reg_mad_svc_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint64_t                                        h_mad_svc;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_reg_mad_svc_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_qp\r
+               Handle to the special QP or MAD QP.\r
+\r
+       in.mad_svc\r
+               Mad service definition.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.h_mad_svc\r
+               Handle to the mad service.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1043">[Structures]<a name="User2dmode20Access20Layer2fual5freg5fmem5fioctl5ft">\r
+User-mode Access Layer/ual_reg_mem_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_reg_mem_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo229">ib_reg_mem</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_reg_mem_ioctl\r
+{\r
+        struct _ual_reg_mem_ioctl_in\r
+        {\r
+                uint64_t                                        h_pd;\r
+                <a href="./ib_types_h.html#robo160">ib_mr_create_t</a>                          mem_create;\r
+\r
+        }       in;\r
+        struct _ual_reg_mem_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                net32_t                                         lkey;\r
+                net32_t                                         rkey;\r
+                uint64_t                                        h_mr;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_reg_mem_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_pd\r
+               Handle to the protection domain on which to register the memory.\r
+\r
+       in.mem_create\r
+               Information for registering the memory region.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.lkey\r
+               LKey value returned by verb.\r
+\r
+       out.rkey\r
+               RKey value returned by verb.\r
+\r
+       h_mr\r
+               Handle to the registered memory region.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1044">[Structures]<a name="User2dmode20Access20Layer2fual5freg5fpnp5fioctl5fin5ft">\r
+User-mode Access Layer/ual_reg_pnp_ioctl_in_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_reg_pnp_ioctl_in_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input parameters for registering\r
+       for PnP events.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ual_reg_pnp_ioctl_in\r
+{\r
+        <a href="./ib_al_h.html#robo190">ib_pnp_class_t</a>                          pnp_class;\r
+        void* __ptr64                           sync_event;\r
+        <a href="./ib_types_h.html#robo49">ib_api_status_t</a>* __ptr64        p_status;\r
+        uint64_t* __ptr64                       p_hdl;\r
+\r
+}       <strong>ual_reg_pnp_ioctl_in_t</strong>;\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This is an asynchronous IOCTL.\r
+\r
+       The output parameters are a <a href="#robo1040">ual_rearm_pnp_ioctl_out_t</a>.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       pnp_class\r
+               Class of PnP events for which to register.\r
+\r
+       p_status\r
+               Pointer to user-mode status variable to set in failure case.\r
+\r
+       p_hdl\r
+               Pointer to user-mode handle variable to set in success case.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1045">[Structures]<a name="User2dmode20Access20Layer2fual5freg5fshared5fioctl5ft">\r
+User-mode Access Layer/ual_reg_shared_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_reg_shared_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo232">ib_reg_shared</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_reg_shared_ioctl\r
+{\r
+        struct _ual_reg_shared_ioctl_in\r
+        {\r
+                uint64_t                                        h_mr;\r
+                uint64_t                                        h_pd;\r
+                <a href="./ib_types_h.html#robo45">ib_access_t</a>                                     access_ctrl;\r
+                uint64_t                                        vaddr;\r
+\r
+        }       in;\r
+        struct _ual_reg_shared_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint64_t                                        vaddr;\r
+                net32_t                                         lkey;\r
+                net32_t                                         rkey;\r
+                uint64_t                                        h_new_mr;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_reg_shared_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_mr\r
+               A handle to the existing registered memory region.\r
+\r
+       in.h_pd\r
+               A handle to the PD on which memory is being registered.\r
+\r
+       in.access_ctrl\r
+               Access control for the new memory region.\r
+\r
+       in.vaddr\r
+               Requested virtual address.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.vaddr\r
+               Actual virtual address of the registered region.\r
+\r
+       out.l_key\r
+               LKey of the memory region.\r
+\r
+       out.rkey\r
+               RKey of the memory region.\r
+\r
+       h_new_mr\r
+               Handle to the registered memory region.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1046">[Structures]<a name="User2dmode20Access20Layer2fual5freg5fshmid5fioctl5ft">\r
+User-mode Access Layer/ual_reg_shmid_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_reg_shmid_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       ib_create_shmid\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_reg_shmid_ioctl\r
+{\r
+        struct _ual_reg_shmid_ioctl_in\r
+        {\r
+                uint64_t                                        h_pd;\r
+                <a href="./ib_al_h.html#robo250">ib_shmid_t</a>                                      shmid;\r
+                <a href="./ib_types_h.html#robo160">ib_mr_create_t</a>                          mr_create;\r
+\r
+        }       in;\r
+        struct _ual_reg_shmid_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint64_t                                        vaddr;\r
+                net32_t                                         lkey;\r
+                net32_t                                         rkey;\r
+                uint64_t                                        h_mr;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_reg_shmid_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       in.h_pd\r
+               A handle to an existing protection domain that the memory\r
+               should be registered with.\r
+\r
+       in.shmid\r
+               An identifier to the shared memory region.\r
+\r
+       in.mr_create\r
+               Information describing the attributes of the memory region to\r
+               register.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.vaddr\r
+               Assigned I/O virtual address for the memory region.\r
+\r
+       out.lkey\r
+               The local access key associated with this registered memory\r
+               region.\r
+\r
+       out.rkey\r
+               A key that may be used by a remote end-point when performing RDMA\r
+               or atomic operations to this registered memory region.\r
+\r
+       out.h_mr\r
+               Upon successful completion of this call, this references a handle\r
+               to the registered memory region.  This handle is used when performing\r
+               data transfers and to deregister the memory.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1047">[Structures]<a name="User2dmode20Access20Layer2fual5frereg5fmem5fioctl5ft">\r
+User-mode Access Layer/ual_rereg_mem_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_rereg_mem_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       ib_modify_mr\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_rereg_mem_ioctl\r
+{\r
+        struct _ual_rereg_mem_ioctl_in\r
+        {\r
+                uint64_t                                        h_mr;\r
+                <a href="./ib_types_h.html#robo161">ib_mr_mod_t</a>                                     mem_mod_mask;\r
+                <a href="./ib_types_h.html#robo160">ib_mr_create_t</a>                          mem_create;\r
+                uint64_t                                        h_pd;\r
+\r
+        }       in;\r
+        struct _ual_rereg_mem_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                net32_t                                         lkey;\r
+                net32_t                                         rkey;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_rereg_mem_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_mr\r
+               A handle to a registered memory region that is being modified.\r
+\r
+       in.mem_mod_mask\r
+               The attributes to use when modifying the memory region.\r
+\r
+       in.mem_create\r
+               Information to use for modifying the memory region.  Required only\r
+               for changes other than the PD.\r
+\r
+       in.h_pd\r
+               PD Handle for changing protection domains.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.l_key\r
+               LKey of the memory region.\r
+\r
+       out.rkey\r
+               RKey of the memory region.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1048">[Structures]<a name="User2dmode20Access20Layer2fual5fsend5fmad5fioctl5ft">\r
+User-mode Access Layer/ual_send_mad_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_send_mad_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       <a href="./ib_al_h.html#robo247">ib_send_mad</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_send_mad_ioctl\r
+{\r
+        struct _ual_send_mad_ioctl_in\r
+        {\r
+                uint64_t                                                h_mad_svc;\r
+                uint64_t                                                pool_key;\r
+                uint64_t                                                h_av;\r
+                <a href="./ib_al_h.html#robo150">ib_mad_element_t</a>* __ptr64               p_mad_element;\r
+                uint32_t                                                size;\r
+                void* __ptr64* __ptr64          ph_proxy;\r
+\r
+        }       in;\r
+        struct _ual_send_mad_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                                 status;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_send_mad_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_mad_svc\r
+               Handle to the mad service.\r
+\r
+       in.pool_key\r
+               <a href="../complib/cl_pool_h.html#robo24">Pool</a> key associated with the pool in kernel space.\r
+\r
+       in.h_av\r
+               handle to address vector of MAD.\r
+\r
+       in.p_mad_element\r
+               Pointer to the user-mode MAD element.  The proxy marshals this data.\r
+\r
+       in.size\r
+               size of MAD buffer to send.\r
+\r
+       in.ph_proxy\r
+               Location to which to write the context used to cancel the MAD.\r
+\r
+       out.status\r
+               Status of the operation.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1049">[Structures]<a name="User2dmode20Access20Layer2fual5fsend5fsa5freq5ft">\r
+User-mode Access Layer/ual_send_sa_req_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_send_sa_req_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters for\r
+       ib_create_shmid\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_send_sa_req_ioctl\r
+{\r
+        struct _ual_send_sa_req_ioctl_in\r
+        {\r
+                net64_t                                         port_guid;\r
+                uint32_t                                        timeout_ms;\r
+                uint32_t                                        retry_cnt;\r
+                <a href="./ib_al_h.html#robo258">ib_user_query_t</a>                         sa_req;\r
+                uint8_t                                         attr[IB_SA_DATA_SIZE];\r
+                uint64_t* __ptr64                       ph_sa_req;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>* __ptr64        p_status;\r
+\r
+        }       in;\r
+        struct _ual_send_sa_req_ioctl_out\r
+        {\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint64_t                                        h_resp;\r
+                uint32_t                                        resp_size;\r
+\r
+        }       out;\r
+\r
+}       ual_send_sa_req_ioctl_t;\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       in.sa_mad_data\r
+               The SA request to send.\r
+\r
+       in.attr\r
+               The SA attribute data to send.\r
+\r
+       in.ph_sa_req\r
+               Pointer to UAL's query handle.  The proxy fills this in\r
+               before returning from the IOCTL handler to allow cancelation.\r
+\r
+       in.p_status\r
+               Pointer to status of the query.\r
+\r
+       out.status\r
+               Status of the query if it was initiated successfully.\r
+\r
+       out.h_resp\r
+               Handle to a response MAD.\r
+\r
+       out.resp_size\r
+               Size, in bytes, of the response MAD's buffer.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1050">[Structures]<a name="User2dmode20Access20Layer2fual5fspl5fqp5fioctl5ft">\r
+User-mode Access Layer/ual_spl_qp_ioctl_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ual_spl_qp_ioctl_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOCTL structure containing the input and output parameters to get\r
+       the alias qp from KAL.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef union _ual_spl_qp_ioctl\r
+{\r
+        struct _ual_spl_qp_ioctl_in\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                uint64_t                                        h_pd;\r
+                <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      port_guid;\r
+                <a href="./ib_types_h.html#robo206">ib_qp_create_t</a>                          qp_create;\r
+                void* __ptr64                           context;\r
+\r
+        }       in;\r
+        struct _ual_spl_qp_ioctl_out\r
+        {\r
+                <a href="./ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            umv_buf;\r
+                <a href="./ib_types_h.html#robo49">ib_api_status_t</a>                         status;\r
+                uint64_t                                        h_qp;\r
+\r
+        }       out;\r
+\r
+}       <strong>ual_spl_qp_ioctl_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       in.h_pd\r
+               Protection domain for the special qp.\r
+\r
+       in.port_guid\r
+               Port GUID on which to allocate the special QP.\r
+\r
+       in.qp_create\r
+               Special QP creation parameters.\r
+\r
+       in.qp_context\r
+               Context to associate with the QP, to be used in any notifications.\r
+\r
+       out.status\r
+               Status of the operation.\r
+\r
+       out.h_qp\r
+               Handle to the special QP.\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/iba/ib_ci_h.html b/trunk/docs/iba/ib_ci_h.html
new file mode 100644 (file)
index 0000000..997a904
--- /dev/null
@@ -0,0 +1,2719 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/iba/ib_ci_h.html</title>\r
+<!-- Source: ./inc/iba/ib_ci.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/iba/ib_ci.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:23\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo39">[Modules]<a name="IB5fAPI2fVerbs">\r
+IB_API/Verbs</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>Verbs</strong> -- <strong>Verbs</strong> implements the hardware and software glue to the OS layer.\r
+</pre>\r
+</span><p><strong>COPYRIGHT</strong></p>\r
+<span class="COPYRIGHT"><pre>       Copyright© 2001 Intel Corporation - All Rights Reserved.\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The <strong>Verbs</strong> API definition defines the interface mechanism between an IHV\r
+       supplied driver component. It implements verbs functionality as defined\r
+       Volume 1, of the InfiniBand(tm) specifications.\r
+</pre>\r
+</span><p><strong>AUTHOR</strong></p>\r
+<span class="AUTHOR"><pre>       Intel Corporation\r
+</pre>\r
+</span><p><strong>CREATION DATE</strong></p>\r
+<span class="CREATION_DATE"><pre>       XX.XX.XX\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Evolving Spec!!\r
+       Invalid Handle checks are a mere signature checks in kernel mode. Hence\r
+       passing invalid pointer would lead to panics in the kernel. For user mode\r
+       These are verified for most verbs that need to take a kernel transition.\r
+       <strong>Verbs</strong> those are entirely done in user mode that would affect speed path\r
+       do not perform consistency checks. So invalid pointers would lead to\r
+       application crash with core dumps.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1109">[Functions]<a name="Verbs2fci5fallocate5fpd">\r
+Verbs/ci_allocate_pd</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_allocate_pd</strong> -- Allocate a protection domain for this adapter.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_allocate_pd</strong>) (\r
+        IN              const   ib_ca_handle_t                          h_ca,\r
+        IN              const   <a href="./ib_types_h.html#robo165">ib_pd_type_t</a>                            type,\r
+                OUT                     ib_pd_handle_t                          *ph_pd,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine allocates a protection domain handle, which is later\r
+       used to create QP's, Register Memory Regions, Bind Memory Windows\r
+       and address vectors. Protection domain has no InfiniBand architectural\r
+       attributes but the OS implements policy on its usage and allocation.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] Handle returned by <a href="#robo1136">ci_open_ca</a>()\r
+\r
+       type\r
+               [in] Type of the protection domain.  CA vendors may use this\r
+               information to optimize how the PD is allocated.\r
+\r
+       ph_pd\r
+               [out] The handle to the newly created protection domain\r
+\r
+       p_umv_buf\r
+               [in/out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               PD is successfully allocated and the ph_pd is valid.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               No more PD's available for this adapter.\r
+\r
+       IB_INVALID_CA_HANDLE\r
+               HCA handle is not valid\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1120">ci_deallocate_pd</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1110">[Functions]<a name="Verbs2fci5fasync5fevent5fcb5ft">\r
+Verbs/ci_async_event_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_async_event_cb_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Asynchronous event notification routine.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(*<strong>ci_async_event_cb_t</strong>)(\r
+        IN      const   <a href="./ib_types_h.html#robo1157">ib_event_rec_t</a>* const                   p_event_record );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_event_record\r
+               [in] Information describing the type of event that has occurred.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine is called when an asynchronous event is generated by a\r
+       channel adapter.  The event notification record passed has relevant\r
+       information on the type of the event, the source that caused the event,\r
+       and the context associated.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1111">[Functions]<a name="Verbs2fci5fattach5fmcast">\r
+Verbs/ci_attach_mcast</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_attach_mcast</strong> -- Attach a queue pair to a multicast group\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_attach_mcast</strong>) (\r
+        IN              const   ib_qp_handle_t                          h_qp,\r
+        IN              const   <a href="./ib_types_h.html#robo856">ib_gid_t</a>                                        *p_mcast_gid,\r
+        IN              const   <a href="./ib_types_h.html#robo893">ib_net16_t</a>                                      mcast_lid,\r
+                OUT                     ib_mcast_handle_t                       *ph_mcast,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine attaches the given qp_handle to a multicast gid as specified\r
+       by mcast_gid parameter.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] Queue pair handle which needs to be added to the multicast group\r
+               on the adapter.\r
+       mcast_lid\r
+               [in] The multicast group LID value.\r
+       p_mcast_gid\r
+               [in] IPv6 address associated with this multicast group.\r
+       ph_mcast\r
+               [out] Multicast handle holding the association of this queue pair\r
+               to the multicast group.\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The queue pair handle was successfully added to the multicast\r
+               group.\r
+       IB_INVALID_QP_HANDLE\r
+               qp_handle supplied is invalid.\r
+       IB_INVALID_SERVICE_TYPE\r
+               Queue pair handle supplied is not of unreliable datagram type.\r
+       IB_INVALID_GID\r
+               The supplied addr is not a valid multicast ipv6 address.\r
+       IB_INVALID_LID\r
+               The supplied lid is not a valid multicast lid.\r
+       IB_UNSUPPORTED\r
+               Multicast is not supported by this HCA.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete request.\r
+       IB_INVALID_PARAMETER\r
+               One of the parameters was NULL.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1118">ci_create_qp</a>, <a href="#robo1126">ci_detach_mcast</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1112">[Functions]<a name="Verbs2fci5fbind5fmw">\r
+Verbs/ci_bind_mw</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_bind_mw</strong> -- Bind a memory window to a memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_bind_mw</strong>) (\r
+        IN              const   ib_mw_handle_t                          h_mw,\r
+        IN              const   ib_qp_handle_t                          h_qp,\r
+        IN                              <a href="./ib_types_h.html#robo59">ib_bind_wr_t</a>* const                     p_mw_bind,\r
+                OUT                     net32_t* const                          p_rkey );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine posts a request to bind a memory window to a registered\r
+       memory region. If the queue pair was created with selectable signaling,\r
+       once the operation is completed successfully then a completion queue entry\r
+       is generated indicating the bind operation has completed. The IB_POST_FENCE\r
+       option could be specified to cause the requestor to wait until outstanding\r
+       RDMA operations can be completed.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mw\r
+               [in] Handle to memory window that needs to be bound to a memory region.\r
+       h_qp\r
+               [in] Queue Pair to which this bind request is to be posted.\r
+       p_mw_bind\r
+               [in] Input parameters for this bind request, consisting of virtual\r
+               addr range of bind request etc.\r
+       p_rkey\r
+               [out] On successful completion, the new R_KEY is returned.\r
+               VPD is required to give this in the expected ordering on the wire. When\r
+               rkey's are exchanged between remote nodes, no swapping of this data\r
+               will be performed.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The memory bind operation was posted successfully.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete the request.\r
+               No more WQE's to post this request\r
+               No more free WQE's to post this request\r
+       IB_INVALID_MW_HANDLE\r
+               memw_handle supplied is an invalid memory window handle.\r
+       IB_INVALID_PERMISSION\r
+               Invalid access rights specified in request\r
+       IB_INVALID_SERVICE_TYPE\r
+               Invalid service type for this qp_handle.\r
+       IB_INVALID_PARAMETER\r
+               One of the pointers was not valid.\r
+       IB_INVALID_RKEY\r
+               R_KEY specified is invalid for the memory region being bound.\r
+       IB_INVALID_QP_HANDLE\r
+               h_qp supplied was an invalid QP handle.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       - A previously bound memory window can be bound to the same or different\r
+       memory region.\r
+\r
+       - A bind operation with length of 0, invalidates any previous binding\r
+       and returns an R_KEY in the unbound state.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1117">ci_create_mw</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1113">[Functions]<a name="Verbs2fci5fclose5fca">\r
+Verbs/ci_close_ca</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_close_ca</strong> -- Close access to adapter via this h_ca\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_close_ca</strong>) (\r
+        IN              ib_ca_handle_t  h_ca );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine is called when the client no longer wishes to use HCA\r
+       resources obtained via this h_ca. All resources allocated as part\r
+       this handle during the <a href="#robo1136">ci_open_ca</a> are destroyed.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] CA handle returned via the <a href="#robo1136">ci_open_ca</a>() call.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The intend to destroy is registered. No further calls for\r
+               completion or async event will be sent to this instance. When it is\r
+               appropriate to destroy this instance, the event h_kevent is signaled.\r
+       IB_RESOURCE_BUSY\r
+               Some resource allocated via this handle is not freed.\r
+       IB_INVALID_CA_HANDLE\r
+               h_ca is invalid\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call cannot be called from any of the notification functions invoked\r
+       by the <a href="#robo39">Verbs</a> driver. For e.g. the completion handler or the async error\r
+       callback provided during the <a href="#robo1136">ci_open_ca</a>() call. The call will block until\r
+       all references to this adapter object is closed which includes all the\r
+       pending callbacks returning back to the verbs provider driver.\r
+\r
+       Resources allocated during the <a href="#robo1136">ci_open_ca</a>() is deallocated. Other resource\r
+       cleanup are responsibility of the consumer .\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1136">ci_open_ca</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1114">[Functions]<a name="Verbs2fci5fcompletion5fcb5ft">\r
+Verbs/ci_completion_cb_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_completion_cb_t</strong> -- Completion Notification callback.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(*<strong>ci_completion_cb_t</strong>)(\r
+        IN      void    *cq_context );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This function prototype indicates the parameter passed to <a href="#robo1136">ci_open_ca</a>()\r
+       to receive completion callbacks.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       cq_context\r
+               [in] Completion queue context passed during the <a href="#robo1116">ci_create_cq</a>\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       None\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The consumer only gets the cq_context and ca_context. It is the client\r
+       responsibility to store the cq_handle in the context after the creation\r
+       time. So it can call <a href="#robo1138">ci_poll_cq</a>() after the arrival of the notification.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1136">ci_open_ca</a>, <a href="#robo1116">ci_create_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1115">[Functions]<a name="Verbs2fci5fcreate5fav">\r
+Verbs/ci_create_av</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_create_av</strong> -- Create an address vector for use in UD.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_create_av</strong>) (\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+        IN              const   <a href="./ib_types_h.html#robo57">ib_av_attr_t</a>                            *p_av_attr,\r
+                OUT                     ib_av_handle_t                          *ph_av,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine creates an address vector for use in unreliable datagram\r
+       queue pairs. The information necessary to create the address vector\r
+       handle is supplied in the <a href="./ib_types_h.html#robo57">ib_av_attr_t</a> parameter.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] Protection domain to which this av is associated.\r
+       p_av_attr\r
+               [in] Parameters to create the address vector handle\r
+       ph_av\r
+               [out] Handle to use for datagram sends.\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The create operation was successful\r
+       IB_INSUFFICIENT_RESOURCES\r
+               No more address handles are available\r
+       IB_INVALID_PD_HANDLE\r
+               The specified protection domain handle is invalid\r
+       IB_INVALID_PORT\r
+               Invalid port number supplied.\r
+       IB_INVALID_PARAMETER\r
+               One of the p_av_attr or p_av_attr was NULL.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The values in the p_av_attr is not validated for correctness. The values\r
+       in the attribute such as port number, protection domain etc are also\r
+       validated during processing by the channel adapter. If the attribute\r
+       validation fails a processing error IB_WCS_LOCAL_OP_ERR.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1109">ci_allocate_pd</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1116">[Functions]<a name="Verbs2fci5fcreate5fcq">\r
+Verbs/ci_create_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_create_cq</strong> -- Create a completion queue (CQ) on the specified HCA.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_create_cq</strong>) (\r
+        IN              const   ib_ca_handle_t                          h_ca,\r
+        IN              const   void                                            *cq_context,\r
+        IN      OUT                     uint32_t* const                         p_size,\r
+                OUT                     ib_cq_handle_t                          *ph_cq,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The consumer must specify the minimum number of entries in the CQ. The\r
+       exact number of entries the Channel Interface created is returned to the\r
+       client. If the requested number of entries is larger than what this\r
+       HCA can support, an error is returned.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] A handle to the open HCA\r
+       cq_context\r
+               [in] The context that is passed during the completion callbacks.\r
+       p_size\r
+               [in out] Points to a variable containing the number of CQ entries\r
+               requested by the consumer. On completion points to the size of the\r
+               CQ that was created by the provider.\r
+       ph_cq\r
+               [out] Handle to the newly created CQ on successful creation.\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The operation was successful.\r
+       IB_INVALID_CA_HANDLE\r
+               The h_ca passed is invalid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete request.\r
+       IB_INVALID_CQ_SIZE\r
+               Requested CQ Size is not supported.\r
+       IB_INVALID_PARAMETER\r
+               one of the parameters was NULL.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The consumer would need a way to retrieve the cq_handle associated with\r
+       context being returned, so it can perform <a href="#robo1138">ci_poll_cq</a>() to retrieve\r
+       completion queue entries. The handle as such is not being passed, since\r
+       there is no information in the handle that is visible to the consumer.\r
+       Passing a context directly would help avoid any reverse lookup that the\r
+       consumer would need to perform in order to identify it's own internal\r
+       data-structures needed to process this completion completely.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1123">ci_destroy_cq</a>, <a href="#robo1143">ci_query_cq</a>, <a href="#robo1150">ci_resize_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1117">[Functions]<a name="Verbs2fci5fcreate5fmw">\r
+Verbs/ci_create_mw</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_create_mw</strong> -- Create a memory window entry for later use\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_create_mw</strong>) (\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+                OUT                     net32_t* const                          p_rkey,\r
+                OUT                     ib_mw_handle_t                          *ph_mw,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine allocates a memory window. This window entry cannot be used\r
+       for remote access unless this window is bound to a memory region\r
+       via the <a href="#robo1112">ci_bind_mw</a> call.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] Protection domain handle to use for this memory window\r
+       p_rkey\r
+               [out] Remote access key that can be exchanged with a remote node to\r
+               perform RDMA transactions on this memory window. This R_KEY is still not\r
+               bound to any memory regions, until a successful call to <a href="#robo1112">ci_bind_mw</a>.\r
+               VPD is required to give this in the expected ordering on the wire. When\r
+               rkey's are exchanged between remote nodes, no swapping of this data\r
+               will be performed.\r
+       ph_mw\r
+               [out] Handle to the newly created memory window.\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The memory window allocation completed successfully.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Not enough resources to complete the request.\r
+       IB_INVALID_PD_HANDLE\r
+               pd_handle supplied is invalid.\r
+       IB_INVALID_PARAMETER\r
+               One of the pointers was not valid.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1124">ci_destroy_mw</a>, <a href="#robo1145">ci_query_mw</a>, <a href="#robo1112">ci_bind_mw</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1118">[Functions]<a name="Verbs2fci5fcreate5fqp">\r
+Verbs/ci_create_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_create_qp</strong> -- Create a Queue Pair for the specified HCA\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_create_qp</strong>) (\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+        IN              const   void                                            *qp_context,\r
+        IN              const   <a href="./ib_types_h.html#robo206">ib_qp_create_t</a>                          *p_create_attr,\r
+                OUT                     <a href="./ib_types_h.html#robo205">ib_qp_attr_t</a>                            *p_qp_attr,\r
+                OUT                     ib_qp_handle_t                          *ph_qp,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       A new queue pair is created on the specified HCA. The initial set of\r
+       parameters is provided by the qp_create_attr parameter. The newly created\r
+       queue pair, with its attributes such as the qp number is returned\r
+       in the qp_query_attr structure.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] Handle to Protection Domain\r
+       qp_context\r
+               [in] A user specified context passed in a asynchronous error callback.\r
+       p_create_attr\r
+               [in] Initial attributes with which the qp must be created.\r
+       p_qp_attr\r
+               [out] Attributes of the newly created queue pair.\r
+       ph_qp\r
+               [out] Handle to the queue pair newly created.\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The queue pair is successfully created with the provided initial\r
+               attributes.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete request.\r
+       IB_INVALID_PD_HANDLE\r
+               pd_handle supplied in the qp_create_attr is invalid\r
+       IB_INVALID_CQ_HANDLE\r
+               cq_handle supplied for send/receive is invalid.\r
+       IB_INVALID_SERVICE_TYPE\r
+               Invalid service type.\r
+       IB_INVALID_MAX_WRS\r
+               Max WRS capacity exceeded\r
+       IB_INVALID_MAX_SGE\r
+               Max Scatter gather element request exceeds HCA capability\r
+       IB_UNSUPPORTED\r
+               Unreliable datagram not supported\r
+       IB_INVALID_PARAMETER\r
+               The parameter p_create_attr is invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       If any of the initial parameters is not valid, the queue pair is not\r
+       created. If the routine call is not successful then the contents of\r
+       qp_query_attr and qp_handle is undefined.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1119">ci_create_spl_qp</a>, <a href="#robo1146">ci_query_qp</a>, <a href="#robo1135">ci_modify_qp</a>, <a href="#robo1125">ci_destroy_qp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1119">[Functions]<a name="Verbs2fci5fcreate5fspl5fqp">\r
+Verbs/ci_create_spl_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_create_spl_qp</strong> -- Create a special queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_create_spl_qp</strong>) (\r
+        IN              const   ib_pd_handle_t          h_pd,\r
+        IN              const   uint8_t                         port_num,\r
+        IN              const   void                            *qp_context,\r
+        IN              const   <a href="./ib_types_h.html#robo206">ib_qp_create_t</a>          *p_create_attr,\r
+                OUT                     <a href="./ib_types_h.html#robo205">ib_qp_attr_t</a>            *p_qp_attr,\r
+                OUT                     ib_qp_handle_t          *ph_qp );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Create and return a handle to for the indicated service type on the\r
+       specified port. QP service types can be one of SMI, GSI, Raw IPv6 or\r
+       Raw ether type as specified in qp_type_t.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] Handle to the PD on which the special queue pair is to be created.\r
+       port_num\r
+               [in] Port number for which this special queue pair is created.\r
+       qp_context\r
+               [in] User specified context passed during the async error callback\r
+               routine.\r
+       p_create_attr\r
+               [in] Initial set of attributes with which the queue pair is to be\r
+               created.\r
+       p_qp_attr\r
+               [out] QP attributes after the qp is successfully created.\r
+\r
+       ph_qp\r
+               [out] Handle to the special qp after its creation.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The special queue pair of the requested service type is created.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to satisfy the request.\r
+       IB_NOT_FOUND\r
+               Indicated port guid is not found on this HCA.\r
+       IB_INVALID_CQ_HANDLE\r
+               Invalid cq handle passed to send/receive side.\r
+       IB_INVALID_MAX_WRS\r
+               Max WRS capacity exceeded\r
+       IB_INVALID_MAX_SGE\r
+               Max Scatter gather element request exceeds HCA capability\r
+       IB_RESOURCE_BUSY\r
+               Applicable to SMI/GSI qp's. This return code means that the SMI/GSI\r
+               QP is already allocated.\r
+       IB_INVALID_PD\r
+               Invalid protection domain supplied.\r
+       IB_INVALID_PORT\r
+               Invalid port number supplied.\r
+       IB_UNSUPPORTED\r
+               Raw datagram unsupported.\r
+       IB_INVALID_PARAMETER\r
+               The parameter p_create_attr is not valid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This verb is privileged and only available in kernel mode. The User mode\r
+       clients that need access to SMI/GSI qp's is recommended to do this via\r
+       a higher level of abstraction.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1118">ci_create_qp</a>, <a href="#robo1146">ci_query_qp</a>, <a href="#robo1135">ci_modify_qp</a>, <a href="#robo1125">ci_destroy_qp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1120">[Functions]<a name="Verbs2fci5fdeallocate5fpd">\r
+Verbs/ci_deallocate_pd</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_deallocate_pd</strong> -- Deallocate a protection domain object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_deallocate_pd</strong>) (\r
+        IN              ib_pd_handle_t          h_pd );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine deallocates a pd that is allocated via the <a href="#robo1109">ci_allocate_pd</a>()\r
+       call. The PD cannot be deallocated if it is still bound to a QP, any memory\r
+       region, memory window or address vector.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] Handle allocated via the <a href="#robo1109">ci_allocate_pd</a>()\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               PD is freed successfully\r
+       IB_INVALID_PD_HANDLE\r
+               pd_handle is invalid\r
+       IB_RESOURCE_BUSY\r
+               PD is probably still bound to some resource\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1109">ci_allocate_pd</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1121">[Functions]<a name="Verbs2fci5fderegister5fmr">\r
+Verbs/ci_deregister_mr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_deregister_mr</strong> -- Deregister a memory region\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_deregister_mr</strong>) (\r
+        IN      const   ib_mr_handle_t          h_mr );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine deregisters  a memory region from the HCA. The region can\r
+       de-registered only if there are no existing memory windows bound to\r
+       this region, and if no existing shared memory regions were registered\r
+       that refers to the same set of physical pages associated with the memory\r
+       handle.  If there are outstanding work requests referring to this memory\r
+       region, then after this call is successful, those work requests will\r
+       complete with WRS_LOCAL_PROTECTION_ERR.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mr\r
+               [in] Memory handle that is being de-registered.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The memory de-registration was successful\r
+       IB_INVALID_MR_HANDLE\r
+               The memory handle supplied is not a valid memory handle.\r
+       IB_RESOURCE_BUSY\r
+               The memory region has active windows bound.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1147">ci_register_mr</a>, <a href="#robo1148">ci_register_pmr</a>, <a href="#robo1149">ci_register_smr</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1122">[Functions]<a name="Verbs2fci5fdestroy5fav">\r
+Verbs/ci_destroy_av</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_destroy_av</strong> -- Destroy the address vector\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_destroy_av</strong>) (\r
+        IN      const   ib_av_handle_t          h_av );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine destroys the specified address handle. After the routine\r
+       returns, this address handle cannot be used to reference the destination.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_av\r
+               [in] Handle that needs to be destroyed.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               Operation was successful.\r
+       IB_INVALID_AV_HANDLE\r
+               The address vector handle was invalid\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1115">ci_create_av</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1123">[Functions]<a name="Verbs2fci5fdestroy5fcq">\r
+Verbs/ci_destroy_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_destroy_cq</strong> -- Destroy a completion queue.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_destroy_cq</strong>) (\r
+        IN      const   ib_cq_handle_t          h_cq );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Destroys a completion queue. If any queue pairs are still bound\r
+       to this CQ, the attempt to destroy will fail, and the CQ and associated\r
+       resources are *NOT* destroyed.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       cq_handle\r
+               [in] Handle to the cq that is to be destroyed.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The intend to destroy the completion queue is registered successfully.\r
+               The destroy_callback function will be invoked when it is safe and\r
+               guarantees that no more completion callbacks will be invoked for\r
+               this CQ. Any pending CQ notifications are discarded.\r
+       IB_INVALID_CQ_HANDLE\r
+               The CQ handle is invalid.\r
+       IB_RESOURCE_BUSY\r
+               Queue pairs may still be bound to this completion queue.\r
+       IB_INVALID_PARAMETER\r
+               one of the parameters was NULL.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1116">ci_create_cq</a>\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call cannot be called from any of the notification functions invoked\r
+       by the <a href="#robo39">Verbs</a> driver. For e.g. the completion handler or the async error\r
+       callback provided during the <a href="#robo1136">ci_open_ca</a>() call. The call will block until\r
+       all references to this adapter object is closed which includes all the\r
+       pending callbacks returning back to the verbs provider driver.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1124">[Functions]<a name="Verbs2fci5fdestroy5fmw">\r
+Verbs/ci_destroy_mw</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_destroy_mw</strong> -- Destroy a memory window.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_destroy_mw</strong>) (\r
+        IN      const   ib_mw_handle_t          h_mw );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine deallocates a window entry created via a <a href="#robo1117">ci_create_mw</a>.\r
+       Once this operation is complete, the channel interface guarantees that\r
+       no future remote accesses will be permitted to this window entry.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mw\r
+               [in] Handle to the memory window that is being destroyed.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The destroy window request completed successfully.\r
+       IB_INVALID_MW_HANDLE\r
+               memw_handle supplied is invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Deallocate memory window implicitly means the window is also unbound\r
+       once the call completes successfully. Any future remote access with\r
+       the same R_KEY should fail with protection violation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1117">ci_create_mw</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1125">[Functions]<a name="Verbs2fci5fdestroy5fqp">\r
+Verbs/ci_destroy_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_destroy_qp</strong> -- Destroy the specified Queue Pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_destroy_qp</strong>) (\r
+        IN      const   ib_qp_handle_t          h_qp,\r
+        IN      const   uint64_t                        timewait );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Destroys the associated QP. The QP could have outstanding work requests\r
+       when this call is made. Any outstanding work requests *SHALL NOT* be\r
+       completed after this routine returns.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] Handle to the qp that needs to be destroyed.\r
+       timewait\r
+               [in] Time (in microseconds) at which the QP should leave\r
+               the timewait state and can be reused.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The intend to destroy this queue pair is registered and no further\r
+               work requests will be processed. When no pending callbacks are in\r
+               progress, the destroy_callback function is invoked which marks the\r
+               destruction of the resource. The consumer can be guaranteed that\r
+               no future callbacks will be propagated on behalf of this resource.\r
+       IB_INVALID_QP_HANDLE\r
+               The handle passed is invalid.\r
+       IB_RESOURCE_BUSY\r
+               If the queue pair is a unreliable datagram service type, and\r
+               is still bound to a multicast group.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call cannot be called from any of the notification functions invoked\r
+       by the <a href="#robo39">Verbs</a> driver. For e.g. the completion handler or the async error\r
+       callback provided during the <a href="#robo1136">ci_open_ca</a>() call. The call will block until\r
+       all references to this adapter object is closed which includes all the\r
+       pending callbacks returning back to the verbs provider driver.\r
+\r
+       If the CQ associated with this QP is still not destroyed, the completions\r
+       on behalf of this QP can still be pulled via the <a href="#robo1138">ci_poll_cq</a>() call. Any\r
+       resources allocated by the Channel Interface must be deallocated as part\r
+       of this call.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1118">ci_create_qp</a>, <a href="#robo1119">ci_create_spl_qp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1126">[Functions]<a name="Verbs2fci5fdetach5fmcast">\r
+Verbs/ci_detach_mcast</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_detach_mcast</strong> -- Detach a queue pair from a multicast group\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_detach_mcast</strong>) (\r
+        IN      const   ib_mcast_handle_t               h_mcast );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine detaches a queue pair from its previously associated multicast\r
+       group.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mcast\r
+               [in] The multicast handle passed back to consumer after the\r
+               ci_mcast_attach call.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The qp was successfully detached from the multicast group.\r
+       IB_INVALID_MCAST_HANDLE\r
+               mcast_handle supplied is an invalid handle\r
+       IB_INVALID_PARAMETER\r
+               One of the parameters was NULL.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1111">ci_attach_mcast</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1127">[Functions]<a name="Verbs2fci5fenable5fcq5fnotify">\r
+Verbs/ci_enable_cq_notify</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_enable_cq_notify</strong> -- Invoke the Completion handler, on next entry added.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_enable_cq_notify</strong>) (\r
+        IN      const   ib_cq_handle_t          h_cq,\r
+        IN      const   boolean_t                       solicited );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine instructs the channel interface to invoke the completion\r
+       handler when the next completion queue entry is added to this CQ.\r
+       Please refer to Volume 1, of the InfiniBand specification for a complete\r
+       description.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Handle to the CQ on which the notification is being enabled.\r
+       solicited\r
+               [in] A boolean flag indicating whether the request is to generate a\r
+               notification on the next entry or on the next solicited entry\r
+               being added to the completion queue.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The notification request was registered successfully.\r
+       IB_INVALID_CQ_HANDLE\r
+               cq_handle supplied is not a valid handle.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The consumer cannot call a request for notification without emptying\r
+       entries from the CQ. i.e if a consumer registers for a notification\r
+       request in the completion callback before pulling entries from the\r
+       CQ via <a href="#robo1138">ci_poll_cq</a>, the notification is not generated for completions\r
+       already in the CQ. For e.g. in the example below, if there are no calls\r
+   to <a href="#robo1138">ci_poll_cq</a>()     after the <strong>ci_enable_cq_notify</strong>(). For any CQ entries added\r
+       before calling this <strong>ci_enable_cq_notify</strong>() call, the consumer does not\r
+       get a completion notification callback. In order to comply with the verb\r
+       spec, consumer is supposed to perform a <a href="#robo1138">ci_poll_cq</a>() after the\r
+       <strong>ci_enable_cq_notify</strong>() is made to retrive any entries that might have\r
+       been added to the CQ before the CI registers the notification enable.\r
+\r
+                       while ((ret_val = <a href="#robo1138">ci_poll_cq</a>(cq_handle, &amp;free_list, &amp;done_list)\r
+                               == FSUCCESS))\r
+                       {\r
+                               process entries;\r
+                       }\r
+                       if (ret_val == IB_NOT_FOUND)\r
+                               <strong>ci_enable_cq_notify</strong>(cq_handle);\r
+                       // Need to perform a <a href="#robo1138">ci_poll_cq</a>()\r
+           // after the enable.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1116">ci_create_cq</a>, <a href="#robo1137">ci_peek_cq</a>, <a href="#robo1138">ci_poll_cq</a>, <a href="#robo1128">ci_enable_ncomp_cq_notify</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1128">[Functions]<a name="Verbs2fci5fenable5fncomp5fcq5fnotify">\r
+Verbs/ci_enable_ncomp_cq_notify</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_enable_ncomp_cq_notify</strong> -- Invoke the Completion handler when the next\r
+       N completions are added.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_enable_ncomp_cq_notify</strong>) (\r
+        IN              const   ib_cq_handle_t                          h_cq,\r
+        IN              const   uint32_t                                        n_cqes );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine instructs the channel interface to invoke the completion\r
+       handler when the next N completions have been added to this CQ.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Handle to the CQ on which the notification is being enabled.\r
+       n_cqes\r
+               [in] The number of completion queue entries to be added to the\r
+               completion queue before notifying the client.  This value must\r
+               greater than or equal to one and less than or equal to the size\r
+               of the completion queue.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The notification request was registered successfully.\r
+       IB_INVALID_CQ_HANDLE\r
+               cq_handle supplied is not a valid handle.\r
+       IB_INVALID_PARAMETER\r
+               The requested number of completion queue entries was invalid.\r
+       IB_UNSUPPORTED\r
+               This operation is not supported by the channel adapter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine instructs the channel interface to invoke the completion\r
+       handler when the next N completions have been added to this CQ regardless\r
+       of the completion type (solicited or unsolicited).  Any CQ entries that\r
+       existed before the rearm is enabled will not result in a call to the\r
+       handler.  Support for this operation is optional by a channel adapter\r
+       vendor.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1116">ci_create_cq</a>, <a href="#robo1137">ci_peek_cq</a>, <a href="#robo1138">ci_poll_cq</a>, <a href="#robo1127">ci_enable_cq_notify</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1129">[Structures]<a name="Verbs2fci5finterface5ft">\r
+Verbs/ci_interface_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_interface_t</strong> -- Interface holding Channel Interface API's\r
+</pre>\r
+</span><p><strong>PURPOSE</strong></p>\r
+<span class="PURPOSE"><pre>       The following structure is supplied by a Channel Interface\r
+       providing verbs functionality.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define MAX_LIB_NAME            32\r
+\r
+typedef struct _ci_interface\r
+{\r
+        net64_t                         guid;\r
+\r
+        /*\r
+         * Device object of the HCA.  In Windows, this is a pointer to the PDO\r
+         * for the HCA device.\r
+         */\r
+        void                            *p_hca_dev;\r
+\r
+        /*\r
+         * Vendor ID, Device ID, Device Revision of the HCA\r
+         * libname refers to the user mode library to load\r
+         * to support direct user mode IO. If vendor does not support one\r
+         * then the fields must be initialized to all zero's.\r
+         */\r
+        uint32_t                        vend_id;\r
+        uint16_t                        dev_id;\r
+        uint16_t                        dev_revision;\r
+        char                            libname[MAX_LIB_NAME];\r
+        /*\r
+         * Version of the header file this interface export can handle\r
+         */\r
+        uint32_t                        version;\r
+\r
+        /*\r
+         * HCA Access <a href="#robo39">Verbs</a>\r
+         */\r
+        <a href="#robo1136">ci_open_ca</a>                      open_ca;\r
+        ci_um_open_ca_t         um_open_ca;\r
+        <a href="#robo1142">ci_query_ca</a>                     query_ca;\r
+        <a href="#robo1132">ci_modify_ca</a>            modify_ca;\r
+        <a href="#robo1113">ci_close_ca</a>                     close_ca;\r
+        <a href="#robo1151">ci_um_close_ca_t</a>        um_close_ca;\r
+\r
+        <a href="#robo1154">ci_vendor_call</a>          vendor_call;\r
+\r
+        /*\r
+         * Protection Domain\r
+         */\r
+        <a href="#robo1109">ci_allocate_pd</a>          allocate_pd;\r
+        <a href="#robo1120">ci_deallocate_pd</a>        deallocate_pd;\r
+\r
+        /*\r
+         * Address <a href="../complib/cl_vector_h.html#robo36">Vector</a> Management <a href="#robo39">Verbs</a>\r
+         */\r
+\r
+        <a href="#robo1115">ci_create_av</a>            create_av;\r
+        <a href="#robo1141">ci_query_av</a>                     query_av;\r
+        <a href="#robo1131">ci_modify_av</a>            modify_av;\r
+        <a href="#robo1122">ci_destroy_av</a>           destroy_av;\r
+\r
+        /*\r
+         * QP Management <a href="#robo39">Verbs</a>\r
+         */\r
+        <a href="#robo1118">ci_create_qp</a>            create_qp;\r
+        <a href="#robo1119">ci_create_spl_qp</a>        create_spl_qp;\r
+        <a href="#robo1135">ci_modify_qp</a>            modify_qp;\r
+        <a href="#robo1146">ci_query_qp</a>                     query_qp;\r
+        <a href="#robo1125">ci_destroy_qp</a>           destroy_qp;\r
+\r
+        /*\r
+         * Completion Queue Management <a href="#robo39">Verbs</a>\r
+         */\r
+        <a href="#robo1116">ci_create_cq</a>            create_cq;\r
+        <a href="#robo1150">ci_resize_cq</a>            resize_cq;\r
+        <a href="#robo1143">ci_query_cq</a>                     query_cq;\r
+        <a href="#robo1123">ci_destroy_cq</a>           destroy_cq;\r
+\r
+        /*\r
+         * Memory Management <a href="#robo39">Verbs</a>\r
+         */\r
+        <a href="#robo1147">ci_register_mr</a>          register_mr;\r
+        <a href="#robo1148">ci_register_pmr</a>         register_pmr;\r
+        <a href="#robo1144">ci_query_mr</a>                     query_mr;\r
+        <a href="#robo1133">ci_modify_mr</a>            modify_mr;\r
+        <a href="#robo1134">ci_modify_pmr</a>           modify_pmr;\r
+        <a href="#robo1149">ci_register_smr</a>         register_smr;\r
+        <a href="#robo1121">ci_deregister_mr</a>        deregister_mr;\r
+\r
+        /*\r
+         * Memory Window <a href="#robo39">Verbs</a>\r
+         */\r
+        <a href="#robo1117">ci_create_mw</a>            create_mw;\r
+        <a href="#robo1145">ci_query_mw</a>                     query_mw;\r
+        <a href="#robo1112">ci_bind_mw</a>                      bind_mw;\r
+        <a href="#robo1124">ci_destroy_mw</a>           destroy_mw;\r
+\r
+        /*\r
+         * Work Request Processing <a href="#robo39">Verbs</a>\r
+         */\r
+        <a href="#robo1140">ci_post_send</a>            post_send;\r
+        <a href="#robo1139">ci_post_recv</a>            post_recv;\r
+\r
+        /*\r
+         * Completion Processing and\r
+         * Completion Notification Request <a href="#robo39">Verbs</a>.\r
+         */\r
+        <a href="#robo1137">ci_peek_cq</a>                                      peek_cq;                                /* Optional */\r
+        <a href="#robo1138">ci_poll_cq</a>                                      poll_cq;\r
+        <a href="#robo1127">ci_enable_cq_notify</a>                     enable_cq_notify;\r
+        <a href="#robo1128">ci_enable_ncomp_cq_notify</a>       enable_ncomp_cq_notify; /* Optional */\r
+\r
+        /*\r
+         * Multicast Support <a href="#robo39">Verbs</a>\r
+         */\r
+        <a href="#robo1111">ci_attach_mcast</a>         attach_mcast;\r
+        <a href="#robo1126">ci_detach_mcast</a>         detach_mcast;\r
+\r
+        /*\r
+         * Local MAD support, for HCA's that do not support\r
+         * Agents in the HW.\r
+         */\r
+        <a href="#robo1130">ci_local_mad</a>            local_mad;\r
+\r
+} <strong>ci_interface_t</strong>;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1130">[Functions]<a name="Verbs2fci5flocal5fmad">\r
+Verbs/ci_local_mad</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_local_mad</strong> -- Request a mad to be processed by the local adapter.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_local_mad</strong>) (\r
+        IN              const   ib_ca_handle_t          h_ca,\r
+        IN              const   uint8_t                         port_num,\r
+        IN              const   <a href="./ib_types_h.html#robo882">ib_mad_t</a>                        *p_mad_in,\r
+                OUT                     <a href="./ib_types_h.html#robo882">ib_mad_t</a>                        *p_mad_out );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine is OPTIONAL for the channel interface. This is required\r
+       for adapters which do not have the agents such as Subnet Management\r
+       agent (SMA) Or the GSA in the <a href="#robo39">Verbs</a> Provider driver.\r
+       hardware, for all such adapters the exact queue pair management of\r
+       special queue pairs happen above the channel interface. This routine\r
+       is used to perform local operations, since there is no agent below the\r
+       channel interface. For e.g: If a Subnet Management packet (SMP) to\r
+       set PORT_STATE is received, this reception is processed above the channel\r
+       interface, then this call is done to set the port state on the local\r
+       adapter. On successful return, the response is generated and sent to the\r
+       Subnet Manager.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] A handle to the channel adapter that should process the MAD.\r
+               This must be the same adapter that the MAD was received on.\r
+       port_num\r
+               [in] port number to which this request is directed is to be sent.\r
+       p_mad_in\r
+               [in] pointer to a management datagram (MAD) structure containing\r
+               the command to be processed.\r
+       p_mad_out\r
+               [out] Response packet after processing the command. The storage to this\r
+               must be allocated by the consumer.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               Command processed successfully.\r
+       IB_INVALID_CA_HANDLE\r
+               The HCA handle supplied is not valid.\r
+       IB_INVALID_PORT\r
+               The port number supplied is invalid.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel Mode only\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call is provided to aid adapters that don't have a agent functionality\r
+       built in the channel interface. Some adapters do have a local processor\r
+       to process these packets, hence even for local port management, we can\r
+       use the same mechanism we use to configure external nodes by using a\r
+       hop counter = 1 in the MAD packets. If the SMA indicates it has a local\r
+       sma in the <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>, then the packets are posted to the adapter\r
+       instead of making a private call to the adapter.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1142">ci_query_ca</a>, ci_ca_attr_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1131">[Functions]<a name="Verbs2fci5fmodify5fav">\r
+Verbs/ci_modify_av</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_modify_av</strong> -- Change the address vector referred by the av_handle\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_modify_av</strong>) (\r
+        IN              const   ib_av_handle_t                          h_av,\r
+        IN              const   <a href="./ib_types_h.html#robo57">ib_av_attr_t</a>                            *p_av_attr,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine allows a consumer to modify the address information\r
+       passed.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_av\r
+               [in] Address handle that needs to be updated with new info.\r
+       p_av_attr\r
+               [in] New address vector to associate with the addr_handle.\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               Operation was successful\r
+       IB_INVALID_AV_HANDLE\r
+               The address vector handle was invalid\r
+       IB_INVALID_PORT\r
+               Invalid port number passed in the Address <a href="../complib/cl_vector_h.html#robo36">Vector</a>.\r
+       IB_INVALID_PARAMETER\r
+               The parameter p_av_attr is not valid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The values in the p_av_attr is not validated for correctness. The values\r
+       in the attribute such as port number, protection domain etc are validated\r
+       during processing by the channel adapter. If the attribute validation fails\r
+       a processing error IB_WCS_LOCAL_OP_ERR.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1115">ci_create_av</a>, <a href="#robo1141">ci_query_av</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1132">[Functions]<a name="Verbs2fci5fmodify5fca">\r
+Verbs/ci_modify_ca</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_modify_ca</strong> -- Modify port attributes and error counters\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_modify_ca</strong>) (\r
+        IN      const ib_ca_handle_t            h_ca,\r
+        IN      const uint8_t                           port_num,\r
+        IN      const <a href="./ib_types_h.html#robo61">ib_ca_mod_t</a>                       ca_mod,\r
+        IN      const <a href="./ib_types_h.html#robo199">ib_port_attr_mod_t</a>        *p_port_attr_mod );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Modifies either the P_KEY/Q_KEY violation counters, or sets the capability\r
+       mask in the port attributes. This is effectively translated to PORTINFO\r
+       values responded later when a MAD from SM or another node arrives to\r
+       retrieve port related attributes.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] Handle returned by previous call to <a href="#robo1136">ci_open_ca</a>()\r
+       port_num\r
+               [in] Port number, which needs to be modified.\r
+       ca_mod\r
+               [in] Command mask to perform operations on.\r
+       p_port_attr_mod\r
+               [in] port attribute which needs this change to be performed.\r
+               if the capability bit is set, then that corresponding\r
+               port capability is turned on.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               Modify port attributes was performed\r
+       IB_INVALID_PORT\r
+               Invalid port number supplied in port_att.\r
+       IB_INVALID_PARAMETER\r
+               Unknown Command supplied in port_attr.\r
+       IB_UNSUPPORTED\r
+               Optional Q_KEY and P_KEY violation counters are not supported.\r
+       IB_INVALID_CA_HANDLE\r
+               h_ca is invalid\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre> No ownership checks are performed in the <a href="#robo39">Verbs</a> Provider Driver.\r
+ All such permission checks are to be performed by the IB access layer\r
+ before passing requests down to the HCA driver. These operations can be\r
+ performed only by the special QP owner. Either the QP0 or QP1. Since port\r
+ attributes is really maintained by the QP0 for SMA to respond with correct\r
+ values, but the agent capability is really a QP1 functionality.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1136">ci_open_ca</a>, <a href="#robo1142">ci_query_ca</a>, <a href="#robo1113">ci_close_ca</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1133">[Functions]<a name="Verbs2fci5fmodify5fmr">\r
+Verbs/ci_modify_mr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_modify_mr</strong> -- Modify some or all parameters of a memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_modify_mr</strong>) (\r
+        IN              const   ib_mr_handle_t                          h_mr,\r
+        IN              const   <a href="./ib_types_h.html#robo161">ib_mr_mod_t</a>                                     mr_modify_mask,\r
+        IN              const   <a href="./ib_types_h.html#robo160">ib_mr_create_t</a>* const           p_mr_create OPTIONAL,\r
+                OUT                     net32_t* const                          p_lkey,\r
+                OUT                     net32_t* const                          p_rkey,\r
+        IN              const   ib_pd_handle_t                          h_pd OPTIONAL,\r
+        IN                              boolean_t                                       um_call );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine modifies attributes of the specified memory region\r
+       irrespective of whether the handle was obtained via <a href="#robo1147">ci_register_mr</a>\r
+       or <a href="#robo1148">ci_register_pmr</a>. This verb conceptually performs a de-registration\r
+       followed by a <a href="#robo1147">ci_register_mr</a>.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mr\r
+               [in] Handle to the memory region whose attributes are to be modified.\r
+       mr_modify_mask\r
+               [in] Command specifying which parts of the mem_region is valid. The\r
+               command is specified as a bit mask.\r
+       p_mr_create\r
+               [in] Desired attributes that need to be modified for mem_handle.\r
+               This is an optional parameter which can be NULL if mr_modify_mask\r
+               is set to IB_MR_MOD_PD.\r
+       p_lkey\r
+               [out] The new l_key for this newly registered memory region.\r
+       p_rkey\r
+               [out] The new r_key for this newly registered memory region.\r
+               The verbs provider is required to give this in the expected ordering\r
+               on the wire. When rkey's are exchanged between remote nodes, no\r
+               swapping of this data will be performed.\r
+       h_pd\r
+               [in] This parameter is valid only if the IB_MR_MOD_PD flag is set\r
+               in the mr_modify_req parameter. This field supplies the new\r
+               protection domain to which the modified region should be\r
+               associated with.\r
+       um_call\r
+               [in] Boolean indicating whether the registration originated in user-mode.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The modify memory region request completed successfully.\r
+       IB_RESOURCE_BUSY\r
+               The memory region has windows bound to it.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete the request.\r
+       IB_INVALID_MR_HANDLE\r
+               The memory handle supplied is not a valid memory region handle.\r
+       IB_INVALID_PERMISSION\r
+               Invalid access rights specified.\r
+       IB_INVALID_PARAMETER\r
+               A reference to the lkey or rkey was not provided or the specified\r
+               modify mask is invalid.\r
+       IB_INVALID_SETTING\r
+               The specified memory region attributes are invalid.\r
+       IB_INVALID_PD_HANDLE\r
+               Protection domain handle supplied is not valid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Remote and Atomic access settings in ib_access_ctrl_t, requires local\r
+       write access to be enabled.\r
+       TBD: How to handle shared memory region being passed to modify_mem?\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1147">ci_register_mr</a>, <a href="#robo1148">ci_register_pmr</a>, <a href="#robo1149">ci_register_smr</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1134">[Functions]<a name="Verbs2fci5fmodify5fpmr">\r
+Verbs/ci_modify_pmr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_modify_pmr</strong> -- Modify some or all parameters of a memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_modify_pmr</strong>) (\r
+        IN              const   ib_mr_handle_t                          h_mr,\r
+        IN              const   <a href="./ib_types_h.html#robo161">ib_mr_mod_t</a>                                     mr_modify_mask,\r
+        IN              const   <a href="./ib_types_h.html#robo187">ib_phys_create_t</a>* const         p_pmr_create,\r
+        IN      OUT                     uint64_t* const                         p_vaddr,\r
+                OUT                     net32_t* const                          p_lkey,\r
+                OUT                     net32_t* const                          p_rkey,\r
+        IN              const   ib_pd_handle_t                          h_pd OPTIONAL,\r
+        IN                              boolean_t                                       um_call );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine modifies attributes of the specified memory region\r
+       irrespective of whether the handle was obtained via <a href="#robo1147">ci_register_mr</a>\r
+       or <a href="#robo1148">ci_register_pmr</a>. This verb conceptually performs a de-registration\r
+       followed by a <a href="#robo1148">ci_register_pmr</a>.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mr\r
+               [in] Handle to the memory region whose attributes are to be modified.\r
+       mr_modify_mask\r
+               [in] Command specifying which parts of the mem_region is valid. The\r
+               command is specified as a bit mask.\r
+       p_pmr_create\r
+               [in] Desired attributes that need to be modified for mem_handle.\r
+       p_vaddr\r
+               [in/out] On input, references the requested virtual address for the\r
+               start of the physical region.  On output, references the actual\r
+               virtual address assigned to the registered region.\r
+       p_lkey\r
+               [out] The new l_key for this newly registered physical memory region.\r
+       p_rkey\r
+               [out] The new r_key for this newly registered physical memory region.\r
+               VPD is required to give this in the expected ordering on the wire. When\r
+               rkey's are exchanged between remote nodes, no swapping of this data\r
+               will be performed.\r
+       h_pd\r
+               [in] This parameter is valid only if the IB_MR_MOD_PD flag is set\r
+               in the mr_modify_req parameter. This field supplies the new\r
+               protection domain to which the modified region should be\r
+               associated with.\r
+       um_call\r
+               [in] Boolean indicating whether the registration originated in user-mode.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The modify memory region request completed successfully.\r
+       IB_RESOURCE_BUSY\r
+               The memory region has windows bound to it.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete the request.\r
+       IB_INVALID_MR_HANDLE\r
+               The memory handle supplied is not a valid memory region handle.\r
+       IB_INVALID_PERMISSION\r
+               Invalid access rights specified.\r
+       IB_INVALID_PARAMETER\r
+               A reference to the virtual address, lkey, rkey was not provided or\r
+               the specified modify mask is invalid.\r
+       IB_INVALID_SETTING\r
+               The specified memory region attributes are invalid.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel Mode only\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Remote and Atomic access settings in ib_access_ctrl_t, requires local\r
+       write access to be enabled.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1147">ci_register_mr</a>, <a href="#robo1148">ci_register_pmr</a>, <a href="#robo1149">ci_register_smr</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1135">[Functions]<a name="Verbs2fci5fmodify5fqp">\r
+Verbs/ci_modify_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_modify_qp</strong> -- Modify attributes of the specified QP.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_modify_qp</strong>) (\r
+        IN              const   ib_qp_handle_t                          h_qp,\r
+        IN              const   <a href="./ib_types_h.html#robo207">ib_qp_mod_t</a>                                     *p_modify_attr,\r
+                OUT                     <a href="./ib_types_h.html#robo205">ib_qp_attr_t</a>                            *p_qp_attr OPTIONAL,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine is used to modify the qp states or other attributes of the\r
+       QP. On successful completion, the requested state transition is performed\r
+       and the QP is transitioned to the required state.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] Handle to the queue pair whose state is to be modified.\r
+       p_modify_attr\r
+               [in] Specifies what attributes need to be modified in the qp.\r
+       p_qp_attr\r
+               [out] QP attributes after the qp is successfully created.\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The operation was successful and the QP attributes are modified\r
+               to the requested state.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete the requested operation.\r
+       IB_INVALID_QP_HANDLE\r
+               Invalid QP handle was passed.\r
+       IB_UNSUPPORTED\r
+               Requested operation is not supported, for e.g. Atomic operations.\r
+       IB_QP_INVALID_STATE\r
+               Invalid state transition request. Current QP state not in allowable\r
+               state.\r
+       IB_INVALID_PKEY\r
+               Pkey specified in modify request not valid entry in P_KEY table. Or\r
+               index is out of range.\r
+       IB_INVALID_APM_STATE\r
+               Invalid automatic path migration state specified in the request.\r
+       IB_INVALID_PARAMETER\r
+               The parameter p_modify_attr is not valid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Refer to Table 79 in chapter 11, Volume 1 of the InfiniBand Specifications.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1118">ci_create_qp</a>, <a href="#robo1119">ci_create_spl_qp</a>, <a href="#robo1146">ci_query_qp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1136">[Functions]<a name="Verbs2fci5fopen5fca">\r
+Verbs/ci_open_ca</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_open_ca</strong> -- open and possibly obtain a handle to access the HCA.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_open_ca</strong>) (\r
+        IN              const   <a href="./ib_types_h.html#robo895">ib_net64_t</a>                                      ca_guid,\r
+        IN              const   <a href="#robo1114">ci_completion_cb_t</a>                      pfn_completion_cb,\r
+        IN              const   <a href="#robo1110">ci_async_event_cb_t</a>                     pfn_async_event_cb,\r
+        IN              const   void* const                                     ca_context,\r
+                OUT                     ib_ca_handle_t                          *ph_ca );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine returns a handle to an open instance of a HCA. Client can call\r
+       this routine to retrieve a new open instance. Only one instance of the\r
+       open call is active at any time. If a duplicate open is called by the\r
+       consumer or any other consumer, it IB_RESOURCE_BUSY error status is\r
+       returned.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       ca_guid\r
+               [in] The HCA adapter's EUI64 identifier. Clients would use other\r
+               enumeration API's to locate all available adapters and their\r
+               guids in a system, e.g. GetCaGuids(), maintained by the IB\r
+               Access Layer. User mode consumers also have the same mechanism\r
+               to retrieve this information.\r
+       pfn_completion_cb\r
+               [in] Completion Handler, one per open instance.\r
+       pfn_async_event_cb\r
+               [in] Asynchronous event handler, one per open instance.\r
+       ca_context\r
+               [in] <a href="#robo39">Verbs</a> consumer supplied value, which is returned on calls to\r
+               handlers which in turn is used by clients to identify the\r
+               open instance.\r
+       ph_ca\r
+               [out] Pointer to a handle to the newly open instance of the CA returned\r
+               by the <a href="#robo39">Verbs</a> Provider.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The HCA is successfully opened and returned handle is valid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to satisfy request.\r
+       IB_INVALID_PARAMETER\r
+               Callback routine are not provided, GUID value is zero, or ph_ca is NULL\r
+       IB_RESOURCE_BUSY\r
+               The interface is already open by another consumer.\r
+       IB_NOT_FOUND\r
+               ca_guid passed is not valid\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1142">ci_query_ca</a>, <a href="#robo1132">ci_modify_ca</a>, <a href="#robo1113">ci_close_ca</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1137">[Functions]<a name="Verbs2fci5fpeek5fcq">\r
+Verbs/ci_peek_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_peek_cq</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the number of entries currently on the completion queue.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_peek_cq</strong>) (\r
+        IN              const   ib_cq_handle_t                          h_cq,\r
+        OUT                             uint32_t* const                         p_n_cqes );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Handle to the completion queue to peek.\r
+\r
+       p_n_cqes\r
+               [out] The number of completion entries on the CQ.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The peek operation completed successfully.\r
+       IB_INVALID_CQ_HANDLE\r
+               The completion queue handle was invalid.\r
+       IB_INVALID_PARAMETER\r
+               A reference to the completion queue entry count was not provided.\r
+       IB_UNSUPPORTED\r
+               This operation is not supported by the channel adapter.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The value returned is a snapshot of the number of compleiton queue\r
+       entries curently on the completion queue.  Support for this operation\r
+       is optional by a channel adapter vendor.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1116">ci_create_cq</a>, <a href="#robo1138">ci_poll_cq</a>, <a href="#robo1127">ci_enable_cq_notify</a>, <a href="#robo1128">ci_enable_ncomp_cq_notify</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1138">[Functions]<a name="Verbs2fci5fpoll5fcq">\r
+Verbs/ci_poll_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_poll_cq</strong> -- Retrieve a work completion record from a completion queue\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_poll_cq</strong>) (\r
+        IN              const   ib_cq_handle_t                          h_cq,\r
+        IN      OUT                     <a href="./ib_types_h.html#robo260">ib_wc_t</a>** const                         pp_free_wclist,\r
+                OUT                     <a href="./ib_types_h.html#robo260">ib_wc_t</a>** const                         pp_done_wclist );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine retrieves a work completion entry from the specified\r
+       completion queue. The contents of the data returned in a work completion\r
+       is specified in <a href="./ib_types_h.html#robo260">ib_wc_t</a>.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Handle to the completion queue being polled.\r
+       pp_free_wclist\r
+               [in out] A list of work request structures provided by the consumer\r
+               for the channel interface to return completed Completion Queue\r
+               entries.  If not all the entries are consumed, this list holds the\r
+               list of un-utilized completion entries provided back to the consumer.\r
+       pp_done_wclist\r
+               [out] A list of work completions retrieved from the completion queue\r
+               and successfully processed.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               Poll completed successfully and found one or more entries. If on\r
+               completion the pp_free_wclist is empty, then there are potentially more\r
+               entries and the consumer must continue to retrieve entries.\r
+       IB_INVALID_CQ_HANDLE\r
+               The cq_handle supplied is not valid.\r
+       IB_NOT_FOUND\r
+               There were no completion entries found in the specified CQ.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1116">ci_create_cq</a>, <a href="#robo1140">ci_post_send</a>, <a href="#robo1139">ci_post_recv</a>, <a href="#robo1112">ci_bind_mw</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1139">[Functions]<a name="Verbs2fci5fpost5frecv">\r
+Verbs/ci_post_recv</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_post_recv</strong> -- Post a work request to the receive queue of a queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_post_recv</strong>) (\r
+        IN              const   ib_qp_handle_t                  h_qp,\r
+        IN                              <a href="./ib_types_h.html#robo225">ib_recv_wr_t</a>*   const   p_recv_wr,\r
+                OUT                     <a href="./ib_types_h.html#robo225">ib_recv_wr_t</a>                    **pp_failed );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine allows to queue a work request to the receive side of a\r
+       queue pair. The work_req holds necessary data to satisfy an incoming\r
+       receive message. If an attempt is made to queue more work requests than\r
+       what is available, an error is returned.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] Handle to the queue pair to which the receive work request is being\r
+               posted.\r
+       p_recv_wr\r
+               [in] Holds the WRs to be posted to the receive queue.\r
+       pp_failed\r
+               [out] If any entry could not be posted with the CI, then this points\r
+               to the first WR that completed unsuccessfully. If all entries are\r
+               posted, then this field is set to NULL on successful exit.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Any unsuccessful status indicates the status of the first failed request.\r
+\r
+       IB_SUCCESS\r
+               The work request was successfully queued to the receive side of the QP.\r
+       IB_INVALID_QP_HANDLE\r
+               qp_handle supplied is not valid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               The qp has exceeded its receive queue depth than what is has been\r
+               configured.\r
+       IB_INVALID_WR_TYPE\r
+               Invalid work request type found in the request.\r
+       IB_INVALID_QP_STATE\r
+               QP was in reset or init state.\r
+               (TBD: there may be an errata that allows posting in init state)\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1140">ci_post_send</a>, <a href="#robo1138">ci_poll_cq</a>.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1140">[Functions]<a name="Verbs2fci5fpost5fsend">\r
+Verbs/ci_post_send</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_post_send</strong> -- Post a work request to the send side of a queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_post_send</strong>) (\r
+        IN              const   ib_qp_handle_t                  h_qp,\r
+        IN                              <a href="./ib_types_h.html#robo249">ib_send_wr_t</a>*   const   p_send_wr,\r
+                OUT                     <a href="./ib_types_h.html#robo249">ib_send_wr_t</a>                    **pp_failed );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine posts a work request to the send side of the queue pair.\r
+       The different types of work request that can be posted are explained in\r
+       the ib_wr_t structure. For exact details on ordering rules please consult\r
+       the Volume 1, of the InfiniBand Specifications. If there is more\r
+       outstanding requests posted that what the queue is configured for, an\r
+       immediate error is returned.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] The queue pair to which this work request is being submitted.\r
+       p_send_wr\r
+               [in] A pointer to the head of the list that must be posted to the\r
+               Send Queue.\r
+       pp_failed\r
+               [out] A pointer to the head of the list that holds the failed WRs.\r
+               If all the entries provided are posted with the CI, then this parameter\r
+               would be set to NULL.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Any unsuccessful status indicates the status of the first failed request.\r
+\r
+       IB_SUCCESS\r
+               All the work requests are completed successfully\r
+       IB_INVALID_QP_HANDLE\r
+               The qp_handle supplied is invalid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete the request.\r
+               There are no more work elements in the channel interface to\r
+               process this request, and the total outstanding work request has\r
+               been exceeded.\r
+       IB_INVALID_WR_TYPE\r
+               The work request type was not valid.\r
+       IB_INVALID_QP_STATE\r
+               The queue pair is either in Reset, Init, RTR or Error state.\r
+       IB_INVALID_MAX_SGE\r
+               The work request has too many scatter gather elements than what the\r
+               QP is configured.\r
+       IB_UNSUPPORTED\r
+               Atomics or Reliable datagram request is not supported by this HCA.\r
+       IB_INVALID_ADDR_HANDLE\r
+               Address handle supplied in the work request is invalid.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Please refer to Table 81 and Table 82 for allowed operation types\r
+       on different types of queue pairs, and the different modifiers\r
+       acceptable for the work request for different QP service types.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1139">ci_post_recv</a>, <a href="#robo1138">ci_poll_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1141">[Functions]<a name="Verbs2fci5fquery5fav">\r
+Verbs/ci_query_av</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_query_av</strong> -- Obtain the address vector associated with the handle\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_query_av</strong>) (\r
+        IN              const   ib_av_handle_t                          h_av,\r
+                OUT                     <a href="./ib_types_h.html#robo57">ib_av_attr_t</a>                            *p_av_attr,\r
+                OUT                     ib_pd_handle_t                          *ph_pd,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine returns the address vector and pd_handle associated with the\r
+       av_handle.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_av\r
+               [in] Handle to the address vector\r
+       p_av_attr\r
+               [out] address vector data referred by the av_handle\r
+       ph_pd\r
+               [out] pd handle associated with the av_handle\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               returned values are valid\r
+       IB_INVALID_AV_HANDLE\r
+               The address vector handle was invalid\r
+       IB_INVALID_PARAMETER\r
+               One of the p_av_attr or ph_pd parameters was NULL.\r
+       IB_INVALID_PORT\r
+               Invalid port number passed in the Address <a href="../complib/cl_vector_h.html#robo36">Vector</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1115">ci_create_av</a>, <a href="#robo1131">ci_modify_av</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1142">[Functions]<a name="Verbs2fci5fquery5fca">\r
+Verbs/ci_query_ca</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_query_ca</strong> -- Query the attributes of the HCA\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_query_ca</strong>) (\r
+        IN              const   ib_ca_handle_t                          h_ca,\r
+                OUT                     <a href="./ib_types_h.html#robo60">ib_ca_attr_t</a>                            *p_ca_attr OPTIONAL,\r
+        IN      OUT                     uint32_t                                        *p_size,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine retrieves vital information about this hca. It returns\r
+       necessary information about HCA guid, port guids, LID's assigned by\r
+       the master SM. Clients can use this information to communicate with the\r
+       Master SM node to perform path queries etc.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] Handle returned by an earlier call to <a href="#robo1136">ci_open_ca</a>()\r
+       p_ca_attr\r
+               [out] CA attribute of this Host Channel adapter\r
+       p_size\r
+               [in/out] On input, this references the size of the data buffer\r
+               referenced by the p_ca_attr parameter.\r
+               On output, the number of bytes used or needed to copy all CA\r
+               attribute information.\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The attribute structure is returned completely.\r
+       IB_INSUFFICIENT_MEMORY\r
+               The size of the p_ca_attr buffer, specified through p_size, is\r
+               insufficient to store all of the CA attribute information.\r
+       IB_INVALID_CA_HANDLE\r
+               h_ca is invalid\r
+       IB_INVALID_PARAMETER\r
+               p_size is NULL.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Users may obtain the size of the data buffer required to obtain the\r
+       CA attributes by calling this function with p_ca_attr set to NULL.\r
+       The channel interface will then return the necessary size in the\r
+       variable referenced by the p_size parameter.  The caller can then allocate\r
+       exact size and call this routine again. No partial information is returned\r
+       if the size is not sufficient.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1136">ci_open_ca</a>, <a href="#robo1132">ci_modify_ca</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1143">[Functions]<a name="Verbs2fci5fquery5fcq">\r
+Verbs/ci_query_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_query_cq</strong> -- Query the number of entries configured for the CQ.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_query_cq</strong>) (\r
+        IN              const   ib_cq_handle_t                          h_cq,\r
+                OUT                     uint32_t                                        *p_size,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine returns the maximum number of entries this completion\r
+       queue is configured.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Handle to the completion queue\r
+       p_size\r
+               [out] The number of entries the completion queue is configured to hold\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The call completed successfully, and the returned values are valid\r
+       IB_INVALID_CQ_HANDLE\r
+               The cq_handle passed is invalid.\r
+       IB_INVALID_PARAMETER\r
+               one of the parameters was NULL.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1116">ci_create_cq</a>, <a href="#robo1150">ci_resize_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1144">[Functions]<a name="Verbs2fci5fquery5fmr">\r
+Verbs/ci_query_mr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_query_mr</strong> -- Query attributes of a registered memory region\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_query_mr</strong>) (\r
+        IN              const   ib_mr_handle_t                  h_mr,\r
+                OUT                     <a href="./ib_types_h.html#robo159">ib_mr_attr_t</a>*   const   p_mr_query );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine retrieves the memory region attributed of a\r
+       registered memory region. The memory handle could have been\r
+       obtained via <a href="#robo1147">ci_register_mr</a> or <a href="#robo1148">ci_register_pmr</a>.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mr\r
+               [in] Memory handle for which the attributes need to be retrieved.\r
+       p_mr_query\r
+               [out] Attributes of the memory region associated with memory handle.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The routine completed successfully and attributes returned\r
+               are valid.\r
+       IB_INVALID_MR_HANDLE\r
+               The memory handle is not valid.\r
+       IB_INVALID_PARAMETER\r
+               One of the input pointers was NULL.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Invalid handle checks are a mere signature checks in kernel mode.\r
+       Drivers in kernel are expected to be good corporate citizens.\r
+       In user mode, proper ownership is determined before passing handles\r
+       down to kernel to protect from rogue applications.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1147">ci_register_mr</a>, <a href="#robo1148">ci_register_pmr</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1145">[Functions]<a name="Verbs2fci5fquery5fmw">\r
+Verbs/ci_query_mw</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_query_mw</strong> -- Query memory window attributes for memory window handle\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_query_mw</strong>) (\r
+        IN              const   ib_mw_handle_t                          h_mw,\r
+                OUT                     ib_pd_handle_t                          *ph_pd,\r
+                OUT                     net32_t* const                          p_rkey,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine retrieves the current R_KEY and protection domain\r
+       handle associated with this mw_handle.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mw\r
+               [in] Memory window handle whose attributes are being retrieved.\r
+       ph_pd\r
+               [out] Protection domain handle associated with this mw_handle\r
+       p_rkey\r
+               [out] Current R_KEY associated with this mw_handle.The verbs provider\r
+               is required to give this in the expected ordering on the wire. When\r
+               rkey's are exchanged between remote nodes, no swapping of this data\r
+               will be performed.\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The query operation completed successfully.\r
+       IB_INVALID_MW_HANDLE\r
+               mw_handle supplied is an invalid handle\r
+       IB_INVALID_PARAMETER\r
+               One of the pointers was not valid.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1117">ci_create_mw</a>, <a href="#robo1112">ci_bind_mw</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1146">[Functions]<a name="Verbs2fci5fquery5fqp">\r
+Verbs/ci_query_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_query_qp</strong> -- Query the current QP attributes\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_query_qp</strong>) (\r
+        IN              const   ib_qp_handle_t                          h_qp,\r
+                OUT                     <a href="./ib_types_h.html#robo205">ib_qp_attr_t</a>* const                     p_qp_attr,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine queries the current attributes for the QP\r
+       corresponding to h_qp. The attributes are returned in p_query_attr.\r
+       Depending on the current state of the QP, some of the fields in the\r
+       attribute structure may not be valid.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] Handle to the QP for which the attributes are being retrieved\r
+       p_qp_attr\r
+               [out] Pointer to the ib_qp_query_t structure where the current\r
+               attributes of the QP is returned.\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The values returned in p_qp_attr are valid.\r
+       IB_INVALID_QP_HANDLE\r
+               The h_qp supplied is not a valid handle.\r
+       IB_INVALID_PARAMETER\r
+               Parameter p_qp_attr is not valid.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1118">ci_create_qp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1147">[Functions]<a name="Verbs2fci5fregister5fmr">\r
+Verbs/ci_register_mr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_register_mr</strong> -- Register a memory region with the HCA.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_register_mr</strong>) (\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+        IN              const   <a href="./ib_types_h.html#robo160">ib_mr_create_t</a>* const           p_mr_create,\r
+                OUT                     net32_t* const                          p_lkey,\r
+                OUT                     net32_t* const                          p_rkey,\r
+                OUT                     ib_mr_handle_t* const           ph_mr,\r
+        IN                              boolean_t                                       um_call );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine registers a virtually contiguous region of memory with the\r
+       HCA. All memory regions that need to be used by the HCA must be registered\r
+       prior to use in data transfer operations. On successful completion\r
+       the region handle, lkey are returned. If remote access rights are specified\r
+       then the rkey is also returned.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] Handle to the PD on which memory is being registered\r
+       p_mr_create\r
+               [in] Holds attributes for the region being registered. Look at\r
+               <a href="./ib_types_h.html#robo160">ib_mr_create_t</a> for more details.\r
+       p_lkey\r
+               [out] Local Key Attributes of the registered memory region\r
+       p_rkey\r
+               [out] Remote key of the registered memory region. The verbs provider\r
+               is required to give this in the expected ordering on the wire. When\r
+               rkey's are exchanged between remote nodes, no swapping of this data\r
+               will be performed.\r
+       ph_mr\r
+               [out] Handle to the registered memory region. This handle is used when\r
+               submitting work requests to refer to this region of memory.\r
+       um_call\r
+               [in] Boolean indicating whether the registration originated in user-mode.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               Registration with the adapter was successful.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to satisfy request.\r
+       IB_INVALID_PARAMETER\r
+               One of the input pointers was NULL.\r
+       IB_INVALID_PD_HANDLE\r
+               Invalid mr_pdhandle\r
+       IB_INVALID_PERMISSION\r
+               Invalid access rights.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       In addition to registration, the routine also pins memory, so that the\r
+       physical page associated with the virtual address does not get swapped\r
+       out during the time the HCA is attempting to transfer data to this\r
+       address. If the memory is not pinned, this could lead to data-corruption\r
+       and unpredictable behavior by the operating environment.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1121">ci_deregister_mr</a>, <a href="#robo1144">ci_query_mr</a>, <a href="#robo1148">ci_register_pmr</a>, <a href="#robo1133">ci_modify_mr</a>,\r
+       <a href="#robo1149">ci_register_smr</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1148">[Functions]<a name="Verbs2fci5fregister5fpmr">\r
+Verbs/ci_register_pmr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_register_pmr</strong> -- Register a physical memory region with the HCA.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_register_pmr</strong>) (\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+        IN              const   <a href="./ib_types_h.html#robo187">ib_phys_create_t</a>*const          p_pmr_create,\r
+        IN      OUT                     uint64_t* const                         p_vaddr,\r
+                OUT                     net32_t* const                          p_lkey,\r
+                OUT                     net32_t* const                          p_rkey,\r
+                OUT                     ib_mr_handle_t* const           ph_mr,\r
+        IN                              boolean_t                                       um_call );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine registers an array of physical pages as a single virtually\r
+       contiguous region with the HCA. All memory regions that need to be used by\r
+       the HCA must be registered prior to use in data transfer operations.\r
+       On successful completion the region handle, lkey and rkey used for\r
+       local and remote access authentication are returned.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_pd\r
+               [in] Handle to the PD on which memory is being registered\r
+       p_pmr_create\r
+               [in] Holds attributes for the region being registered.\r
+       p_vaddr\r
+               [in/out] On input, references the requested virtual address for the\r
+               start of the physical region.  On output, references the actual\r
+               virtual address assigned to the registered region.\r
+       p_lkey\r
+               [out] Local key of the registered memory region\r
+       p_rkey\r
+               [out] Remote key of the registered memory region.The verbs provider\r
+               is required to give this in the expected ordering on the wire. When\r
+               rkey's are exchanged between remote nodes, no swapping of this data\r
+               will be performed.\r
+       ph_mr\r
+               [out] Handle to the registered memory region. This handle is used when\r
+               submitting work requests to refer to this region of memory.\r
+       um_call\r
+               [in] Boolean indicating whether the registration originated in user-mode.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               Registration with the adapter was successful.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to satisfy request.\r
+       IB_INVALID_PARAMETER\r
+               Invalid length or address in p_mr_create. Also returned if the page_size\r
+               passed is not one of supported page sizes by the HCA.\r
+       IB_INVALID_PD_HANDLE\r
+               Invalid mr_pdhandle\r
+       IB_INVALID_PERMISSION\r
+               Invalid access rights.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel Mode only\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Remote and Atomic access settings in ib_access_ctrl_t, requires local\r
+       write access to be enabled, otherwise IB_INVALID_PERMISSION is returned.\r
+       The p_vaddr returned could be different from the vaddr specified in\r
+       p_pmr_create.  If the requested virtual addr offset in a page does not\r
+       match, the channel interface is free to pick and assign a pseudo virtual\r
+       address. The address constructed is not a system virtual address, and only\r
+       meaningful to the adapter to which this registration is targeted.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1121">ci_deregister_mr</a>, <a href="#robo1144">ci_query_mr</a>, <a href="#robo1147">ci_register_mr</a>, <a href="#robo1133">ci_modify_mr</a>,\r
+       <a href="#robo1149">ci_register_smr</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1149">[Functions]<a name="Verbs2fci5fregister5fsmr">\r
+Verbs/ci_register_smr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_register_smr</strong> -- Register a memory region using same physical pages as\r
+                      an existing memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_register_smr</strong>) (\r
+        IN              const   ib_mr_handle_t                          h_mr,\r
+        IN              const   ib_pd_handle_t                          h_pd,\r
+        IN              const   <a href="./ib_types_h.html#robo45">ib_access_t</a>                                     access_ctrl,\r
+        IN      OUT                     uint64_t* const                         p_vaddr,\r
+                OUT                     net32_t* const                          p_lkey,\r
+                OUT                     net32_t* const                          p_rkey,\r
+                OUT                     ib_mr_handle_t* const           ph_mr,\r
+        IN                              boolean_t                                       um_call );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine registers a new memory region but shares the same set of\r
+       physical pages associated with memory handle. For user mode applications\r
+       the process *must* be owning memory handle for this call to be successful.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_mr\r
+               [in] Handle to memory region whose physical pages are being registered\r
+               by this shared registration.\r
+       h_pd\r
+               [in] Handle to the PD on which memory is being registered\r
+       access_ctrl\r
+               [in] Memory access restrictions on the registered memory.\r
+       p_vaddr\r
+               [in/out] On input, references the requested virtual address for the\r
+               start of the physical region.  On output, references the actual\r
+               virtual address assigned to the registered region.\r
+       p_lkey\r
+               [out] L_KEY for this memory region.\r
+       p_rkey\r
+               [out] R_KEY for this memory region. This is valid only when remote\r
+               access is enabled for this region. The verbs provider\r
+               is required to give this in the expected ordering on the wire. When\r
+               rkey's are exchanged between remote nodes, no swapping of this data\r
+               will be performed.\r
+       ph_mr\r
+               [out] Handle to the registered memory region. This handle is used when\r
+               submitting work requests to refer to this region of memory.\r
+       um_call\r
+               [in] Boolean indicating whether the registration originated in user-mode.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The call is successful and a new region handle returned is valid.\r
+       IB_INVALID_MR_HANDLE\r
+               mr_handle is invalid.\r
+       IB_INVALID_PD_HANDLE\r
+               mr_pdhandle supplied is invalid.\r
+       IB_INVALID_PERMISSION\r
+               Invalid access rights passed in mr_access.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       ISSUE: how to deal with <a href="#robo1121">ci_deregister_mr</a>, <a href="#robo1133">ci_modify_mr</a>, <a href="#robo1134">ci_modify_pmr</a>\r
+       should we treat them as memory windows and fail those if a shared region\r
+       was registered?\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1147">ci_register_mr</a>, <a href="#robo1148">ci_register_pmr</a>, <a href="#robo1133">ci_modify_mr</a>, <a href="#robo1134">ci_modify_pmr</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1150">[Functions]<a name="Verbs2fci5fresize5fcq">\r
+Verbs/ci_resize_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_resize_cq</strong> -- Modify the maximum number of entries the CQ could hold.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_resize_cq</strong>) (\r
+        IN              const   ib_cq_handle_t                          h_cq,\r
+        IN      OUT                     uint32_t* const                         p_size,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine allows the caller to modify the maximum number of entries\r
+       the CQ could hold. It is possible to resize the CQ while there are\r
+       entries in the CQ, and with outstanding work requests that will generate\r
+       completions. If the entries in the CQ are more than the new size which is\r
+       being created, an error is returned.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Completion Queue handle\r
+       p_size\r
+               [in out] This parameter indicates the requested size of the CQ. On\r
+               successful completion, the current size allocated is returned in\r
+               this same parameter.\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The resize operation was successful.\r
+       IB_INVALID_CQ_HANDLE\r
+               The CQ handle is invalid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete request.\r
+       IB_INVALID_PARAMETER\r
+               one of the parameters was NULL.\r
+       IB_INVALID_CQ_SIZE\r
+               Requested CQ Size is not supported.\r
+       IB_OVERFLOW\r
+               The CQ has more entries than the resize request. The CQ is not\r
+               modified, and old entries still exist.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       If the consumer wishes to resize the CQ smaller than originally created,\r
+       it is recommended to retrieve all entries before performing a CQ resize\r
+       operation. It is left to the verb implementer on resize operations, to\r
+       actually reduce the entries, or leave it as it. The consumer must make no\r
+       assumptions on the successful completion, and should only rely on the\r
+       size returned in p_size.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1116">ci_create_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1151">[Functions]<a name="Verbs2fci5fum5fclose5fca5ft">\r
+Verbs/ci_um_close_ca_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_um_close_ca_t</strong> -- Close user-mode access to adapter via this h_ca\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(*<strong>ci_um_close_ca_t</strong>) (\r
+        IN                              ib_ca_handle_t                          h_ca,\r
+        IN                              ib_ca_handle_t                          h_um_ca );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine is called when the client no longer wishes to use HCA\r
+       resources obtained via this h_ca. All resources allocated as part\r
+       this handle during the <a href="#robo1152">ci_um_open_ca</a> are destroyed.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] CA handle returned via the <a href="#robo1136">ci_open_ca</a>() call.\r
+       h_um_ca\r
+               [in] CA handle returned via the <a href="#robo1152">ci_um_open_ca</a>() call.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This funtion does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This call is invoked from the context of a UM application when such an\r
+       appliation closes the HCA in user-mode.\r
+\r
+       Resources allocated during the <a href="#robo1152">ci_um_open_ca</a>() are deallocated.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1152">ci_um_open_ca</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1152">[Functions]<a name="Verbs2fci5fum5fopen5fca">\r
+Verbs/ci_um_open_ca</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_um_open_ca</strong> -- Create a CA context for use by user-mode processes.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*ci_um_open_ca_t) (\r
+        IN              const   ib_ca_handle_t                          h_ca,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>* const                     p_umv_buf,\r
+                OUT                     ib_ca_handle_t* const           ph_um_ca );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine is used called on behalf of a user-mode application to\r
+       establish a per-CA context in user-mode.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] Handle returned by an earlier call to <a href="#robo1136">ci_open_ca</a>()\r
+       p_umv_buf\r
+               [in/out] Vendor specific parameter to support user mode IO.\r
+       ph_um_ca\r
+               [out] Handle to pass into ci_um_close_ca call to free any kernel\r
+               resources allocated for the user-mode appliation.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The user-mode context information is returned successfully.\r
+       IB_INSUFFICIENT_MEMORY\r
+               The size of the p_ca_attr buffer, specified through p_size, is\r
+               insufficient to store all of the CA attribute information.\r
+       IB_INVALID_CA_HANDLE\r
+               h_ca is invalid\r
+       IB_INVALID_PARAMETER\r
+               The p_umv_buf parameters are insufficient to complete the request.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1142">ci_query_ca</a>, <a href="#robo1132">ci_modify_ca</a>, <a href="#robo1113">ci_close_ca</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1153">[Structures]<a name="Verbs2fci5fumv5fbuf5ft">\r
+Verbs/ci_umv_buf_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_umv_buf_t</strong> -- Vendor specific structure to facilitate user mode IO\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This structure is provided to assist the vendor specific user mode\r
+       library to exchange information with its kernel mode driver. The\r
+       user mode InfiniBand(tm) Access Layer will call the vendor specific\r
+       module before a call is made to the kernel mode driver. The kernel mode\r
+       driver is expected to know the format and data in the p_inout_buf,\r
+       and copy any necessary data that must be handed to the user mode\r
+       vendor library.\r
+</pre>\r
+</span><p><strong>PURPOSE</strong></p>\r
+<span class="PURPOSE"><pre>       command\r
+               A command code that is understood by the vendor specific kernel\r
+               mode driver.\r
+       p_inout_buf\r
+               The user mode component of the vendor specific library allocates\r
+               this memory and passes information in this buffer. vendor is expected\r
+               to set both the input and output buffer sizes appropriately.\r
+               This information is required since the kernel mode proxy that passes\r
+               this buffer to the kernel mode vendor specific library will copy the\r
+               content of this buffer to a kernel mode buffer. The kernel mode\r
+               vendor specific driver would copy the data that needs to be returned\r
+               to the user mode component, and set the output size appropriately\r
+               so that the proxy can now copy the data back to user mode buffer.\r
+\r
+               In the Infiniband Access Layer, it is important to know the\r
+               usage of umv_buf and whether the contents of the p_inout_buf\r
+               can have embedded user-mode pointers. When invoked from an\r
+               arbitrary thread context, Vendor driver can NOT access user-mode\r
+               pointers of a user-process.\r
+       input_size\r
+               Size of the input buffer, must be set by the user mode vendor\r
+               specific library.\r
+       output_size\r
+               Size of the output buffer. Must be set by the user mode component\r
+               to specify the maximum size of the data expected from its kernel\r
+               mode driver. The kernel mode driver would set the size to the exact\r
+               size that needs to be returned to its user mode counterpart.\r
+       status\r
+               Indicates the status of the operation from the kernel mode vendor\r
+               specific driver. The caller is supposed to initialize it appropriately\r
+               to identify if an operation succeded, or failed. For e.g. when\r
+               the user mode library is called after a resource creation, the user\r
+               mode vendor specific code must be able to identify if there is\r
+               post processing required, or if any resource allocation failed.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>typedef struct _umv_buf\r
+{\r
+        uint32_t                command;\r
+        uint32_t                status;\r
+        uint32_t                input_size;\r
+        uint32_t                output_size;\r
+        void* __ptr64   p_inout_buf;\r
+} <strong>ci_umv_buf_t</strong>;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1154">[Functions]<a name="Verbs2fci5fvendor5fcall">\r
+Verbs/ci_vendor_call</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ci_vendor_call</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Performs a vendor specific CA interface function call.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+(*<strong>ci_vendor_call</strong>)(\r
+        IN              const   ib_ca_handle_t                          h_ca,\r
+        IN              const   void* __ptr64* const            handle_array    OPTIONAL,\r
+        IN                              uint32_t                                        num_handles,\r
+        IN                              <a href="./ib_types_h.html#robo66">ib_ci_op_t</a>* const                       p_ci_op,\r
+        IN      OUT                     <a href="#robo1153">ci_umv_buf_t</a>                            *p_umv_buf OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_ca\r
+               [in] A handle to an opened CA.\r
+\r
+       handle_array\r
+               [in] This parameter references an array containing handles of\r
+               existing CA resources.  This array should contain all of the\r
+               handles specified in the vendor specific data provided with this\r
+               call.  All handles specified through this array are validated by\r
+               the verbs provider driver to ensure that the number and type of\r
+               handles are correct for the requested operation.\r
+\r
+       num_handles\r
+               [in] The number of the handles in handle array.  This count is\r
+               verified by the access layer.\r
+\r
+       p_ci_op\r
+               [in] A reference to the vendor specific CA interface data\r
+               structure containing the operation parameters.\r
+\r
+       p_umv_buf\r
+               [in out] Vendor specific parameter to support user mode IO.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The operation was successful.\r
+\r
+       IB_INVALID_CA_HANDLE\r
+               The CA handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the vendor specific data was not provided.\r
+\r
+       IB_INVALID_HANDLE\r
+               A handle specified in the handle array was invalid.\r
+\r
+       IB_INSUFFICIENT_MEMORY\r
+               There was insufficient memory to perform the operation.\r
+\r
+       IB_ERROR\r
+               An error occurred while processing the command.  Additional\r
+               error information is provided in the p_ci_op status field.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This routine performs a vendor specific CA interface function call.\r
+       The p_ci_op structure provides a means to pass vendor specific data to\r
+       the verbs provider driver.  If the vendor specific data contains handles,\r
+       the client should provide the optional handle array that lists all of\r
+        all of the handles specified in the vendor specific data.  The handles\r
+       in the handle array are restricted to the following types:  ib_ca_handle_t,\r
+       ib_pd_handle_t, ib_cq_handle_t, ib_av_handle_t, ib_qp_handle_t,\r
+       ib_mr_handle_t, or ib_mw_handle_t\r
+       The contents of the handle array are verified by the\r
+       access layer and the verbs provider driver.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1136">ci_open_ca</a>, <a href="#robo1109">ci_allocate_pd</a>, <a href="#robo1115">ci_create_av</a>, <a href="#robo1116">ci_create_cq</a>,\r
+       <a href="#robo1118">ci_create_qp</a>, <a href="#robo1147">ci_register_mr</a>, <a href="#robo1148">ci_register_pmr</a>,\r
+       <a href="#robo1149">ci_register_smr</a>, <a href="#robo1117">ci_create_mw</a>, <a href="./ib_types_h.html#robo66">ib_ci_op_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1156">[Functions]<a name="Verbs2fib5fderegister5fca">\r
+Verbs/ib_deregister_ca</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_deregister_ca</strong> -- Inform the IB Access Layer that this HCA is no longer available\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+<strong>ib_deregister_ca</strong> (\r
+        IN              const   net64_t                                         ca_guid );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine is called by the HCA driver when this HCA would no longer be\r
+       available for services. The access layer is expected to return all resources\r
+       back to the HCA driver, and perform a <a href="#robo1113">ci_close_ca</a> on this interface.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       ca_guid\r
+               [in] GUID of the HCA that is being removed.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The deregistration is successful.\r
+\r
+       IB_NOT_FOUND\r
+               No HCA with the specified GUID is registered.\r
+\r
+       IB_BUSY\r
+               The HCA is still in use and cannot be released.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel Mode only\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1158">ib_register_ca</a>, <a href="#robo1129">ci_interface_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1158">[Functions]<a name="Verbs2fib5fregister5fca">\r
+Verbs/ib_register_ca</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="#robo39">parent</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_register_ca</strong> -- Inform the IB Access Layer about a new HCA\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo49">ib_api_status_t</a>\r
+<strong>ib_register_ca</strong> (\r
+        IN              const   <a href="#robo1129">ci_interface_t</a>                          *p_ci );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine is called by a HCA kernel mode driver to inform the\r
+       IB Access Layer about a new HCA that is ready for use. It is expected\r
+       that the Access Layer could immediatly turn around and call for services\r
+       even before the call returns back the HCA driver code. The HCA driver\r
+       must initialize all resources and be ready to service any calls before adding\r
+       its services to the IB Access Layer.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_ci\r
+               [in] Pointer to the <a href="#robo1129">ci_interface_t</a> structure that has the function\r
+               vector to support verbs functionality.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The registration is successful.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the CI interface structure was not provided.\r
+\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient memory to satisfy resource requirements.\r
+\r
+       IB_DUPLICATE_CA\r
+               HCA GUID is already registered with the IB Access Layer\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel Mode only\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1156">ib_deregister_ca</a>, <a href="#robo1129">ci_interface_t</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/iba/ib_types_h.html b/trunk/docs/iba/ib_types_h.html
new file mode 100644 (file)
index 0000000..102e1d8
--- /dev/null
@@ -0,0 +1,10031 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../robodoc.css" type="text/css">\r
+<title>./inc_doc/iba/ib_types_h.html</title>\r
+<!-- Source: ./inc/iba/ib_types.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/iba/ib_types.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:20\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo40">[Modules]<a name="IBA20Base2fConstants">\r
+IBA Base/Constants</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>Constants</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The following constants are used throughout the IBA code base.\r
+\r
+       Definitions are from the InfiniBand Architecture Specification v1.1\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo41">[Modules]<a name="IBA20Base2fType20Definitions">\r
+IBA Base/Type Definitions</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Type Definitions\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Definitions are from the InfiniBand Architecture Specification v1.1\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo45">[Definitions]<a name="Access20Layer2fib5faccess5ft">\r
+Access Layer/ib_access_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_access_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicates the type of access is permitted on resources such as QPs,\r
+       memory regions and memory windows.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef uint32_t                                <strong>ib_access_t</strong>;\r
+#define IB_AC_RDMA_READ                 0x00000001\r
+#define IB_AC_RDMA_WRITE                0x00000002\r
+#define IB_AC_ATOMIC                    0x00000004\r
+#define IB_AC_LOCAL_WRITE               0x00000008\r
+#define IB_AC_MW_BIND                   0x00000010\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Users may combine access rights using a bit-wise or operation to specify\r
+       additional access.  For example: IB_AC_RDMA_READ | IB_AC_RDMA_WRITE grants\r
+       RDMA read and write access.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo49">[Definitions]<a name="Access20Layer2fib5fapi5fstatus5ft">\r
+Access Layer/ib_api_status_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_api_status_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Function return codes indicating the success or failure of an API call.\r
+       Note that success is indicated by the return value IB_SUCCESS, which\r
+       is always zero.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       IB_VERBS_PROCESSING_DONE is used by UVP library to terminate a verbs call\r
+       in the pre-ioctl step itself.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _<strong>ib_api_status_t</strong>\r
+{\r
+        IB_SUCCESS,\r
+        IB_INSUFFICIENT_RESOURCES,\r
+        IB_INSUFFICIENT_MEMORY,\r
+        IB_INVALID_PARAMETER,\r
+        IB_INVALID_SETTING,\r
+        IB_NOT_FOUND,\r
+        IB_TIMEOUT,\r
+        IB_CANCELED,\r
+        IB_INTERRUPTED,\r
+        IB_INVALID_PERMISSION,\r
+        IB_UNSUPPORTED,\r
+        IB_OVERFLOW,\r
+        IB_MAX_MCAST_QPS_REACHED,\r
+        IB_INVALID_QP_STATE,\r
+        IB_INVALID_APM_STATE,\r
+        IB_INVALID_PORT_STATE,\r
+        IB_INVALID_STATE,\r
+        IB_RESOURCE_BUSY,\r
+        IB_INVALID_PKEY,\r
+        IB_INVALID_LKEY,\r
+        IB_INVALID_RKEY,\r
+        IB_INVALID_MAX_WRS,\r
+        IB_INVALID_MAX_SGE,\r
+        IB_INVALID_CQ_SIZE,\r
+        IB_INVALID_SERVICE_TYPE,\r
+        IB_INVALID_GID,\r
+        IB_INVALID_LID,\r
+        IB_INVALID_GUID,\r
+        IB_INVALID_CA_HANDLE,\r
+        IB_INVALID_AV_HANDLE,\r
+        IB_INVALID_CQ_HANDLE,\r
+        IB_INVALID_QP_HANDLE,\r
+        IB_INVALID_PD_HANDLE,\r
+        IB_INVALID_MR_HANDLE,\r
+        IB_INVALID_MW_HANDLE,\r
+        IB_INVALID_MCAST_HANDLE,\r
+        IB_INVALID_CALLBACK,\r
+        IB_INVALID_AL_HANDLE,                                   /* InfiniBand Access Layer */\r
+        IB_INVALID_HANDLE,                                              /* InfiniBand Access Layer */\r
+        IB_ERROR,                                                               /* InfiniBand Access Layer */\r
+        IB_REMOTE_ERROR,                                                /* Infiniband Access Layer */\r
+        IB_VERBS_PROCESSING_DONE,                               /* See Notes above                 */\r
+        IB_INVALID_WR_TYPE,\r
+        IB_QP_IN_TIMEWAIT,\r
+        IB_INVALID_PORT,\r
+        IB_NOT_DONE,\r
+        IB_INVALID_INDEX,\r
+        IB_NO_MATCH,\r
+        IB_PENDING,\r
+        IB_UNKNOWN_ERROR                                                /* ALWAYS LAST ENUM VALUE! */\r
+\r
+}       <strong>ib_api_status_t</strong>;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo50">[Definitions]<a name="Access20Layer2fib5fapm5fstate5ft">\r
+Access Layer/ib_apm_state_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_apm_state_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The current automatic path migration state of a queue pair\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _ib_apm_state\r
+{\r
+        IB_APM_MIGRATED = 1,\r
+        IB_APM_REARM,\r
+        IB_APM_ARMED\r
+\r
+}       <strong>ib_apm_state_t</strong>;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo53">[Definitions]<a name="Access20Layer2fib5fapr5fstatus5ft">\r
+Access Layer/ib_apr_status_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_apr_status_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Automatic path migration status information.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef uint8_t                                                         <strong>ib_apr_status_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="./ib_al_h.html#robo69">ib_cm_apr</a>, <a href="./ib_al_h.html#robo70">ib_cm_apr_rec_t</a>\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define IB_AP_SUCCESS                                           0\r
+#define IB_AP_INVALID_COMM_ID                           1\r
+#define IB_AP_UNSUPPORTED                                       2\r
+#define IB_AP_REJECT                                            3\r
+#define IB_AP_REDIRECT                                          4\r
+#define IB_AP_IS_CURRENT                                        5\r
+#define IB_AP_INVALID_QPN                                       6\r
+#define IB_AP_INVALID_LID                                       7\r
+#define IB_AP_INVALID_GID                                       8\r
+#define IB_AP_INVALID_FLOW_LBL                          9\r
+#define IB_AP_INVALID_TCLASS                            10\r
+#define IB_AP_INVALID_HOP_LIMIT                         11\r
+#define IB_AP_INVALID_PKT_RATE                          12\r
+#define IB_AP_INVALID_SL                                        13\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo56">[Definitions]<a name="Access20Layer2fib5fatomic5ft">\r
+Access Layer/ib_atomic_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_atomic_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicates atomicity levels supported by an adapter.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _<strong>ib_atomic_t</strong>\r
+{\r
+        IB_ATOMIC_NONE,\r
+        IB_ATOMIC_LOCAL,\r
+        IB_ATOMIC_GLOBAL\r
+\r
+}       <strong>ib_atomic_t</strong>;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IB_ATOMIC_NONE\r
+               Atomic operations not supported.\r
+\r
+       IB_ATOMIC_LOCAL\r
+               Atomic operations guaranteed between QPs of a single CA.\r
+\r
+       IB_ATOMIC_GLOBAL\r
+               Atomic operations are guaranteed between CA and any other entity\r
+               in the system.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo57">[Structures]<a name="Access20Layer2fib5fav5fattr5ft">\r
+Access Layer/ib_av_attr_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_av_attr_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA address vector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_av_attr\r
+{\r
+        uint8_t                                 port_num;\r
+\r
+        uint8_t                                 sl;\r
+        <a href="#robo893">ib_net16_t</a>                              dlid;\r
+\r
+        boolean_t                               grh_valid;\r
+        <a href="#robo859">ib_grh_t</a>                                grh;\r
+        uint8_t                                 static_rate;\r
+        uint8_t                                 path_bits;\r
+\r
+        struct _av_conn\r
+        {\r
+                uint8_t                         path_mtu;\r
+                uint8_t                         local_ack_timeout;\r
+                uint8_t                         seq_err_retry_cnt;\r
+                uint8_t                         rnr_retry_cnt;\r
+\r
+        }       conn;\r
+\r
+}       <strong>ib_av_attr_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo856">ib_gid_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo59">[Structures]<a name="Access20Layer2fib5fbind5fwr5ft">\r
+Access Layer/ib_bind_wr_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_bind_wr_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information used to submit a memory window bind work request to the send\r
+       queue of a queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_bind_wr\r
+{\r
+        uint64_t                                wr_id;\r
+        <a href="#robo248">ib_send_opt_t</a>                   send_opt;\r
+\r
+        ib_mr_handle_t                  h_mr;\r
+        <a href="#robo45">ib_access_t</a>                             access_ctrl;\r
+        net32_t                                 current_rkey;\r
+\r
+        <a href="#robo148">ib_local_ds_t</a>                   local_ds;\r
+\r
+}       <strong>ib_bind_wr_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       wr_id\r
+               A 64-bit work request identifier that is returned to the consumer\r
+               as part of the work completion.\r
+\r
+       send_opt\r
+               Optional send control parameters.\r
+\r
+       h_mr\r
+               Handle to the memory region to which this window is being bound.\r
+\r
+       access_ctrl\r
+               Access rights for this memory window.\r
+\r
+       current_rkey\r
+               The current rkey assigned to this window for remote access.\r
+\r
+       local_ds\r
+               A reference to a local data segment used by the bind operation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo248">ib_send_opt_t</a>, <a href="#robo45">ib_access_t</a>, <a href="#robo148">ib_local_ds_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo60">[Structures]<a name="Access20Layer2fib5fca5fattr5ft">\r
+Access Layer/ib_ca_attr_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_ca_attr_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information about a channel adapter.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_ca_attr\r
+{\r
+        <a href="#robo895">ib_net64_t</a>                              ca_guid;\r
+\r
+        uint32_t                                vend_id;\r
+        uint16_t                                dev_id;\r
+        uint16_t                                revision;\r
+        uint64_t                                fw_ver;\r
+\r
+        /*\r
+         * Total size of the ca attributes in bytes\r
+         */\r
+        uint32_t                                size;\r
+        uint32_t                                max_qps;\r
+        uint32_t                                max_wrs;\r
+\r
+        uint32_t                                max_sges;\r
+        uint32_t                                max_rd_sges;\r
+\r
+        uint32_t                                max_cqs;\r
+        uint32_t                                max_cqes;\r
+\r
+        uint32_t                                max_pds;\r
+\r
+        uint32_t                                init_regions;\r
+        uint64_t                                init_region_size;\r
+\r
+        uint32_t                                init_windows;\r
+        uint32_t                                max_addr_handles;\r
+\r
+        uint32_t                                max_partitions;\r
+\r
+        <a href="#robo56">ib_atomic_t</a>                             atomicity;\r
+\r
+        uint8_t                                 max_qp_resp_res;\r
+        uint8_t                                 max_resp_res;\r
+\r
+        uint8_t                                 max_qp_init_depth;\r
+\r
+        uint32_t                                max_ipv6_qps;\r
+        uint32_t                                max_ether_qps;\r
+\r
+        uint32_t                                max_mcast_grps;\r
+        uint32_t                                max_mcast_qps;\r
+        uint32_t                                max_qps_per_mcast_grp;\r
+\r
+        /*\r
+         * local_ack_delay:\r
+         * Specifies the maximum time interval between the local CA receiving\r
+         * a message and the transmission of the associated ACK or NAK.\r
+         *\r
+         * timeout = 4.096 microseconds * 2^local_ack_delay\r
+         */\r
+        uint8_t                                 local_ack_delay;\r
+\r
+        boolean_t                               bad_pkey_ctr_support;\r
+        boolean_t                               bad_qkey_ctr_support;\r
+        boolean_t                               raw_mcast_support;\r
+        boolean_t                               apm_support;\r
+        boolean_t                               av_port_check;\r
+        boolean_t                               change_primary_port;\r
+        boolean_t                               modify_wr_depth;\r
+        boolean_t                               current_qp_state_support;\r
+        boolean_t                               shutdown_port_capability;\r
+        boolean_t                               init_type_support;\r
+        boolean_t                               port_active_event_support;\r
+        boolean_t                               system_image_guid_support;\r
+        boolean_t                               hw_agents;\r
+\r
+        <a href="#robo895">ib_net64_t</a>                              system_image_guid;\r
+\r
+        uint32_t                                num_page_sizes;\r
+        uint8_t                                 num_ports;\r
+\r
+        uint32_t* __ptr64               p_page_size;\r
+        <a href="#robo200">ib_port_attr_t</a>* __ptr64 p_port_attr;\r
+\r
+}       <strong>ib_ca_attr_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       ca_guid\r
+               GUID for this adapter.\r
+\r
+       vend_id\r
+               IEEE vendor ID for this adapter\r
+\r
+       dev_id\r
+               Device ID of this adapter. (typically from PCI device ID)\r
+\r
+       revision\r
+               Revision ID of this adapter\r
+\r
+       fw_ver\r
+               Device Firmware version.\r
+\r
+       size\r
+               Total size in bytes for the HCA attributes.  This size includes total\r
+               size required for all the variable members of the structure.  If a\r
+               vendor requires to pass vendor specific fields beyond this structure,\r
+               the HCA vendor can choose to report a larger size.  If a vendor is\r
+               reporting extended vendor specific features, they should also provide\r
+               appropriate access functions to aid with the required interpretation.\r
+\r
+       max_qps\r
+               Maximum number of QP's supported by this HCA.\r
+\r
+       max_wrs\r
+               Maximum number of work requests supported by this HCA.\r
+\r
+       max_sges\r
+               Maximum number of scatter gather elements supported per work request.\r
+\r
+       max_rd_sges\r
+               Maximum number of scatter gather elements supported for READ work\r
+               requests for a Reliable Datagram QP.  This value must be zero if RD\r
+               service is not supported.\r
+\r
+       max_cqs\r
+               Maximum number of Completion Queues supported.\r
+\r
+       max_cqes\r
+               Maximum number of CQ elements supported per CQ.\r
+\r
+       max_pds\r
+               Maximum number of protection domains supported.\r
+\r
+       init_regions\r
+               Initial number of memory regions supported.  These are only informative\r
+               values.  HCA vendors can extended and grow these limits on demand.\r
+\r
+       init_region_size\r
+               Initial limit on the size of the registered memory region.\r
+\r
+       init_windows\r
+               Initial number of window entries supported.\r
+\r
+       max_addr_handles\r
+               Maximum number of address handles supported.\r
+\r
+       max_partitions\r
+               Maximum number of partitions supported.\r
+\r
+       atomicity\r
+               Indicates level of atomic operations supported by this HCA.\r
+\r
+       max_qp_resp_res\r
+               Maximum limit on number of responder resources for incomming RDMA\r
+               operations on QPs.\r
+\r
+       max_resp_res\r
+               Maximum number of responder resources per HCA, with this HCA used as\r
+               the target.\r
+\r
+       max_qp_init_depth\r
+               Maximimum initiator depth per QP for initiating RDMA reads and\r
+               atomic operations.\r
+\r
+       max_ipv6_qps\r
+       max_ether_qps\r
+               Maximum number of IPV6 and raw ether QP's supported by this HCA.\r
+\r
+       max_mcast_grps\r
+               Maximum number of multicast groups supported.\r
+\r
+       max_mcast_qps\r
+               Maximum number of QP's that can support multicast operations.\r
+\r
+       max_qps_per_mcast_grp\r
+               Maximum number of multicast QP's per multicast group.\r
+\r
+       local_ack_delay\r
+               Specifies the maximum time interval between the local CA receiving\r
+               a message and the transmission of the associated ACK or NAK.\r
+               timeout = 4.096 microseconds * 2^local_ack_delay\r
+\r
+       bad_pkey_ctr_support\r
+       bad_qkey_ctr_support\r
+               Indicates support for the bad pkey and qkey counters.\r
+\r
+       raw_mcast_support\r
+               Indicates support for raw packet multicast.\r
+\r
+       apm_support\r
+               Indicates support for Automatic Path Migration.\r
+\r
+       av_port_check\r
+               Indicates ability to check port number in address handles.\r
+\r
+       change_primary_port\r
+               Indicates ability to change primary port for a QP during a\r
+               SQD-&gt;RTS transition.\r
+\r
+       modify_wr_depth\r
+               Indicates ability to modify QP depth during a modify QP operation.\r
+               Check the verb specification for permitted states.\r
+\r
+       current_qp_state_support\r
+               Indicates ability of the HCA to support the current QP state modifier\r
+               during a modify QP operation.\r
+\r
+       shutdown_port_capability\r
+               Shutdown port capability support indicator.\r
+\r
+       init_type_support\r
+               Indicates init_type_reply and ability to set init_type is supported.\r
+\r
+       port_active_event_support\r
+               Port active event support indicator.\r
+\r
+       system_image_guid_support\r
+               System image GUID support indicator.\r
+\r
+       hw_agents\r
+               Indicates SMA is implemented in HW.\r
+\r
+       system_image_guid\r
+               Optional system image GUID.  This field is valid only if the\r
+               system_image_guid_support flag is set.\r
+\r
+       num_page_sizes\r
+               Indicates support for different page sizes supported by the HCA.\r
+               The variable size array can be obtained from p_page_size.\r
+\r
+       num_ports\r
+               Number of physical ports supported on this HCA.\r
+\r
+       p_page_size\r
+               Array holding different page size supported.\r
+\r
+       p_port_attr\r
+               Array holding port attributes.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure contains the attributes of a channel adapter.  Users must\r
+       call <a href="#robo102">ib_copy_ca_attr</a> to copy the contents of this structure to a new\r
+       memory region.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo200">ib_port_attr_t</a>, <a href="#robo56">ib_atomic_t</a>, <a href="#robo102">ib_copy_ca_attr</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo61">[Definitions]<a name="Access20Layer2fib5fca5fmod5ft">\r
+Access Layer/ib_ca_mod_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_ca_mod_t</strong> -- Modify port attributes and error counters\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Specifies modifications to the port attributes of a channel adapter.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef uint32_t                                                        <strong>ib_ca_mod_t</strong>;\r
+#define IB_CA_MOD_IS_CM_SUPPORTED                       0x00000001\r
+#define IB_CA_MOD_IS_SNMP_SUPPORTED                     0x00000002\r
+#define IB_CA_MOD_IS_DEV_MGMT_SUPPORTED         0x00000004\r
+#define IB_CA_MOD_IS_VEND_SUPPORTED                     0x00000008\r
+#define IB_CA_MOD_IS_SM                                         0x00000010\r
+#define IB_CA_MOD_IS_SM_DISABLED                        0x00000020\r
+#define IB_CA_MOD_QKEY_CTR                                      0x00000040\r
+#define IB_CA_MOD_PKEY_CTR                                      0x00000080\r
+#define IB_CA_MOD_IS_NOTICE_SUPPORTED           0x00000100\r
+#define IB_CA_MOD_IS_TRAP_SUPPORTED                     0x00000200\r
+#define IB_CA_MOD_IS_APM_SUPPORTED                      0x00000400\r
+#define IB_CA_MOD_IS_SLMAP_SUPPORTED            0x00000800\r
+#define IB_CA_MOD_IS_PKEY_NVRAM_SUPPORTED       0x00001000\r
+#define IB_CA_MOD_IS_MKEY_NVRAM_SUPPORTED       0x00002000\r
+#define IB_CA_MOD_IS_SYSGUID_SUPPORTED          0x00004000\r
+#define IB_CA_MOD_IS_DR_NOTICE_SUPPORTED        0x00008000\r
+#define IB_CA_MOD_IS_BOOT_MGMT_SUPPORTED        0x00010000\r
+#define IB_CA_MOD_IS_CAPM_NOTICE_SUPPORTED      0x00020000\r
+#define IB_CA_MOD_IS_REINIT_SUPORTED            0x00040000\r
+#define IB_CA_MOD_IS_LEDINFO_SUPPORTED          0x00080000\r
+#define IB_CA_MOD_SHUTDOWN_PORT                         0x00100000\r
+#define IB_CA_MOD_INIT_TYPE_VALUE                       0x00200000\r
+#define IB_CA_MOD_SYSTEM_IMAGE_GUID                     0x00400000\r
+#define IB_CA_MOD_IS_CLIENT_REREGISTER_SUPPORTED        0x00800000\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IB_CA_MOD_IS_CM_SUPPORTED\r
+               Indicates if there is a communication manager accessible through\r
+               the port.\r
+\r
+       IB_CA_MOD_IS_SNMP_SUPPORTED\r
+               Indicates if there is an SNMP agent accessible through the port.\r
+\r
+       IB_CA_MOD_IS_DEV_MGMT_SUPPORTED\r
+               Indicates if there is a device management agent accessible through\r
+               the port.\r
+\r
+       IB_CA_MOD_IS_VEND_SUPPORTED\r
+               Indicates if there is a vendor supported agent accessible through\r
+               the port.\r
+\r
+       IB_CA_MOD_IS_SM\r
+               Indicates if there is a subnet manager accessible through\r
+               the port.\r
+\r
+       IB_CA_MOD_IS_SM_DISABLED\r
+               Indicates if the port has been disabled for configuration by the subnet\r
+               manager.\r
+\r
+       IB_CA_MOD_QKEY_CTR\r
+               Used to reset the qkey violation counter associated with the port.\r
+\r
+       IB_CA_MOD_PKEY_CTR\r
+               Used to reset the pkey violation counter associated with the port.\r
+\r
+       IB_CA_MOD_IS_NOTICE_SUPPORTED\r
+               Indicates that this CA supports ability to generate Notices for\r
+               Port State changes. (only applicable to switches)\r
+\r
+       IB_CA_MOD_IS_TRAP_SUPPORTED\r
+               Indicates that this management port supports ability to generate\r
+               trap messages. (only applicable to switches)\r
+\r
+       IB_CA_MOD_IS_APM_SUPPORTED\r
+               Indicates that this port is capable of performing Automatic Migration.\r
+\r
+       IB_CA_MOD_IS_SLMAP_SUPPORTED\r
+               Indicates this port supports SLMAP capability.\r
+\r
+       IB_CA_MOD_IS_PKEY_NVRAM_SUPPORTED\r
+               Indicates that PKEY is supported in NVRAM\r
+\r
+       IB_CA_MOD_IS_MKEY_NVRAM_SUPPORTED\r
+               Indicates that MKEY is supported in NVRAM\r
+\r
+       IB_CA_MOD_IS_SYSGUID_SUPPORTED\r
+               Indicates System Image GUID support.\r
+\r
+       IB_CA_MOD_IS_DR_NOTICE_SUPPORTED\r
+               Indicate support for generating Direct Routed Notices\r
+\r
+       IB_CA_MOD_IS_BOOT_MGMT_SUPPORTED\r
+               Indicates support for Boot Management\r
+\r
+       IB_CA_MOD_IS_CAPM_NOTICE_SUPPORTED\r
+               Indicates capability to generate notices for changes to CAPMASK\r
+\r
+       IB_CA_MOD_IS_REINIT_SUPORTED\r
+               Indicates type of node init supported. Refer to Chapter 14 for\r
+               Initialization actions.\r
+\r
+       IB_CA_MOD_IS_LEDINFO_SUPPORTED\r
+               Indicates support for LED info.\r
+\r
+       IB_CA_MOD_SHUTDOWN_PORT\r
+               Used to modify the port active indicator.\r
+\r
+       IB_CA_MOD_INIT_TYPE_VALUE\r
+               Used to modify the init_type value for the port.\r
+\r
+       IB_CA_MOD_SYSTEM_IMAGE_GUID\r
+               Used to modify the system image GUID for the port.\r
+\r
+       IB_CA_MOD_IS_CLIENT_REREGISTER_SUPPORTED\r
+               Used to modify the system image GUID for the port.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo66">[Structures]<a name="Access20Layer2fib5fci5fop5ft">\r
+Access Layer/ib_ci_op_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_ci_op_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       A structure used for vendor specific CA interface communication.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_ci_op\r
+{\r
+        IN                              uint32_t                                        command;\r
+        IN                              uint32_t                                        buf_size;\r
+        IN                              uint32_t                                        buf_info;\r
+        IN      OUT                     int32_t                                         status;\r
+                OUT                     uint32_t                                        num_bytes_ret;\r
+        IN      OUT                     void* __ptr64                           p_buf OPTIONAL;\r
+\r
+}       <strong>ib_ci_op_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       command\r
+               A command code that is understood by the verbs provider.\r
+\r
+       status\r
+               The completion status from the verbs provider.  This field should be\r
+               initialize to indicate an error to allow detection and cleanup in\r
+               case a communication error occurs between user-mode and kernel-mode.\r
+\r
+       buf_size\r
+               The size of the buffer in bytes.\r
+\r
+       buf_info\r
+               Additional buffer information\r
+\r
+       p_buf\r
+               A reference to a buffer containing vendor specific data.  The verbs\r
+               provider must not access pointers in the p_buf between user-mode and\r
+               kernel-mode.  Any pointers embedded in the p_buf are invalidated by\r
+               the user-mode/kernel-mode transition.\r
+\r
+       num_bytes_ret\r
+               The size in bytes of the vendor specific data returned in the buffer.\r
+               This field is set by the verbs provider.  The verbs provider should\r
+               verify that the buffer size is sufficient to hold the data being\r
+               returned.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure is provided to allow the exchange of vendor specific\r
+       data between the originator and the verbs provider.  Users of this\r
+       structure are expected to know the format of data in the p_buf based\r
+       on the structure command field or the usage context.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo73">[Definitions]<a name="Access20Layer2fib5fcm5fcap5fmask5ft">\r
+Access Layer/ib_cm_cap_mask_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_cm_cap_mask_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Capability mask values in ClassPortInfo.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#define IB_CM_RELIABLE_CONN_CAPABLE                     <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(9)\r
+#define IB_CM_RELIABLE_DGRM_CAPABLE                     <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(10)\r
+#define IB_CM_RDGRM_CAPABLE                                     <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(11)\r
+#define IB_CM_UNRELIABLE_CONN_CAPABLE           <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(12)\r
+#define IB_CM_SIDR_CAPABLE                                      <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(13)\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="./ib_al_h.html#robo93">ib_cm_rep</a>, <a href="#robo839">ib_class_port_info_t</a>\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"></span>\r
+<hr />\r
+\r
+<h2><a name="robo102">[Functions]<a name="Access20layer2fib5fcopy5fca5fattr">\r
+Access layer/ib_copy_ca_attr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_copy_ca_attr</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Copies CA attributes.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT <a href="#robo60">ib_ca_attr_t</a>* AL_API\r
+<strong>ib_copy_ca_attr</strong>(\r
+        IN                              <a href="#robo60">ib_ca_attr_t</a>* const             p_dest,\r
+        IN              const   <a href="#robo60">ib_ca_attr_t</a>* const             p_src );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dest\r
+               Pointer to the buffer that is the destination of the copy.\r
+\r
+       p_src\r
+               Pointer to the CA attributes to copy.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Pointer to the copied CA attributes.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The buffer pointed to by the p_dest parameter must be at least the size\r
+       specified in the size field of the buffer pointed to by p_src.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo60">ib_ca_attr_t</a>, ib_dup_ca_attr, ib_free_ca_attr\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo141">[Definitions]<a name="Access20Layer2fib5finit5ftype5ft">\r
+Access Layer/ib_init_type_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_init_type_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       If supported by the HCA, the type of initialization requested by\r
+       this port before SM moves it to the active or armed state.  If the\r
+       SM implements reinitialization, it shall set these bits to indicate\r
+       the type of initialization performed prior to activating the port.\r
+       Otherwise, these bits shall be set to 0.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef uint8_t                                 <strong>ib_init_type_t</strong>;\r
+#define IB_INIT_TYPE_NO_LOAD                            0x01\r
+#define IB_INIT_TYPE_PRESERVE_CONTENT           0x02\r
+#define IB_INIT_TYPE_PRESERVE_PRESENCE          0x04\r
+#define IB_INIT_TYPE_DO_NOT_RESUSCITATE         0x08\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo148">[Structures]<a name="Access20Layer2fib5flocal5fds5ft">\r
+Access Layer/ib_local_ds_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_local_ds_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Local data segment information referenced by send and receive work\r
+       requests.  This is used to specify local data buffers used as part of a\r
+       work request.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_local_ds\r
+{\r
+        uint64_t                                vaddr;\r
+        uint32_t                                length;\r
+        uint32_t                                lkey;\r
+\r
+}       <strong>ib_local_ds_t</strong>;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo159">[Structures]<a name="Access20Layer2fib5fmr5fattr5ft">\r
+Access Layer/ib_mr_attr_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_mr_attr_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Attributes of a registered memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_mr_attr\r
+{\r
+        ib_pd_handle_t                  h_pd;\r
+        uint64_t                                local_lb;\r
+        uint64_t                                local_ub;\r
+        uint64_t                                remote_lb;\r
+        uint64_t                                remote_ub;\r
+        <a href="#robo45">ib_access_t</a>                             access_ctrl;\r
+        net32_t                                 lkey;\r
+        net32_t                                 rkey;\r
+\r
+}       <strong>ib_mr_attr_t</strong>;\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       h_pd\r
+               Handle to the protection domain for this memory region.\r
+\r
+       local_lb\r
+               The virtual address of the lower bound of protection for local\r
+               memory access.  This is always a 64-bit quantity to support registering\r
+               more than 4GB of memory on 32-bit systems with PAE.\r
+\r
+       local_ub\r
+               The virtual address of the upper bound of protection for local\r
+               memory access.  This is always a 64-bit quantity to support registering\r
+               more than 4GB of memory on 32-bit systems with PAE.\r
+\r
+       remote_lb\r
+               The virtual address of the lower bound of protection for remote\r
+               memory access.  This is always a 64-bit quantity to support registering\r
+               more than 4GB of memory on 32-bit systems with PAE.\r
+\r
+       remote_ub\r
+               The virtual address of the upper bound of protection for remote\r
+               memory access.  This is always a 64-bit quantity to support registering\r
+               more than 4GB of memory on 32-bit systems with PAE.\r
+\r
+       access_ctrl\r
+               Access rights for the specified memory region.\r
+\r
+       lkey\r
+               The lkey associated with this memory region.\r
+\r
+       rkey\r
+               The rkey associated with this memory region.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The remote_lb, remote_ub, and rkey are only valid if remote memory access\r
+       is enabled for this memory region.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo45">ib_access_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo160">[Structures]<a name="Access20Layer2fib5fmr5fcreate5ft">\r
+Access Layer/ib_mr_create_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_mr_create_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information required to create a registered memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_mr_create\r
+{\r
+        void* __ptr64                   vaddr;\r
+        uint64_t                                length;\r
+        <a href="#robo45">ib_access_t</a>                             access_ctrl;\r
+\r
+}       <strong>ib_mr_create_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       vaddr\r
+               Starting virtual address of the region being registered.\r
+\r
+       length\r
+               Length of the buffer to register.\r
+\r
+       access_ctrl\r
+               Access rights of the registered region.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo45">ib_access_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo161">[Definitions]<a name="Access20Layer2fib5fmr5fmod5ft">\r
+Access Layer/ib_mr_mod_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_mr_mod_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Mask used to specify which attributes of a registered memory region are\r
+       being modified.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef uint32_t                                                <strong>ib_mr_mod_t</strong>;\r
+#define IB_MR_MOD_ADDR                                  0x00000001\r
+#define IB_MR_MOD_PD                                    0x00000002\r
+#define IB_MR_MOD_ACCESS                                0x00000004\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       IB_MEM_MOD_ADDR\r
+               The address of the memory region is being modified.\r
+\r
+       IB_MEM_MOD_PD\r
+               The protection domain associated with the memory region is being\r
+               modified.\r
+\r
+       IB_MEM_MOD_ACCESS\r
+               The access rights the memory region are being modified.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo165">[Definitions]<a name="Access20Layer2fib5fpd5ftype5ft">\r
+Access Layer/ib_pd_type_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pd_type_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicates the type of protection domain being allocated.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _ib_pd_type\r
+{\r
+        IB_PDT_NORMAL,\r
+        IB_PDT_ALIAS,\r
+        IB_PDT_SQP,\r
+        IB_PDT_UD\r
+\r
+}       <strong>ib_pd_type_t</strong>;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IB_PDT_NORMAL\r
+               Protection domain for all non-aliased QPs.\r
+\r
+       IB_PDT_ALIAS\r
+               Protection domain for IB_QPT_QP0_ALIAS and IB_QPT_QP1_ALIAS QPs.\r
+\r
+       IB_PDT_SQP\r
+               Protection domain for special queue pair usage.\r
+\r
+       IB_PDT_UD\r
+               Protection domain for UD queue pair usage.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo187">[Structures]<a name="Access20Layer2fib5fphys5fcreate5ft">\r
+Access Layer/ib_phys_create_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_phys_create_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information required to create a physical memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_phys_create\r
+{\r
+        uint64_t                                        length;\r
+        uint32_t                                        num_ranges;\r
+        <a href="#robo188">ib_phys_range_t</a>* __ptr64        range_array;\r
+        uint32_t                                        buf_offset;\r
+        uint32_t                                        hca_page_size;\r
+        <a href="#robo45">ib_access_t</a>                                     access_ctrl;\r
+\r
+}       <strong>ib_phys_create_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       length\r
+               The length of the memory region in bytes.\r
+\r
+       num_ranges\r
+               Number of ib_phys_range structures listed in the specified range array.\r
+\r
+       range_array\r
+               An array of ib_phys_range structures to be registered as a single memory\r
+               region.\r
+\r
+       buf_offset\r
+               The offset into the first physical memory range of the specified memory\r
+               region on which to start the virtual address.\r
+\r
+       hca_page_size\r
+               The HCA page size to use to register the memory.\r
+\r
+       access_ctrl\r
+               Access rights of the registered region.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo45">ib_access_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo188">[Structures]<a name="Access20Layer2fib5fphys5frange5ft">\r
+Access Layer/ib_phys_range_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_phys_range_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information describing a physical memory range.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_phys_range\r
+{\r
+        uint64_t                                base_addr;\r
+        uint64_t                                size;\r
+\r
+}       <strong>ib_phys_range_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       base_addr\r
+               Physical address of the base of the memory range.\r
+\r
+       size\r
+               size, in bytes, of the memory range.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The base address must be start and end on an HCA-supported page boundary.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo187">ib_phys_create_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo199">[Structures]<a name="Access20Layer2fib5fport5fattr5fmod5ft">\r
+Access Layer/ib_port_attr_mod_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_attr_mod_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Port attributes that may be modified.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_port_attr_mod\r
+{\r
+        <a href="#robo201">ib_port_cap_t</a>                   cap;\r
+        uint16_t                                pkey_ctr;\r
+        uint16_t                                qkey_ctr;\r
+\r
+        <a href="#robo141">ib_init_type_t</a>                  init_type;\r
+        <a href="#robo895">ib_net64_t</a>                              system_image_guid;\r
+\r
+}       <strong>ib_port_attr_mod_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo201">ib_port_cap_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo200">[Structures]<a name="Access20Layer2fib5fport5fattr5ft">\r
+Access Layer/ib_port_attr_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_attr_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information about a port on a given channel adapter.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_port_attr\r
+{\r
+        <a href="#robo895">ib_net64_t</a>                              port_guid;\r
+        uint8_t                                 port_num;\r
+        uint8_t                                 mtu;\r
+        uint64_t                                max_msg_size;\r
+        <a href="#robo893">ib_net16_t</a>                              lid;\r
+        uint8_t                                 lmc;\r
+\r
+        /*\r
+         * LinkWidthSupported as defined in PortInfo.  Required to calculate\r
+         * inter-packet delay (a.k.a. static rate).\r
+         */\r
+        uint8_t                                 link_width_supported;\r
+\r
+        uint16_t                                max_vls;\r
+\r
+        <a href="#robo893">ib_net16_t</a>                              sm_lid;\r
+        uint8_t                                 sm_sl;\r
+        uint8_t                                 link_state;\r
+\r
+        <a href="#robo141">ib_init_type_t</a>                  init_type_reply;        /* Optional */\r
+\r
+        /*\r
+         * subnet_timeout:\r
+         * The maximum expected subnet propagation delay to reach any port on\r
+         * the subnet.  This value also determines the rate at which traps can\r
+         * be generated from this node.\r
+         *\r
+         * timeout = 4.096 microseconds * 2^subnet_timeout\r
+         */\r
+        uint8_t                                 subnet_timeout;\r
+\r
+        <a href="#robo201">ib_port_cap_t</a>                   cap;\r
+        uint16_t                                pkey_ctr;\r
+        uint16_t                                qkey_ctr;\r
+\r
+        uint16_t                                num_gids;\r
+        uint16_t                                num_pkeys;\r
+        /*\r
+         * Pointers at the end of the structure to allow doing a simple\r
+         * memory comparison of contents up to the first pointer.\r
+         */\r
+        <a href="#robo856">ib_gid_t</a>* __ptr64               p_gid_table;\r
+        <a href="#robo893">ib_net16_t</a>* __ptr64             p_pkey_table;\r
+\r
+}       <strong>ib_port_attr_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       uint8_t, <a href="#robo201">ib_port_cap_t</a>, <a href="#robo720">ib_link_states_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo201">[Structures]<a name="Access20Layer2fib5fport5fcap5ft">\r
+Access Layer/ib_port_cap_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_cap_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicates which management agents are currently available on the specified\r
+       port.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_port_cap\r
+{\r
+        boolean_t               cm;\r
+        boolean_t               snmp;\r
+        boolean_t               dev_mgmt;\r
+        boolean_t               vend;\r
+        boolean_t               sm;\r
+        boolean_t               sm_disable;\r
+        boolean_t               qkey_ctr;\r
+        boolean_t               pkey_ctr;\r
+        boolean_t               notice;\r
+        boolean_t               trap;\r
+        boolean_t               apm;\r
+        boolean_t               slmap;\r
+        boolean_t               pkey_nvram;\r
+        boolean_t               mkey_nvram;\r
+        boolean_t               sysguid;\r
+        boolean_t               dr_notice;\r
+        boolean_t               boot_mgmt;\r
+        boolean_t               capm_notice;\r
+        boolean_t               reinit;\r
+        boolean_t               ledinfo;\r
+        boolean_t               port_active;\r
+        boolean_t               ipd;\r
+        boolean_t               pkey_switch_ext_port;\r
+        boolean_t               bm;\r
+        boolean_t               link_rtl;\r
+        boolean_t               client_reregister;\r
+\r
+}       <strong>ib_port_cap_t</strong>;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo205">[Structures]<a name="Access20Layer2fib5fqp5fattr5ft">\r
+Access Layer/ib_qp_attr_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_qp_attr_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Queue pair attributes returned through <a href="./ib_al_h.html#robo218">ib_query_qp</a>.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_qp_attr\r
+{\r
+        ib_pd_handle_t                  h_pd;\r
+        <a href="#robo210">ib_qp_type_t</a>                    qp_type;\r
+        <a href="#robo45">ib_access_t</a>                             access_ctrl;\r
+        uint16_t                                pkey_index;\r
+\r
+        uint32_t                                sq_max_inline;\r
+        uint32_t                                sq_depth;\r
+        uint32_t                                rq_depth;\r
+        uint32_t                                sq_sge;\r
+        uint32_t                                rq_sge;\r
+        uint8_t                                 init_depth;\r
+        uint8_t                                 resp_res;\r
+\r
+        ib_cq_handle_t                  h_sq_cq;\r
+        ib_cq_handle_t                  h_rq_cq;\r
+\r
+        boolean_t                               sq_signaled;\r
+\r
+        <a href="#robo209">ib_qp_state_t</a>                   state;\r
+        <a href="#robo894">ib_net32_t</a>                              num;\r
+        <a href="#robo894">ib_net32_t</a>                              dest_num;\r
+        <a href="#robo894">ib_net32_t</a>                              qkey;\r
+\r
+        <a href="#robo894">ib_net32_t</a>                              sq_psn;\r
+        <a href="#robo894">ib_net32_t</a>                              rq_psn;\r
+\r
+        uint8_t                                 primary_port;\r
+        uint8_t                                 alternate_port;\r
+        <a href="#robo57">ib_av_attr_t</a>                    primary_av;\r
+        <a href="#robo57">ib_av_attr_t</a>                    alternate_av;\r
+        <a href="#robo50">ib_apm_state_t</a>                  apm_state;\r
+\r
+}       <strong>ib_qp_attr_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       h_pd\r
+               This is a handle to a protection domain associated with the QP.\r
+\r
+       sq_max_inline\r
+               Maximum payload that can be inlined directly in a WQE, eliminating\r
+               protection checks and additional DMA operations.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Other fields are defined by the Infiniband specification.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo210">ib_qp_type_t</a>, <a href="#robo45">ib_access_t</a>, <a href="#robo209">ib_qp_state_t</a>, <a href="#robo57">ib_av_attr_t</a>, <a href="#robo50">ib_apm_state_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo206">[Structures]<a name="Access20Layer2fib5fqp5fcreate5ft">\r
+Access Layer/ib_qp_create_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_qp_create_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Attributes used to initialize a queue pair at creation time.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_qp_create\r
+{\r
+        <a href="#robo210">ib_qp_type_t</a>                    qp_type;\r
+\r
+        uint32_t                                sq_depth;\r
+        uint32_t                                rq_depth;\r
+        uint32_t                                sq_sge;\r
+        uint32_t                                rq_sge;\r
+\r
+        ib_cq_handle_t                  h_sq_cq;\r
+        ib_cq_handle_t                  h_rq_cq;\r
+\r
+        boolean_t                               sq_signaled;\r
+\r
+}       <strong>ib_qp_create_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       type\r
+               Specifies the type of queue pair to create.\r
+\r
+       sq_depth\r
+               Indicates the requested maximum number of work requests that may be\r
+               outstanding on the queue pair's send queue.  This value must be less\r
+               than or equal to the maximum reported by the channel adapter associated\r
+               with the queue pair.\r
+\r
+       rq_depth\r
+               Indicates the requested maximum number of work requests that may be\r
+               outstanding on the queue pair's receive queue.  This value must be less\r
+               than or equal to the maximum reported by the channel adapter associated\r
+               with the queue pair.\r
+\r
+       sq_sge\r
+               Indicates the maximum number scatter-gather elements that may be\r
+               given in a send work request.  This value must be less\r
+               than or equal to the maximum reported by the channel adapter associated\r
+               with the queue pair.\r
+\r
+       rq_sge\r
+               Indicates the maximum number scatter-gather elements that may be\r
+               given in a receive work request.  This value must be less\r
+               than or equal to the maximum reported by the channel adapter associated\r
+               with the queue pair.\r
+\r
+       h_sq_cq\r
+               A handle to the completion queue that will be used to report send work\r
+               request completions.  This handle must be NULL if the type is\r
+               IB_QPT_MAD, IB_QPT_QP0_ALIAS, or IB_QPT_QP1_ALIAS.\r
+\r
+       h_rq_cq\r
+               A handle to the completion queue that will be used to report receive\r
+               work request completions.  This handle must be NULL if the type is\r
+               IB_QPT_MAD, IB_QPT_QP0_ALIAS, or IB_QPT_QP1_ALIAS.\r
+\r
+       sq_signaled\r
+               A flag that is used to indicate whether the queue pair will signal\r
+               an event upon completion of a send work request.  If set to\r
+               TRUE, send work requests will always generate a completion\r
+               event.  If set to FALSE, a completion event will only be\r
+               generated if the send_opt field of the send work request has the\r
+               IB_SEND_OPT_SIGNALED flag set.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo210">ib_qp_type_t</a>, <a href="#robo205">ib_qp_attr_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo207">[Structures]<a name="Access20Layer2fib5fqp5fmod5ft">\r
+Access Layer/ib_qp_mod_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_qp_mod_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information needed to change the state of a queue pair through the\r
+       <a href="./ib_al_h.html#robo158">ib_modify_qp</a> call.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_qp_mod\r
+{\r
+        <a href="#robo209">ib_qp_state_t</a>                           req_state;\r
+\r
+        union _qp_state\r
+        {\r
+                struct _qp_init\r
+                {\r
+                        uint8_t                         primary_port;\r
+                        <a href="#robo894">ib_net32_t</a>                      qkey;\r
+                        uint16_t                        pkey_index;\r
+                        <a href="#robo45">ib_access_t</a>                     access_ctrl;\r
+\r
+                }       init;\r
+\r
+                struct _qp_rtr\r
+                {\r
+                        <a href="#robo894">ib_net32_t</a>                      rq_psn;\r
+                        <a href="#robo894">ib_net32_t</a>                      dest_qp;\r
+                        <a href="#robo57">ib_av_attr_t</a>            primary_av;\r
+                        uint8_t                         resp_res;\r
+                        uint8_t                         rnr_nak_timeout;\r
+\r
+                        <a href="#robo208">ib_qp_opts_t</a>            opts;\r
+                        <a href="#robo57">ib_av_attr_t</a>            alternate_av;\r
+                        <a href="#robo894">ib_net32_t</a>                      qkey;\r
+                        uint16_t                        pkey_index;\r
+                        <a href="#robo45">ib_access_t</a>                     access_ctrl;\r
+                        uint32_t                        sq_depth;\r
+                        uint32_t                        rq_depth;\r
+\r
+                }       rtr;\r
+\r
+                struct _qp_rts\r
+                {\r
+                        <a href="#robo894">ib_net32_t</a>                      sq_psn;\r
+                        uint8_t                         retry_cnt;\r
+                        uint8_t                         rnr_retry_cnt;\r
+                        uint8_t                         local_ack_timeout;\r
+                        uint8_t                         init_depth;\r
+\r
+                        <a href="#robo208">ib_qp_opts_t</a>            opts;\r
+                        uint8_t                         rnr_nak_timeout;\r
+                        <a href="#robo209">ib_qp_state_t</a>           current_state;\r
+                        <a href="#robo894">ib_net32_t</a>                      qkey;\r
+                        <a href="#robo45">ib_access_t</a>                     access_ctrl;\r
+                        uint8_t                         resp_res;\r
+\r
+                        <a href="#robo57">ib_av_attr_t</a>            primary_av;\r
+                        <a href="#robo57">ib_av_attr_t</a>            alternate_av;\r
+\r
+                        uint32_t                        sq_depth;\r
+                        uint32_t                        rq_depth;\r
+\r
+                        <a href="#robo50">ib_apm_state_t</a>          apm_state;\r
+                        uint8_t                         primary_port;\r
+                        uint16_t                        pkey_index;\r
+\r
+                }       rts;\r
+\r
+                struct _qp_sqd\r
+                {\r
+                        boolean_t                       sqd_event;\r
+\r
+                }       sqd;\r
+\r
+        }       state;\r
+\r
+}       <strong>ib_qp_mod_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo209">ib_qp_state_t</a>, <a href="#robo45">ib_access_t</a>, <a href="#robo57">ib_av_attr_t</a>, <a href="#robo50">ib_apm_state_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo208">[Definitions]<a name="Access20Layer2fib5fqp5fopts5ft">\r
+Access Layer/ib_qp_opts_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_qp_opts_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Optional fields supplied in the modify QP operation.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef uint32_t                                <strong>ib_qp_opts_t</strong>;\r
+#define IB_MOD_QP_ALTERNATE_AV          0x00000001\r
+#define IB_MOD_QP_PKEY                          0x00000002\r
+#define IB_MOD_QP_APM_STATE                     0x00000004\r
+#define IB_MOD_QP_PRIMARY_AV            0x00000008\r
+#define IB_MOD_QP_RNR_NAK_TIMEOUT       0x00000010\r
+#define IB_MOD_QP_RESP_RES                      0x00000020\r
+#define IB_MOD_QP_INIT_DEPTH            0x00000040\r
+#define IB_MOD_QP_PRIMARY_PORT          0x00000080\r
+#define IB_MOD_QP_ACCESS_CTRL           0x00000100\r
+#define IB_MOD_QP_QKEY                          0x00000200\r
+#define IB_MOD_QP_SQ_DEPTH                      0x00000400\r
+#define IB_MOD_QP_RQ_DEPTH                      0x00000800\r
+#define IB_MOD_QP_CURRENT_STATE         0x00001000\r
+#define IB_MOD_QP_RETRY_CNT                     0x00002000\r
+#define IB_MOD_QP_LOCAL_ACK_TIMEOUT     0x00004000\r
+#define IB_MOD_QP_RNR_RETRY_CNT         0x00008000\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo207">ib_qp_mod_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo209">[Definitions]<a name="Access20Layer2fib5fqp5fstate5ft">\r
+Access Layer/ib_qp_state_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_qp_state_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicates or sets the state of a queue pair.  The current state of a queue\r
+       pair is returned through the ib_qp_query call and set via the\r
+       ib_qp_modify call.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef uint32_t                                <strong>ib_qp_state_t</strong>;\r
+#define IB_QPS_RESET                    0x00000001\r
+#define IB_QPS_INIT                             0x00000002\r
+#define IB_QPS_RTR                              0x00000004\r
+#define IB_QPS_RTS                              0x00000008\r
+#define IB_QPS_SQD                              0x00000010\r
+#define IB_QPS_SQD_DRAINING             0x00000030\r
+#define IB_QPS_SQD_DRAINED              0x00000050\r
+#define IB_QPS_SQERR                    0x00000080\r
+#define IB_QPS_ERROR                    0x00000100\r
+#define IB_QPS_TIME_WAIT                0xDEAD0000      /* InfiniBand Access Layer */\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo210">[Definitions]<a name="Access20Layer2fib5fqp5ftype5ft">\r
+Access Layer/ib_qp_type_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_qp_type_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicates the type of queue pair being created.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _ib_qp_type\r
+{\r
+        IB_QPT_RELIABLE_CONN    = 0,            /* Matches CM REQ transport type */\r
+        IB_QPT_UNRELIABLE_CONN  = 1,            /* Matches CM REQ transport type */\r
+        IB_QPT_UNRELIABLE_DGRM  = 3,            /* Purposefully skip RDD type. */\r
+        IB_QPT_QP0,\r
+        IB_QPT_QP1,\r
+        IB_QPT_RAW_IPV6,\r
+        IB_QPT_RAW_ETHER,\r
+        IB_QPT_MAD,                                                             /* InfiniBand Access Layer */\r
+        IB_QPT_QP0_ALIAS,                                               /* InfiniBand Access Layer */\r
+        IB_QPT_QP1_ALIAS                                                /* InfiniBand Access Layer */\r
+\r
+}       <strong>ib_qp_type_t</strong>;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IB_QPT_RELIABLE_CONN\r
+               Reliable, connected queue pair.\r
+\r
+       IB_QPT_UNRELIABLE_CONN\r
+               Unreliable, connected queue pair.\r
+\r
+       IB_QPT_UNRELIABLE_DGRM\r
+               Unreliable, datagram queue pair.\r
+\r
+       IB_QPT_QP0\r
+               Queue pair 0.\r
+\r
+       IB_QPT_QP1\r
+               Queue pair 1.\r
+\r
+       IB_QPT_RAW_DGRM\r
+               Raw datagram queue pair.\r
+\r
+       IB_QPT_RAW_IPV6\r
+               Raw IP version 6 queue pair.\r
+\r
+       IB_QPT_RAW_ETHER\r
+               Raw Ethernet queue pair.\r
+\r
+       IB_QPT_MAD\r
+               Unreliable, datagram queue pair that will send and receive management\r
+               datagrams with assistance from the access layer.\r
+\r
+       IB_QPT_QP0_ALIAS\r
+               Alias to queue pair 0.  Aliased QPs can only be created on an aliased\r
+               protection domain.\r
+\r
+       IB_QPT_QP1_ALIAS\r
+               Alias to queue pair 1.  Aliased QPs can only be created on an aliased\r
+               protection domain.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo224">[Definitions]<a name="Access20Layer2fib5frecv5fopt5ft">\r
+Access Layer/ib_recv_opt_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_recv_opt_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicates optional fields valid in a receive work completion.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef uint32_t                                        <strong>ib_recv_opt_t</strong>;\r
+#define IB_RECV_OPT_IMMEDIATE           0x00000001\r
+#define IB_RECV_OPT_FORWARD                     0x00000002\r
+#define IB_RECV_OPT_GRH_VALID           0x00000004\r
+#define IB_RECV_OPT_VEND_MASK           0xFFFF0000\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IB_RECV_OPT_IMMEDIATE\r
+               Indicates that immediate data is valid for this work completion.\r
+\r
+       IB_RECV_OPT_FORWARD\r
+               Indicates that the received trap should be forwarded to the SM.\r
+\r
+       IB_RECV_OPT_GRH_VALID\r
+               Indicates presence of the global route header. When set, the first\r
+               40 bytes received are the GRH.\r
+\r
+       IB_RECV_OPT_VEND_MASK\r
+               This mask indicates bits reserved in the receive options that may be\r
+               used by the verbs provider to indicate vendor specific options.  Bits\r
+               set in this area of the receive options are ignored by the Access Layer,\r
+               but may have specific meaning to the underlying VPD.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo225">[Structures]<a name="Access20Layer2fib5frecv5fwr5ft">\r
+Access Layer/ib_recv_wr_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_recv_wr_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information used to submit a work request to the receive queue of a queue\r
+       pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_recv_wr\r
+{\r
+        struct _ib_recv_wr* __ptr64     p_next;\r
+        uint64_t                                        wr_id;\r
+        uint32_t                                        num_ds;\r
+        <a href="#robo148">ib_local_ds_t</a>* __ptr64          ds_array;\r
+\r
+}       <strong>ib_recv_wr_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       p_next\r
+               A pointer used to chain work requests together.  This permits multiple\r
+               work requests to be posted to a queue pair through a single function\r
+               call.  This value is set to NULL to mark the end of the chain.\r
+\r
+       wr_id\r
+               A 64-bit work request identifier that is returned to the consumer\r
+               as part of the work completion.\r
+\r
+       num_ds\r
+               Number of local data segments specified by this work request.\r
+\r
+       ds_array\r
+               A reference to an array of local data segments used by the send\r
+               operation.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo148">ib_local_ds_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo238">[Definitions]<a name="Access20Layer2fib5frej5fstatus5ft">\r
+Access Layer/ib_rej_status_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_rej_status_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Rejection reasons.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="#robo893">ib_net16_t</a>                                                      <strong>ib_rej_status_t</strong>;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="./ib_al_h.html#robo90">ib_cm_rej</a>, <a href="./ib_al_h.html#robo91">ib_cm_rej_rec_t</a>\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define IB_REJ_INSUF_QP                                         <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(1)\r
+#define IB_REJ_INSUF_EEC                                        <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(2)\r
+#define IB_REJ_INSUF_RESOURCES                          <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(3)\r
+#define IB_REJ_TIMEOUT                                          <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(4)\r
+#define IB_REJ_UNSUPPORTED                                      <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(5)\r
+#define IB_REJ_INVALID_COMM_ID                          <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(6)\r
+#define IB_REJ_INVALID_COMM_INSTANCE            <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(7)\r
+#define IB_REJ_INVALID_SID                                      <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(8)\r
+#define IB_REJ_INVALID_XPORT                            <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(9)\r
+#define IB_REJ_STALE_CONN                                       <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(10)\r
+#define IB_REJ_RDC_NOT_EXIST                            <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(11)\r
+#define IB_REJ_INVALID_GID                                      <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(12)\r
+#define IB_REJ_INVALID_LID                                      <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(13)\r
+#define IB_REJ_INVALID_SL                                       <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(14)\r
+#define IB_REJ_INVALID_TRAFFIC_CLASS            <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(15)\r
+#define IB_REJ_INVALID_HOP_LIMIT                        <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(16)\r
+#define IB_REJ_INVALID_PKT_RATE                         <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(17)\r
+#define IB_REJ_INVALID_ALT_GID                          <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(18)\r
+#define IB_REJ_INVALID_ALT_LID                          <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(19)\r
+#define IB_REJ_INVALID_ALT_SL                           <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(20)\r
+#define IB_REJ_INVALID_ALT_TRAFFIC_CLASS        <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(21)\r
+#define IB_REJ_INVALID_ALT_HOP_LIMIT            <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(22)\r
+#define IB_REJ_INVALID_ALT_PKT_RATE                     <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(23)\r
+#define IB_REJ_PORT_REDIRECT                            <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(24)\r
+#define IB_REJ_INVALID_MTU                                      <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(26)\r
+#define IB_REJ_INSUFFICIENT_RESP_RES            <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(27)\r
+#define IB_REJ_USER_DEFINED                                     <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(28)\r
+#define IB_REJ_INVALID_RNR_RETRY                        <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(29)\r
+#define IB_REJ_DUPLICATE_LOCAL_COMM_ID          <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(30)\r
+#define IB_REJ_INVALID_CLASS_VER                        <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(31)\r
+#define IB_REJ_INVALID_FLOW_LBL                         <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(32)\r
+#define IB_REJ_INVALID_ALT_FLOW_LBL                     <a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(33)\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo248">[Definitions]<a name="Access20Layer2fib5fsend5fopt5ft">\r
+Access Layer/ib_send_opt_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_send_opt_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Optional flags used when posting send work requests.  These flags\r
+       indicate specific processing for the send operation.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef uint32_t                                        <strong>ib_send_opt_t</strong>;\r
+#define IB_SEND_OPT_IMMEDIATE           0x00000001\r
+#define IB_SEND_OPT_FENCE                       0x00000002\r
+#define IB_SEND_OPT_SIGNALED            0x00000004\r
+#define IB_SEND_OPT_SOLICITED           0x00000008\r
+#define IB_SEND_OPT_INLINE                      0x00000010\r
+#define IB_SEND_OPT_LOCAL                       0x00000020\r
+#define IB_SEND_OPT_VEND_MASK           0xFFFF0000\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       The following flags determine the behavior of a work request when\r
+       posted to the send side.\r
+\r
+       IB_SEND_OPT_IMMEDIATE\r
+               Send immediate data with the given request.\r
+\r
+       IB_SEND_OPT_FENCE\r
+               The operation is fenced.  Complete all pending send operations before\r
+               processing this request.\r
+\r
+       IB_SEND_OPT_SIGNALED\r
+               If the queue pair is configured for signaled completion, then\r
+               generate a completion queue entry when this request completes.\r
+\r
+       IB_SEND_OPT_SOLICITED\r
+               Set the solicited bit on the last packet of this request.\r
+\r
+       IB_SEND_OPT_INLINE\r
+               Indicates that the requested send data should be copied into a VPD\r
+               owned data buffer.  This flag permits the user to issue send operations\r
+               without first needing to register the buffer(s) associated with the\r
+               send operation.  Verb providers that support this operation may place\r
+               vendor specific restrictions on the size of send operation that may\r
+               be performed as inline.\r
+\r
+       IB_SEND_OPT_LOCAL\r
+               Indicates that a sent MAD request should be given to the local VPD for\r
+               processing.  MADs sent using this option are not placed on the wire.\r
+               This send option is only valid for MAD send operations.\r
+\r
+       IB_SEND_OPT_VEND_MASK\r
+               This mask indicates bits reserved in the send options that may be used\r
+               by the verbs provider to indicate vendor specific options.  Bits set\r
+               in this area of the send options are ignored by the Access Layer, but\r
+               may have specific meaning to the underlying VPD.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo249">[Structures]<a name="Access20Layer2fib5fsend5fwr5ft">\r
+Access Layer/ib_send_wr_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_send_wr_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Information used to submit a work request to the send queue of a queue\r
+       pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_send_wr\r
+{\r
+        struct _ib_send_wr* __ptr64     p_next;\r
+        uint64_t                                        wr_id;\r
+        <a href="#robo262">ib_wr_type_t</a>                            wr_type;\r
+        <a href="#robo248">ib_send_opt_t</a>                           send_opt;\r
+        uint32_t                                        num_ds;\r
+        <a href="#robo148">ib_local_ds_t</a>* __ptr64          ds_array;\r
+        <a href="#robo894">ib_net32_t</a>                                      immediate_data;\r
+\r
+        union _send_dgrm\r
+        {\r
+                struct _send_ud\r
+                {\r
+                        <a href="#robo894">ib_net32_t</a>              remote_qp;\r
+                        <a href="#robo894">ib_net32_t</a>              remote_qkey;\r
+                        ib_av_handle_t  h_av;\r
+                        uint16_t                pkey_index;\r
+                        void* __ptr64   rsvd;\r
+\r
+                }       ud;\r
+\r
+                struct _send_raw_ether\r
+                {\r
+                        <a href="#robo893">ib_net16_t</a>              dest_lid;\r
+                        uint8_t                 path_bits;\r
+                        uint8_t                 sl;\r
+                        uint8_t                 max_static_rate;\r
+                        <a href="#robo893">ib_net16_t</a>              ether_type;\r
+\r
+                }       raw_ether;\r
+\r
+                struct _send_raw_ipv6\r
+                {\r
+                        <a href="#robo893">ib_net16_t</a>              dest_lid;\r
+                        uint8_t                 path_bits;\r
+                        uint8_t                 sl;\r
+                        uint8_t                 max_static_rate;\r
+\r
+                }       raw_ipv6;\r
+\r
+        }       dgrm;\r
+\r
+        struct _send_remote_ops\r
+        {\r
+                uint64_t                        vaddr;\r
+                net32_t                         rkey;\r
+\r
+                <a href="#robo895">ib_net64_t</a>                      atomic1;\r
+                <a href="#robo895">ib_net64_t</a>                      atomic2;\r
+\r
+        }       remote_ops;\r
+\r
+}       <strong>ib_send_wr_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       p_next\r
+               A pointer used to chain work requests together.  This permits multiple\r
+               work requests to be posted to a queue pair through a single function\r
+               call.  This value is set to NULL to mark the end of the chain.\r
+\r
+       wr_id\r
+               A 64-bit work request identifier that is returned to the consumer\r
+               as part of the work completion.\r
+\r
+       wr_type\r
+               The type of work request being submitted to the send queue.\r
+\r
+       send_opt\r
+               Optional send control parameters.\r
+\r
+       num_ds\r
+               Number of local data segments specified by this work request.\r
+\r
+       ds_array\r
+               A reference to an array of local data segments used by the send\r
+               operation.\r
+\r
+       immediate_data\r
+               32-bit field sent as part of a message send or RDMA write operation.\r
+               This field is only valid if the send_opt flag IB_SEND_OPT_IMMEDIATE\r
+               has been set.\r
+\r
+       dgrm.ud.remote_qp\r
+               Identifies the destination queue pair of an unreliable datagram send\r
+               operation.\r
+\r
+       dgrm.ud.remote_qkey\r
+               The qkey for the destination queue pair.\r
+\r
+       dgrm.ud.h_av\r
+               An address vector that specifies the path information used to route\r
+               the outbound datagram to the destination queue pair.\r
+\r
+       dgrm.ud.pkey_index\r
+               The pkey index for this send work request.  This is valid only\r
+               for IB_QPT_QP1 and IB_QPT_QP1_ALIAS QP types.  The work request\r
+               is posted to using this pkey index build the GMP's BTH instead\r
+               of the QP's pkey.\r
+\r
+       dgrm.ud.rsvd\r
+               Reserved for use by the Access Layer.\r
+\r
+       dgrm.raw_ether.dest_lid\r
+               The destination LID that will receive this raw ether send.\r
+\r
+       dgrm.raw_ether.path_bits\r
+               path bits...\r
+\r
+       dgrm.raw_ether.sl\r
+               service level...\r
+\r
+       dgrm.raw_ether.max_static_rate\r
+               static rate...\r
+\r
+       dgrm.raw_ether.ether_type\r
+               ether type...\r
+\r
+       dgrm.raw_ipv6.dest_lid\r
+               The destination LID that will receive this raw ether send.\r
+\r
+       dgrm.raw_ipv6.path_bits\r
+               path bits...\r
+\r
+       dgrm.raw_ipv6.sl\r
+               service level...\r
+\r
+       dgrm.raw_ipv6.max_static_rate\r
+               static rate...\r
+\r
+       remote_ops.vaddr\r
+               The registered virtual memory address of the remote memory to access\r
+               with an RDMA or atomic operation.\r
+\r
+       remote_ops.rkey\r
+               The rkey associated with the specified remote vaddr. This data must\r
+               be presented exactly as obtained from the remote node. No swapping\r
+               of data must be performed.\r
+\r
+       atomic1\r
+               The first operand for an atomic operation.\r
+\r
+       atomic2\r
+               The second operand for an atomic operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The format of data sent over the fabric is user-defined and is considered\r
+       opaque to the access layer.  The sole exception to this are MADs posted\r
+       to a MAD QP service.  MADs are expected to match the format defined by\r
+       the Infiniband specification and must be in network-byte order when posted\r
+       to the MAD QP service.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo262">ib_wr_type_t</a>, <a href="#robo148">ib_local_ds_t</a>, <a href="#robo248">ib_send_opt_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo259">[Definitions]<a name="Access20Layer2fib5fwc5fstatus5ft">\r
+Access Layer/ib_wc_status_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_wc_status_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicates the status of a completed work request.  These VALUES are\r
+       returned to the user when retrieving completions.  Note that success is\r
+       identified as IB_WCS_SUCCESS, which is always zero.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _<strong>ib_wc_status_t</strong>\r
+{\r
+        IB_WCS_SUCCESS,\r
+        IB_WCS_LOCAL_LEN_ERR,\r
+        IB_WCS_LOCAL_OP_ERR,\r
+        IB_WCS_LOCAL_PROTECTION_ERR,\r
+        IB_WCS_WR_FLUSHED_ERR,\r
+        IB_WCS_MEM_WINDOW_BIND_ERR,\r
+        IB_WCS_REM_ACCESS_ERR,\r
+        IB_WCS_REM_OP_ERR,\r
+        IB_WCS_RNR_RETRY_ERR,\r
+        IB_WCS_TIMEOUT_RETRY_ERR,\r
+        IB_WCS_REM_INVALID_REQ_ERR,\r
+        IB_WCS_BAD_RESP_ERR,\r
+        IB_WCS_LOCAL_ACCESS_ERR,\r
+        IB_WCS_GENERAL_ERR,\r
+        IB_WCS_UNMATCHED_RESPONSE,                      /* InfiniBand Access Layer */\r
+        IB_WCS_CANCELED,                                        /* InfiniBand Access Layer */\r
+        IB_WCS_UNKNOWN                                          /* Must be last. */\r
+\r
+}       <strong>ib_wc_status_t</strong>;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IB_WCS_SUCCESS\r
+               Work request completed successfully.\r
+\r
+       IB_WCS_MAD\r
+               The completed work request was associated with a managmenet datagram\r
+               that requires post processing.  The MAD will be returned to the user\r
+               through a callback once all post processing has completed.\r
+\r
+       IB_WCS_LOCAL_LEN_ERR\r
+               Generated for a work request posted to the send queue when the\r
+               total of the data segment lengths exceeds the message length of the\r
+               channel.  Generated for a work request posted to the receive queue when\r
+               the total of the data segment lengths is too small for a\r
+               valid incoming message.\r
+\r
+       IB_WCS_LOCAL_OP_ERR\r
+               An internal QP consistency error was generated while processing this\r
+               work request.  This may indicate that the QP was in an incorrect state\r
+               for the requested operation.\r
+\r
+       IB_WCS_LOCAL_PROTECTION_ERR\r
+               The data segments of the locally posted work request did not refer to\r
+               a valid memory region.  The memory may not have been properly\r
+               registered for the requested operation.\r
+\r
+       IB_WCS_WR_FLUSHED_ERR\r
+               The work request was flushed from the QP before being completed.\r
+\r
+       IB_WCS_MEM_WINDOW_BIND_ERR\r
+               A memory window bind operation failed due to insufficient access\r
+               rights.\r
+\r
+       IB_WCS_REM_ACCESS_ERR,\r
+               A protection error was detected at the remote node for a RDMA or atomic\r
+               operation.\r
+\r
+       IB_WCS_REM_OP_ERR,\r
+               The operation could not be successfully completed at the remote node.\r
+               This may indicate that the remote QP was in an invalid state or\r
+               contained an invalid work request.\r
+\r
+       IB_WCS_RNR_RETRY_ERR,\r
+               The RNR retry count was exceeded while trying to send this message.\r
+\r
+       IB_WCS_TIMEOUT_RETRY_ERR\r
+               The local transport timeout counter expired while trying to send this\r
+               message.\r
+\r
+       IB_WCS_REM_INVALID_REQ_ERR,\r
+               The remote node detected an invalid message on the channel.  This error\r
+               is usually a result of one of the following:\r
+                       - The operation was not supported on receive queue.\r
+                       - There was insufficient buffers to receive a new RDMA request.\r
+                       - There was insufficient buffers to receive a new atomic operation.\r
+                       - An RDMA request was larger than 2^31 bytes.\r
+\r
+      IB_WCS_BAD_RESP_ERR,\r
+              An unexpected transport layer opcode was returned\r
+              by the responder.\r
+\r
+      IB_WCS_LOCAL_ACCESS_ERR,\r
+              A protection error occurred on a local data buffer\r
+              during the processing of a RDMA Write with Immediate Data \r
+              operation sent from the remote node.\r
+\r
+       IB_WCS_UNMATCHED_RESPONSE\r
+               A response MAD was received for which there was no matching send.  The\r
+               send operation may have been canceled by the user or may have timed\r
+               out.\r
+\r
+       IB_WCS_CANCELED\r
+               The completed work request was canceled by the user.\r
+\r
+      IB_WCS_GENERAL_ERR,\r
+              Any other error\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo260">[Structures]<a name="Access20Layer2fib5fwc5ft">\r
+Access Layer/ib_wc_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_wc_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Work completion information.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_wc\r
+{\r
+        struct _ib_wc* __ptr64  p_next;\r
+        uint64_t                                wr_id;\r
+        <a href="#robo261">ib_wc_type_t</a>                    wc_type;\r
+\r
+        uint32_t                                length;\r
+        <a href="#robo259">ib_wc_status_t</a>                  status;\r
+        uint64_t                                vendor_specific;\r
+\r
+        union _wc_recv\r
+        {\r
+                struct _wc_conn\r
+                {\r
+                        <a href="#robo224">ib_recv_opt_t</a>   recv_opt;\r
+                        <a href="#robo894">ib_net32_t</a>              immediate_data;\r
+\r
+                }       conn;\r
+\r
+                struct _wc_ud\r
+                {\r
+                        <a href="#robo224">ib_recv_opt_t</a>   recv_opt;\r
+                        <a href="#robo894">ib_net32_t</a>              immediate_data;\r
+                        <a href="#robo894">ib_net32_t</a>              remote_qp;\r
+                        uint16_t                pkey_index;\r
+                        <a href="#robo893">ib_net16_t</a>              remote_lid;\r
+                        uint8_t                 remote_sl;\r
+                        uint8_t                 path_bits;\r
+\r
+                }       ud;\r
+\r
+                struct _wc_raw_ipv6\r
+                {\r
+                        <a href="#robo893">ib_net16_t</a>              remote_lid;\r
+                        uint8_t                 remote_sl;\r
+                        uint8_t                 path_bits;\r
+\r
+                }       raw_ipv6;\r
+\r
+                struct _wc_raw_ether\r
+                {\r
+                        <a href="#robo893">ib_net16_t</a>              remote_lid;\r
+                        uint8_t                 remote_sl;\r
+                        uint8_t                 path_bits;\r
+                        <a href="#robo893">ib_net16_t</a>              ether_type;\r
+\r
+                }       raw_ether;\r
+\r
+        }       recv;\r
+\r
+}       <strong>ib_wc_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       p_next\r
+               A pointer used to chain work completions.  This permits multiple\r
+               work completions to be retrieved from a completion queue through a\r
+               single function call.  This value is set to NULL to mark the end of\r
+               the chain.\r
+\r
+       wr_id\r
+               The 64-bit work request identifier that was specified when posting the\r
+               work request.\r
+\r
+       wc_type\r
+               Indicates the type of work completion.\r
+\r
+       length\r
+               The total length of the data sent or received with the work request.\r
+\r
+       status\r
+               The result of the work request.\r
+\r
+       vendor_specific\r
+               HCA vendor specific information returned as part of the completion.\r
+\r
+       recv.conn.recv_opt\r
+               Indicates optional fields valid as part of a work request that\r
+               completed on a connected (reliable or unreliable) queue pair.\r
+\r
+       recv.conn.immediate_data\r
+               32-bit field received as part of an inbound message on a connected\r
+               queue pair.  This field is only valid if the recv_opt flag\r
+               IB_RECV_OPT_IMMEDIATE has been set.\r
+\r
+       recv.ud.recv_opt\r
+               Indicates optional fields valid as part of a work request that\r
+               completed on an unreliable datagram queue pair.\r
+\r
+       recv.ud.immediate_data\r
+               32-bit field received as part of an inbound message on a unreliable\r
+               datagram queue pair.  This field is only valid if the recv_opt flag\r
+               IB_RECV_OPT_IMMEDIATE has been set.\r
+\r
+       recv.ud.remote_qp\r
+               Identifies the source queue pair of a received datagram.\r
+\r
+       recv.ud.pkey_index\r
+               The pkey index of the source queue pair. This is valid only for\r
+               IB_QPT_QP1 and IB_QPT_QP1_ALIAS QP types.\r
+\r
+       recv.ud.remote_lid\r
+               The source LID of the received datagram.\r
+\r
+       recv.ud.remote_sl\r
+               The service level used by the source of the received datagram.\r
+\r
+       recv.ud.path_bits\r
+               path bits...\r
+\r
+       recv.raw_ipv6.remote_lid\r
+               The source LID of the received message.\r
+\r
+       recv.raw_ipv6.remote_sl\r
+               The service level used by the source of the received message.\r
+\r
+       recv.raw_ipv6.path_bits\r
+               path bits...\r
+\r
+       recv.raw_ether.remote_lid\r
+               The source LID of the received message.\r
+\r
+       recv.raw_ether.remote_sl\r
+               The service level used by the source of the received message.\r
+\r
+       recv.raw_ether.path_bits\r
+               path bits...\r
+\r
+       recv.raw_ether.ether_type\r
+               ether type...\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       When the work request completes with error, the only values that the\r
+       consumer can depend on are the wr_id field, and the status of the\r
+       operation.\r
+\r
+       If the consumer is using the same CQ for completions from more than\r
+       one type of QP (i.e Reliable Connected, Datagram etc), then the consumer\r
+       must have additional information to decide what fields of the union are\r
+       valid.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo261">ib_wc_type_t</a>, <a href="#robo210">ib_qp_type_t</a>, <a href="#robo259">ib_wc_status_t</a>, <a href="#robo224">ib_recv_opt_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo261">[Definitions]<a name="Access20Layer2fib5fwc5ftype5ft">\r
+Access Layer/ib_wc_type_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_wc_type_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicates the type of work completion.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _<strong>ib_wc_type_t</strong>\r
+{\r
+        IB_WC_SEND,\r
+        IB_WC_RDMA_WRITE,\r
+        IB_WC_RECV,\r
+        IB_WC_RDMA_READ,\r
+        IB_WC_MW_BIND,\r
+        IB_WC_FETCH_ADD,\r
+        IB_WC_COMPARE_SWAP,\r
+        IB_WC_RECV_RDMA_WRITE,\r
+        IB_WC_UNKNOWN\r
+\r
+}       <strong>ib_wc_type_t</strong>;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo262">[Definitions]<a name="Access20Layer2fib5fwr5ftype5ft">\r
+Access Layer/ib_wr_type_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_wr_type_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Identifies the type of work request posted to a queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _<strong>ib_wr_type_t</strong>\r
+{\r
+        WR_SEND = 1,\r
+        WR_RDMA_WRITE,\r
+        WR_RDMA_READ,\r
+        WR_COMPARE_SWAP,\r
+        WR_FETCH_ADD,\r
+        WR_UNKNOWN\r
+\r
+}       <strong>ib_wr_type_t</strong>;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo709">[Structures]<a name="IBA20Base3a20Constants2fIB5fCLASS5fCAP5fGETSET">\r
+IBA Base: Constants/IB_CLASS_CAP_GETSET</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_CLASS_CAP_GETSET</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       ClassPortInfo CapabilityMask bits.  This bit will be set\r
+       if the class supports Get(Notice) and Set(Notice) MADs (13.4.8.1).\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo839">ib_class_port_info_t</a>, <a href="#robo710">IB_CLASS_CAP_TRAP</a>\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_CLASS_CAP_GETSET</strong>                                     0x0002\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo710">[Structures]<a name="IBA20Base3a20Constants2fIB5fCLASS5fCAP5fTRAP">\r
+IBA Base: Constants/IB_CLASS_CAP_TRAP</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_CLASS_CAP_TRAP</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       ClassPortInfo CapabilityMask bits.  This bit will be set\r
+       if the class supports Trap() MADs (13.4.8.1).\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo839">ib_class_port_info_t</a>, <a href="#robo709">IB_CLASS_CAP_GETSET</a>\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_CLASS_CAP_TRAP</strong>                                       0x0001\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo711">[Structures]<a name="IBA20Base3a20Constants2fIB5fCLASS5fRESP5fTIME5fMASK">\r
+IBA Base: Constants/IB_CLASS_RESP_TIME_MASK</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_CLASS_RESP_TIME_MASK</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Mask bits to extract the reponse time value from the\r
+       resp_time_val field of <a href="#robo839">ib_class_port_info_t</a>.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo839">ib_class_port_info_t</a>\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_CLASS_RESP_TIME_MASK</strong>                         0x1F\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo712">[Definitions]<a name="IBA20Base3a20Constants2fIB5fDEFAULT5fPKEY">\r
+IBA Base: Constants/IB_DEFAULT_PKEY</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_DEFAULT_PKEY</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       P_Key value for the default partition.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_DEFAULT_PKEY</strong>                                         0xFFFF\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo713">[Definitions]<a name="IBA20Base3a20Constants2fIB5fDEFAULT5fSUBNET5fPREFIX">\r
+IBA Base: Constants/IB_DEFAULT_SUBNET_PREFIX</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_DEFAULT_SUBNET_PREFIX</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Default subnet GID prefix.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_DEFAULT_SUBNET_PREFIX</strong>                        (<a href="../complib/cl_byteswap_h.html#robo283">CL_HTON64</a>(CL_CONST64(0xFE80000000000000)))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo714">[Definitions]<a name="IBA20Base3a20Constants2fIB5fINVALID5fPORT5fNUM">\r
+IBA Base: Constants/IB_INVALID_PORT_NUM</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_INVALID_PORT_NUM</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Value used to indicate an invalid port number (14.2.5.10).\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_INVALID_PORT_NUM</strong>                                     0xFF\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo715">[Definitions]<a name="IBA20Base3a20Constants2fIB5fLID5fMCAST5fEND">\r
+IBA Base: Constants/IB_LID_MCAST_END</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_LID_MCAST_END</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Highest valid multicast LID value.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define IB_LID_MCAST_END_HO                                     0xFFFE\r
+#define <strong>IB_LID_MCAST_END</strong>                                        (<a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(IB_LID_MCAST_END_HO))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo716">[Definitions]<a name="IBA20Base3a20Constants2fIB5fLID5fMCAST5fSTART">\r
+IBA Base: Constants/IB_LID_MCAST_START</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_LID_MCAST_START</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Lowest valid multicast LID value.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define IB_LID_MCAST_START_HO                           0xC000\r
+#define <strong>IB_LID_MCAST_START</strong>                                      (<a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(IB_LID_MCAST_START_HO))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo717">[Definitions]<a name="IBA20Base3a20Constants2fIB5fLID5fPERMISSIVE">\r
+IBA Base: Constants/IB_LID_PERMISSIVE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_LID_PERMISSIVE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Permissive LID\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_LID_PERMISSIVE</strong>                                       0xFFFF\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo718">[Definitions]<a name="IBA20Base3a20Constants2fIB5fLID5fUCAST5fEND">\r
+IBA Base: Constants/IB_LID_UCAST_END</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_LID_UCAST_END</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Highest valid unicast LID value.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define IB_LID_UCAST_END_HO                                     0xBFFF\r
+#define <strong>IB_LID_UCAST_END</strong>                                        (<a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(IB_LID_UCAST_END_HO))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo719">[Definitions]<a name="IBA20Base3a20Constants2fIB5fLID5fUCAST5fSTART">\r
+IBA Base: Constants/IB_LID_UCAST_START</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_LID_UCAST_START</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Lowest valid unicast LID value.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define IB_LID_UCAST_START_HO                           0x0001\r
+#define <strong>IB_LID_UCAST_START</strong>                                      (<a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(IB_LID_UCAST_START_HO))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo720">[Definitions]<a name="IBA20Base3a20Constants2fib5flink5fstates5ft">\r
+IBA Base: Constants/ib_link_states_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_link_states_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Defines the link states of a port.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define IB_LINK_NO_CHANGE 0\r
+#define IB_LINK_DOWN      1\r
+#define IB_LINK_INIT      2\r
+#define IB_LINK_ARMED     3\r
+#define IB_LINK_ACTIVE    4\r
+#define IB_LINK_ACT_DEFER 5\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo721">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fCLASS5fPORT5fINFO">\r
+IBA Base: Constants/IB_MAD_ATTR_CLASS_PORT_INFO</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_CLASS_PORT_INFO</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       ClassPortInfo attribute (13.4.8)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_CLASS_PORT_INFO</strong>                     (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0001))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo722">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fDIAG5fCODE">\r
+IBA Base: Constants/IB_MAD_ATTR_DIAG_CODE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_DIAG_CODE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       DiagCode attribute (16.3.3)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_DIAG_CODE</strong>                           (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0024))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo723">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fDIAGNOSTIC5fTIMEOUT">\r
+IBA Base: Constants/IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       DiagnosticTimeout attribute (16.3.3)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT</strong>          (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0020))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo724">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fGUID5fINFO">\r
+IBA Base: Constants/IB_MAD_ATTR_GUID_INFO</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_GUID_INFO</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       GUIDInfo attribute (14.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_GUID_INFO</strong>                           (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0014))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo725">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fINFORM5fINFO">\r
+IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_INFORM_INFO</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       InformInfo attribute (13.4.8)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_INFORM_INFO</strong>                         (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0003))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo726">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fIO5fUNIT5fINFO">\r
+IBA Base: Constants/IB_MAD_ATTR_IO_UNIT_INFO</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_IO_UNIT_INFO</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOUnitInfo attribute (16.3.3)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_IO_UNIT_INFO</strong>                        (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0010))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo727">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fIOC5fPROFILE">\r
+IBA Base: Constants/IB_MAD_ATTR_IOC_PROFILE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_IOC_PROFILE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IOControllerProfile attribute (16.3.3)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_IOC_PROFILE</strong>                         (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0011))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo728">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fLED5fINFO">\r
+IBA Base: Constants/IB_MAD_ATTR_LED_INFO</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_LED_INFO</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       LedInfo attribute (14.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_LED_INFO</strong>                            (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0031))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo729">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fLFT5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_LFT_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_LFT_RECORD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       LinearForwardingRecord attribute (15.2.5.6)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_LFT_RECORD</strong>                  (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0015))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo730">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fLIN5fFWD5fTBL">\r
+IBA Base: Constants/IB_MAD_ATTR_LIN_FWD_TBL</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_LIN_FWD_TBL</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Switch linear forwarding table\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_LIN_FWD_TBL</strong>                         (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0019))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo731">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fLINK5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_LINK_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_LINK_RECORD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       LinkRecord attribute (15.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_LINK_RECORD</strong>                         (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0020))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo732">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fMCAST5fFWD5fTBL">\r
+IBA Base: Constants/IB_MAD_ATTR_MCAST_FWD_TBL</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_MCAST_FWD_TBL</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Switch multicast forwarding table\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_MCAST_FWD_TBL</strong>                       (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x001B))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo733">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fMCMEMBER5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_MCMEMBER_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_MCMEMBER_RECORD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       MCMemberRecord attribute (15.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_MCMEMBER_RECORD</strong>                     (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0038))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo734">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fMULTIPATH5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_MULTIPATH_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_MULTIPATH_RECORD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       MultiPath attribute (15.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_MULTIPATH_RECORD</strong>                    (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x003A))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo735">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fNODE5fDESC">\r
+IBA Base: Constants/IB_MAD_ATTR_NODE_DESC</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_NODE_DESC</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       NodeDescription attribute (14.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_NODE_DESC</strong>                           (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0010))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo736">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fNODE5fINFO">\r
+IBA Base: Constants/IB_MAD_ATTR_NODE_INFO</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_NODE_INFO</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       NodeInfo attribute (14.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_NODE_INFO</strong>                           (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0011))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo737">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fNODE5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_NODE_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_NODE_RECORD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       NodeRecord attribute (15.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_NODE_RECORD</strong>                         (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0011))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo738">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fNOTICE">\r
+IBA Base: Constants/IB_MAD_ATTR_NOTICE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_NOTICE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Notice attribute (13.4.8)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_NOTICE</strong>                                      (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0002))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo739">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fP5fKEY5fTABLE">\r
+IBA Base: Constants/IB_MAD_ATTR_P_KEY_TABLE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_P_KEY_TABLE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       PartitionTable attribute (14.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_P_KEY_TABLE</strong>                         (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0016))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo740">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fPATH5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_PATH_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_PATH_RECORD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       PathRecord attribute (15.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_PATH_RECORD</strong>                         (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0035))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo741">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fPKEYTBL5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_PKEYTBL_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_PKEYTBL_RECORD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       P-KEY table attribute (15.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define IB_MAD_ATTR_PKEY_TBL_RECORD                     (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0033))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo742">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fPORT5fCNTRS">\r
+IBA Base: Constants/IB_MAD_ATTR_PORT_CNTRS</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_PORT_CNTRS</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       SwitchInfo attribute (16.1.2)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_PORT_CNTRS</strong>                          (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0012))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo743">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fPORT5fINFO">\r
+IBA Base: Constants/IB_MAD_ATTR_PORT_INFO</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_PORT_INFO</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       PortInfo attribute (14.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_PORT_INFO</strong>                           (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0015))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo744">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fPORT5fSMPL5fCTRL">\r
+IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_CTRL</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_PORT_SMPL_CTRL</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       NodeDescription attribute (16.1.2)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_PORT_SMPL_CTRL</strong>                      (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0010))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo745">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fPORT5fSMPL5fRSLT">\r
+IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_RSLT</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_PORT_SMPL_RSLT</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       NodeInfo attribute (16.1.2)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_PORT_SMPL_RSLT</strong>                      (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0011))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo746">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fPORTINFO5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_PORTINFO_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_PORTINFO_RECORD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       PortInfoRecord attribute (15.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_PORTINFO_RECORD</strong>                     (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0012))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo747">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fPREPARE5fTO5fTEST">\r
+IBA Base: Constants/IB_MAD_ATTR_PREPARE_TO_TEST</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_PREPARE_TO_TEST</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       PrepareToTest attribute (16.3.3)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_PREPARE_TO_TEST</strong>                     (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0021))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo748">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fRND5fFWD5fTBL">\r
+IBA Base: Constants/IB_MAD_ATTR_RND_FWD_TBL</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_RND_FWD_TBL</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Switch random forwarding table\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_RND_FWD_TBL</strong>                         (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x001A))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo749">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fSERVICE5fENTRIES">\r
+IBA Base: Constants/IB_MAD_ATTR_SERVICE_ENTRIES</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_SERVICE_ENTRIES</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       ServiceEntries attribute (16.3.3)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_SERVICE_ENTRIES</strong>                     (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0012))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo750">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fSERVICE5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_SERVICE_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_SERVICE_RECORD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       ServiceRecord attribute (15.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_SERVICE_RECORD</strong>                      (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0031))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo751">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fSLVL5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_SLVL_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_SLVL_RECORD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       VSLtoL <a href="../complib/cl_map_h.html#robo17">Map</a> Table attribute (15.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_SLVL_RECORD</strong>                         (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0013))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo752">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fSLVL5fTABLE">\r
+IBA Base: Constants/IB_MAD_ATTR_SLVL_TABLE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_SLVL_TABLE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       SL VL Mapping Table attribute (14.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_SLVL_TABLE</strong>                          (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0017))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo753">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fSM5fINFO">\r
+IBA Base: Constants/IB_MAD_ATTR_SM_INFO</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_SM_INFO</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       SMInfo attribute (14.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_SM_INFO</strong>                                     (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0020))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo754">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fSMINFO5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_SMINFO_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_SMINFO_RECORD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       SmInfoRecord attribute (15.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_SMINFO_RECORD</strong>                       (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0018))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo755">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fSVC5fASSOCIATION5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_SVC_ASSOCIATION_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_SVC_ASSOCIATION_RECORD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Service Association attribute (15.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_SVC_ASSOCIATION_RECORD</strong>              (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x003B))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo756">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fSWITCH5fINFO">\r
+IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_SWITCH_INFO</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       SwitchInfo attribute (14.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_SWITCH_INFO</strong>                         (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0012))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo757">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fTEST5fDEVICE5fLOOP">\r
+IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_LOOP</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_TEST_DEVICE_LOOP</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       TestDeviceLoop attribute (16.3.3)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_TEST_DEVICE_LOOP</strong>            (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0023))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo758">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fTEST5fDEVICE5fONCE">\r
+IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_ONCE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_TEST_DEVICE_ONCE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       TestDeviceOnce attribute (16.3.3)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_TEST_DEVICE_ONCE</strong>            (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0022))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo759">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fTRACE5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_TRACE_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       IB_MAD_ATTR_MTRACE_RECORD\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       TraceRecord attribute (15.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_TRACE_RECORD</strong>                        (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0039))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo760">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fVENDOR5fDIAG">\r
+IBA Base: Constants/IB_MAD_ATTR_VENDOR_DIAG</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_VENDOR_DIAG</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       VendorDiag attribute (14.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_VENDOR_DIAG</strong>                         (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0030))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo761">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fVL5fARBITRATION">\r
+IBA Base: Constants/IB_MAD_ATTR_VL_ARBITRATION</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_VL_ARBITRATION</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       VL Arbitration Table attribute (14.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_VL_ARBITRATION</strong>                      (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0018))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo762">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fATTR5fVLARB5fRECORD">\r
+IBA Base: Constants/IB_MAD_ATTR_VLARB_RECORD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_ATTR_VLARB_RECORD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       VL Arbitration Table attribute (15.2.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_ATTR_VLARB_RECORD</strong>                        (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x0036))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo763">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fMETHOD5fGET">\r
+IBA Base: Constants/IB_MAD_METHOD_GET</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_METHOD_GET</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get() Method (13.4.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_METHOD_GET</strong>                                       0x01\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo764">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fMETHOD5fGET5fRESP">\r
+IBA Base: Constants/IB_MAD_METHOD_GET_RESP</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_METHOD_GET_RESP</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       GetResp() Method (13.4.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_METHOD_GET_RESP</strong>                          0x81\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo765">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fMETHOD5fGETTABLE">\r
+IBA Base: Constants/IB_MAD_METHOD_GETTABLE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_METHOD_GETTABLE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       SubnAdmGetTable() Method (15.2.2)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_METHOD_GETTABLE</strong>                          0x12\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo766">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fMETHOD5fGETTABLE5fRESP">\r
+IBA Base: Constants/IB_MAD_METHOD_GETTABLE_RESP</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_METHOD_GETTABLE_RESP</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       SubnAdmGetTableResp() Method (15.2.2)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_METHOD_GETTABLE_RESP</strong>                     0x92\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo767">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fMETHOD5fREPORT">\r
+IBA Base: Constants/IB_MAD_METHOD_REPORT</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_METHOD_REPORT</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Report() Method (13.4.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_METHOD_REPORT</strong>                            0x06\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo768">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fMETHOD5fREPORT5fRESP">\r
+IBA Base: Constants/IB_MAD_METHOD_REPORT_RESP</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_METHOD_REPORT_RESP</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       ReportResp() Method (13.4.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_METHOD_REPORT_RESP</strong>                       0x86\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo769">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fMETHOD5fRESP5fMASK">\r
+IBA Base: Constants/IB_MAD_METHOD_RESP_MASK</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_METHOD_RESP_MASK</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Response mask to extract 'R' bit from the method field. (13.4.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_METHOD_RESP_MASK</strong>                         0x80\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo770">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fMETHOD5fSEND">\r
+IBA Base: Constants/IB_MAD_METHOD_SEND</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_METHOD_SEND</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Send() Method (13.4.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_METHOD_SEND</strong>                                      0x03\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo771">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fMETHOD5fSET">\r
+IBA Base: Constants/IB_MAD_METHOD_SET</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_METHOD_SET</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Set() Method (13.4.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_METHOD_SET</strong>                                       0x02\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo772">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fMETHOD5fTRAP">\r
+IBA Base: Constants/IB_MAD_METHOD_TRAP</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_METHOD_TRAP</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Trap() Method (13.4.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_METHOD_TRAP</strong>                                      0x05\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo773">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fMETHOD5fTRAP5fREPRESS">\r
+IBA Base: Constants/IB_MAD_METHOD_TRAP_REPRESS</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_METHOD_TRAP_REPRESS</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       TrapRepress() Method (13.4.5)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_METHOD_TRAP_REPRESS</strong>                      0x07\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo774">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fSTATUS5fBUSY">\r
+IBA Base: Constants/IB_MAD_STATUS_BUSY</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_STATUS_BUSY</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Temporarily busy, MAD discarded (13.4.7)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_STATUS_BUSY</strong>                                      (<a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(0x0001))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo775">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fSTATUS5fINVALID5fFIELD">\r
+IBA Base: Constants/IB_MAD_STATUS_INVALID_FIELD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_STATUS_INVALID_FIELD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Attribute contains one or more invalid fields (13.4.7)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_STATUS_INVALID_FIELD</strong>                     (<a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(0x001C))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo776">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fSTATUS5fREDIRECT">\r
+IBA Base: Constants/IB_MAD_STATUS_REDIRECT</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_STATUS_REDIRECT</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       QP Redirection required (13.4.7)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_STATUS_REDIRECT</strong>                          (<a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(0x0002))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo777">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fSTATUS5fUNSUP5fCLASS5fVER">\r
+IBA Base: Constants/IB_MAD_STATUS_UNSUP_CLASS_VER</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_STATUS_UNSUP_CLASS_VER</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Unsupported class version (13.4.7)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_STATUS_UNSUP_CLASS_VER</strong>           (<a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(0x0004))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo778">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fSTATUS5fUNSUP5fMETHOD">\r
+IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_STATUS_UNSUP_METHOD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Unsupported method (13.4.7)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_STATUS_UNSUP_METHOD</strong>                      (<a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(0x0008))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo779">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAD5fSTATUS5fUNSUP5fMETHOD5fATTR">\r
+IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD_ATTR</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAD_STATUS_UNSUP_METHOD_ATTR</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Unsupported method/attribute combination (13.4.7)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MAD_STATUS_UNSUP_METHOD_ATTR</strong>         (<a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(0x000C))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo780">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMAX5fMETHOD">\r
+IBA Base: Constants/IB_MAX_METHOD</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MAX_METHOD</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Total number of methods available to a class, not including the R-bit.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define IB_MAX_METHODS                                          128\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo781">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCAST5fBLOCK5fID5fMASK5fHO">\r
+IBA Base: Constants/IB_MCAST_BLOCK_ID_MASK_HO</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCAST_BLOCK_ID_MASK_HO</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Mask (host order) to recover the Multicast block ID.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCAST_BLOCK_ID_MASK_HO</strong>                       0x000001FF\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo782">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCAST5fBLOCK5fSIZE">\r
+IBA Base: Constants/IB_MCAST_BLOCK_SIZE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCAST_BLOCK_SIZE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Number of port mask entries in a multicast forwarding table block.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCAST_BLOCK_SIZE</strong>                                     32\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo783">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCAST5fMASK5fSIZE">\r
+IBA Base: Constants/IB_MCAST_MASK_SIZE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCAST_MASK_SIZE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Number of port mask bits in each entry in the multicast forwarding table.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCAST_MASK_SIZE</strong>                                      16\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo784">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCAST5fMAX5fBLOCK5fID">\r
+IBA Base: Constants/IB_MCAST_MAX_BLOCK_ID</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCAST_MAX_BLOCK_ID</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Maximum number of Multicast port mask blocks\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCAST_MAX_BLOCK_ID</strong>                           511\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo785">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCAST5fPOSITION5fMASK5fHO">\r
+IBA Base: Constants/IB_MCAST_POSITION_MASK_HO</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCAST_POSITION_MASK_HO</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Mask (host order) to recover the multicast block position.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCAST_POSITION_MASK_HO</strong>                               0xF0000000\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo786">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCAST5fPOSITION5fMAX">\r
+IBA Base: Constants/IB_MCAST_POSITION_MAX</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCAST_POSITION_MAX</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Maximum value for the multicast block position.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCAST_POSITION_MAX</strong>                           0xF\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo787">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCAST5fPOSITION5fSHIFT">\r
+IBA Base: Constants/IB_MCAST_POSITION_SHIFT</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCAST_POSITION_SHIFT</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Shift value to normalize the multicast block position value.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCAST_POSITION_SHIFT</strong>                         28\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo788">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCLASS5fBM">\r
+IBA Base: Constants/IB_MCLASS_BM</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCLASS_BM</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Subnet Management Class, Baseboard Manager (13.4.4)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCLASS_BM</strong>                                            0x05\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo789">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCLASS5fCOMM5fMGMT">\r
+IBA Base: Constants/IB_MCLASS_COMM_MGMT</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCLASS_COMM_MGMT</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Subnet Management Class, Communication Management (13.4.4)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCLASS_COMM_MGMT</strong>                                     0x07\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo790">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCLASS5fDEV5fMGMT">\r
+IBA Base: Constants/IB_MCLASS_DEV_MGMT</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCLASS_DEV_MGMT</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Subnet Management Class, Device Management (13.4.4)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCLASS_DEV_MGMT</strong>                                      0x06\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo791">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCLASS5fPERF">\r
+IBA Base: Constants/IB_MCLASS_PERF</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCLASS_PERF</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Subnet Management Class, Performance Manager (13.4.4)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCLASS_PERF</strong>                                          0x04\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo792">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCLASS5fSNMP">\r
+IBA Base: Constants/IB_MCLASS_SNMP</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCLASS_SNMP</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Subnet Management Class, SNMP Tunneling (13.4.4)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCLASS_SNMP</strong>                                          0x08\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo793">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCLASS5fSUBN5fADM">\r
+IBA Base: Constants/IB_MCLASS_SUBN_ADM</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCLASS_SUBN_ADM</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Subnet Management Class, Subnet Administration (13.4.4)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCLASS_SUBN_ADM</strong>                                      0x03\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo794">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCLASS5fSUBN5fDIR">\r
+IBA Base: Constants/IB_MCLASS_SUBN_DIR</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCLASS_SUBN_DIR</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Subnet Management Class, Subnet Manager directed route (13.4.4)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCLASS_SUBN_DIR</strong>                                      0x81\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo795">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCLASS5fSUBN5fLID">\r
+IBA Base: Constants/IB_MCLASS_SUBN_LID</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCLASS_SUBN_LID</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Subnet Management Class, Subnet Manager LID routed (13.4.4)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCLASS_SUBN_LID</strong>                                      0x01\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo796">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCLASS5fVENDOR5fHIGH5fRANGE5fMAX">\r
+IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MAX</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCLASS_VENDOR_HIGH_RANGE_MAX</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Subnet Management Class, Vendor Specific High Range End\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCLASS_VENDOR_HIGH_RANGE_MAX</strong> 0x4f\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo797">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCLASS5fVENDOR5fHIGH5fRANGE5fMIN">\r
+IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MIN</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCLASS_VENDOR_HIGH_RANGE_MIN</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Subnet Management Class, Vendor Specific High Range Start\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCLASS_VENDOR_HIGH_RANGE_MIN</strong> 0x30\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo798">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCLASS5fVENDOR5fLOW5fRANGE5fMAX">\r
+IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MAX</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCLASS_VENDOR_LOW_RANGE_MAX</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Subnet Management Class, Vendor Specific Low Range End\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCLASS_VENDOR_LOW_RANGE_MAX</strong> 0x0f\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo799">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMCLASS5fVENDOR5fLOW5fRANGE5fMIN">\r
+IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MIN</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MCLASS_VENDOR_LOW_RANGE_MIN</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Subnet Management Class, Vendor Specific Low Range Start\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_MCLASS_VENDOR_LOW_RANGE_MIN</strong> 0x09\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo800">[Definitions]<a name="IBA20Base3a20Constants2fIB5fMTU5fTYPE">\r
+IBA Base: Constants/IB_MTU_TYPE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_MTU_TYPE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded path MTU.\r
+               1: 256\r
+               2: 512\r
+               3: 1024\r
+               4: 2048\r
+               5: 4096\r
+               others: reserved\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define IB_MTU_256                                                      1\r
+#define IB_MTU_512                                                      2\r
+#define IB_MTU_1024                                                     3\r
+#define IB_MTU_2048                                                     4\r
+#define IB_MTU_4096                                                     5\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo801">[Definitions]<a name="IBA20Base3a20Constants2fIB5fNODE5fNUM5fPORTS5fMAX">\r
+IBA Base: Constants/IB_NODE_NUM_PORTS_MAX</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_NODE_NUM_PORTS_MAX</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Maximum number of ports in a single node (14.2.5.7).\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_NODE_NUM_PORTS_MAX</strong>                           0xFE\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo802">[Definitions]<a name="IBA20Base3a20Constants2fIB5fNODE5fTYPE5fCA">\r
+IBA Base: Constants/IB_NODE_TYPE_CA</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_NODE_TYPE_CA</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded generic node type used in MAD attributes (13.4.8.2)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_NODE_TYPE_CA</strong>                                         0x01\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo803">[Definitions]<a name="IBA20Base3a20Constants2fIB5fNODE5fTYPE5fROUTER">\r
+IBA Base: Constants/IB_NODE_TYPE_ROUTER</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_NODE_TYPE_ROUTER</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded generic node type used in MAD attributes (13.4.8.2)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_NODE_TYPE_ROUTER</strong>                                     0x03\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo804">[Definitions]<a name="IBA20Base3a20Constants2fIB5fNODE5fTYPE5fSWITCH">\r
+IBA Base: Constants/IB_NODE_TYPE_SWITCH</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_NODE_TYPE_SWITCH</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded generic node type used in MAD attributes (13.4.8.2)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_NODE_TYPE_SWITCH</strong>                                     0x02\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo805">[Definitions]<a name="IBA20Base3a20Constants2fIB5fNOTICE5fNODE5fTYPE5fCA">\r
+IBA Base: Constants/IB_NOTICE_NODE_TYPE_CA</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_NOTICE_NODE_TYPE_CA</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded generic node type used in MAD attributes (13.4.8.2)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_NOTICE_NODE_TYPE_CA</strong>                          (<a href="../complib/cl_byteswap_h.html#robo289">CL_NTOH32</a>(0x000001))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo806">[Definitions]<a name="IBA20Base3a20Constants2fIB5fNOTICE5fNODE5fTYPE5fROUTER">\r
+IBA Base: Constants/IB_NOTICE_NODE_TYPE_ROUTER</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_NOTICE_NODE_TYPE_ROUTER</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded generic node type used in MAD attributes (13.4.8.2)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_NOTICE_NODE_TYPE_ROUTER</strong>                      (<a href="../complib/cl_byteswap_h.html#robo289">CL_NTOH32</a>(0x000003))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo807">[Definitions]<a name="IBA20Base3a20Constants2fIB5fNOTICE5fNODE5fTYPE5fSUBN5fMGMT">\r
+IBA Base: Constants/IB_NOTICE_NODE_TYPE_SUBN_MGMT</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_NOTICE_NODE_TYPE_SUBN_MGMT</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded generic node type used in MAD attributes (13.4.8.2).\r
+       Note that this value is not defined for the NodeType field\r
+       of the NodeInfo attribute (14.2.5.3).\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_NOTICE_NODE_TYPE_SUBN_MGMT</strong>           (<a href="../complib/cl_byteswap_h.html#robo289">CL_NTOH32</a>(0x000004))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo808">[Definitions]<a name="IBA20Base3a20Constants2fIB5fNOTICE5fNODE5fTYPE5fSWITCH">\r
+IBA Base: Constants/IB_NOTICE_NODE_TYPE_SWITCH</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_NOTICE_NODE_TYPE_SWITCH</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded generic node type used in MAD attributes (13.4.8.2)\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_NOTICE_NODE_TYPE_SWITCH</strong>                      (<a href="../complib/cl_byteswap_h.html#robo289">CL_NTOH32</a>(0x000002))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo809">[Definitions]<a name="IBA20Base3a20Constants2fIB5fPATH5fREC5fBASE5fMASK">\r
+IBA Base: Constants/IB_PATH_REC_BASE_MASK</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_PATH_REC_BASE_MASK</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Mask for the base value field for path record MTU, rate\r
+       and packet lifetime.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_PATH_REC_BASE_MASK</strong>                           0x3F\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo810">[Definitions]<a name="IBA20Base3a20Constants2fIB5fPATH5fREC5fSELECTOR5fMASK">\r
+IBA Base: Constants/IB_PATH_REC_SELECTOR_MASK</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_PATH_REC_SELECTOR_MASK</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Mask for the selector field for path record MTU, rate\r
+       and packet lifetime.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_PATH_REC_SELECTOR_MASK</strong>                       0xC0\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo811">[Definitions]<a name="IBA20Base3a20Constants2fIB5fPATH5fSELECTOR5fTYPE">\r
+IBA Base: Constants/IB_PATH_SELECTOR_TYPE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_PATH_SELECTOR_TYPE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Path selector.\r
+               0: greater than rate specified\r
+               1: less than rate specified\r
+               2: exactly the rate specified\r
+               3: largest rate available\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define IB_PATH_SELECTOR_GREATER_THAN           0\r
+#define IB_PATH_SELECTOR_LESS_THAN                      1\r
+#define IB_PATH_SELECTOR_EXACTLY                        2\r
+#define IB_PATH_SELECTOR_LARGEST                        3\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo812">[Definitions]<a name="IBA20Base3a20Constants2fIB5fPKEY5fBASE5fMASK">\r
+IBA Base: Constants/IB_PKEY_BASE_MASK</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_PKEY_BASE_MASK</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Masks for the base P_Key value given a P_Key Entry.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_PKEY_BASE_MASK</strong>                                       (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x7FFF))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo813">[Definitions]<a name="IBA20Base3a20Constants2fIB5fPKEY5fENTRIES5fMAX">\r
+IBA Base: Constants/IB_PKEY_ENTRIES_MAX</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_PKEY_ENTRIES_MAX</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Maximum number of PKEY entries per port (14.2.5.7).\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_PKEY_ENTRIES_MAX</strong> (<a href="#robo814">IB_PKEY_MAX_BLOCKS</a> * IB_PKEY_BLOCK_SIZE)\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo814">[Definitions]<a name="IBA20Base3a20Constants2fIB5fPKEY5fMAX5fBLOCKS">\r
+IBA Base: Constants/IB_PKEY_MAX_BLOCKS</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_PKEY_MAX_BLOCKS</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Maximum number of PKEY blocks (14.2.5.7).\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_PKEY_MAX_BLOCKS</strong>                                      2048\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo815">[Definitions]<a name="IBA20Base3a20Constants2fIB5fPKEY5fTYPE5fMASK">\r
+IBA Base: Constants/IB_PKEY_TYPE_MASK</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_PKEY_TYPE_MASK</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Masks for the P_Key membership type given a P_Key Entry.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_PKEY_TYPE_MASK</strong>                                       (<a href="../complib/cl_byteswap_h.html#robo286">CL_NTOH16</a>(0x8000))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo816">[Definitions]<a name="IBA20Base3a20Constants2fIB5fQP15fWELL5fKNOWN5fQ5fKEY">\r
+IBA Base: Constants/IB_QP1_WELL_KNOWN_Q_KEY</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_QP1_WELL_KNOWN_Q_KEY</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Well-known Q_Key for QP1 privileged mode access (15.4.2).\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_QP1_WELL_KNOWN_Q_KEY</strong>                         <a href="../complib/cl_byteswap_h.html#robo289">CL_NTOH32</a>(0x80010000)\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo817">[Definitions]<a name="IBA20Base3a20Constants2fIB5fSMINFO5fATTR5fMOD5fACKNOWLEDGE">\r
+IBA Base: Constants/IB_SMINFO_ATTR_MOD_ACKNOWLEDGE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_SMINFO_ATTR_MOD_ACKNOWLEDGE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_SMINFO_ATTR_MOD_ACKNOWLEDGE</strong>          (<a href="../complib/cl_byteswap_h.html#robo289">CL_NTOH32</a>(0x000002))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo818">[Definitions]<a name="IBA20Base3a20Constants2fIB5fSMINFO5fATTR5fMOD5fDISABLE">\r
+IBA Base: Constants/IB_SMINFO_ATTR_MOD_DISABLE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_SMINFO_ATTR_MOD_DISABLE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_SMINFO_ATTR_MOD_DISABLE</strong>                      (<a href="../complib/cl_byteswap_h.html#robo289">CL_NTOH32</a>(0x000003))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo819">[Definitions]<a name="IBA20Base3a20Constants2fIB5fSMINFO5fATTR5fMOD5fDISCOVER">\r
+IBA Base: Constants/IB_SMINFO_ATTR_MOD_DISCOVER</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_SMINFO_ATTR_MOD_DISCOVER</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_SMINFO_ATTR_MOD_DISCOVER</strong>                     (<a href="../complib/cl_byteswap_h.html#robo289">CL_NTOH32</a>(0x000005))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo820">[Definitions]<a name="IBA20Base3a20Constants2fIB5fSMINFO5fATTR5fMOD5fHANDOVER">\r
+IBA Base: Constants/IB_SMINFO_ATTR_MOD_HANDOVER</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_SMINFO_ATTR_MOD_HANDOVER</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_SMINFO_ATTR_MOD_HANDOVER</strong>             (<a href="../complib/cl_byteswap_h.html#robo289">CL_NTOH32</a>(0x000001))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo821">[Definitions]<a name="IBA20Base3a20Constants2fIB5fSMINFO5fATTR5fMOD5fSTANDBY">\r
+IBA Base: Constants/IB_SMINFO_ATTR_MOD_STANDBY</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_SMINFO_ATTR_MOD_STANDBY</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_SMINFO_ATTR_MOD_STANDBY</strong>                      (<a href="../complib/cl_byteswap_h.html#robo289">CL_NTOH32</a>(0x000004))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo822">[Definitions]<a name="IBA20Base3a20Constants2fIB5fSMINFO5fSTATE5fDISCOVERING">\r
+IBA Base: Constants/IB_SMINFO_STATE_DISCOVERING</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_SMINFO_STATE_DISCOVERING</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded state value used in the SMInfo attribute.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_SMINFO_STATE_DISCOVERING</strong>                     1\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo823">[Definitions]<a name="IBA20Base3a20Constants2fIB5fSMINFO5fSTATE5fINIT">\r
+IBA Base: Constants/IB_SMINFO_STATE_INIT</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_SMINFO_STATE_INIT</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded state value used in the SMInfo attribute.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_SMINFO_STATE_INIT</strong>                                    4\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo824">[Definitions]<a name="IBA20Base3a20Constants2fIB5fSMINFO5fSTATE5fMASTER">\r
+IBA Base: Constants/IB_SMINFO_STATE_MASTER</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_SMINFO_STATE_MASTER</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded state value used in the SMInfo attribute.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_SMINFO_STATE_MASTER</strong>                          3\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo825">[Definitions]<a name="IBA20Base3a20Constants2fIB5fSMINFO5fSTATE5fNOTACTIVE">\r
+IBA Base: Constants/IB_SMINFO_STATE_NOTACTIVE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_SMINFO_STATE_NOTACTIVE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded state value used in the SMInfo attribute.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_SMINFO_STATE_NOTACTIVE</strong>                       0\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo826">[Definitions]<a name="IBA20Base3a20Constants2fIB5fSMINFO5fSTATE5fSTANDBY">\r
+IBA Base: Constants/IB_SMINFO_STATE_STANDBY</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_SMINFO_STATE_STANDBY</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Encoded state value used in the SMInfo attribute.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_SMINFO_STATE_STANDBY</strong>                         2\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo827">[Definitions]<a name="IBA20Base3a20Constants2fIB5fSMP5fDIRECTION">\r
+IBA Base: Constants/IB_SMP_DIRECTION</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_SMP_DIRECTION</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The Direction bit for directed route SMPs.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_SMP_DIRECTION</strong>                        (<a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(0x8000))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo828">[Definitions]<a name="IBA20Base3a20Constants2fIB5fSMP5fSTATUS5fMASK">\r
+IBA Base: Constants/IB_SMP_STATUS_MASK</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_SMP_STATUS_MASK</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Mask value for extracting status from a directed route SMP.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_SMP_STATUS_MASK</strong>                      (<a href="../complib/cl_byteswap_h.html#robo279">CL_HTON16</a>(0x7FFF))\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo829">[Definitions]<a name="IBA20Base3a20Constants2fIB5fSUBNET5fPATH5fHOPS5fMAX">\r
+IBA Base: Constants/IB_SUBNET_PATH_HOPS_MAX</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>IB_SUBNET_PATH_HOPS_MAX</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Maximum number of directed route switch hops in a subnet (14.2.1.2).\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>IB_SUBNET_PATH_HOPS_MAX</strong>                         64\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo830">[Definitions]<a name="IBA20Base3a20Constants2fJoin20States">\r
+IBA Base: Constants/Join States</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Join States\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Defines the join state flags for multicast group management.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define IB_JOIN_STATE_FULL                      1\r
+#define IB_JOIN_STATE_NON                       2\r
+#define IB_JOIN_STATE_SEND_ONLY         4\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo831">[Definitions]<a name="IBA20Base3a20Constants2fMAD5fBLOCK5fGRH5fSIZE">\r
+IBA Base: Constants/MAD_BLOCK_GRH_SIZE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>MAD_BLOCK_GRH_SIZE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Size of a MAD datagram, including the GRH.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>MAD_BLOCK_GRH_SIZE</strong>                                      296\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo832">[Definitions]<a name="IBA20Base3a20Constants2fMAD5fBLOCK5fSIZE">\r
+IBA Base: Constants/MAD_BLOCK_SIZE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>MAD_BLOCK_SIZE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Size of a non-RMPP MAD datagram.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>MAD_BLOCK_SIZE</strong>                                          256\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo833">[Definitions]<a name="IBA20Base3a20Constants2fMAD5fRMPP5fDATA5fSIZE">\r
+IBA Base: Constants/MAD_RMPP_DATA_SIZE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>MAD_RMPP_DATA_SIZE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Size of an RMPP transaction data section.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>MAD_RMPP_DATA_SIZE</strong>              (<a href="#robo832">MAD_BLOCK_SIZE</a> - <a href="#robo834">MAD_RMPP_HDR_SIZE</a>)\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo834">[Definitions]<a name="IBA20Base3a20Constants2fMAD5fRMPP5fHDR5fSIZE">\r
+IBA Base: Constants/MAD_RMPP_HDR_SIZE</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>MAD_RMPP_HDR_SIZE</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Size of an RMPP header, including the common MAD header.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>#define <strong>MAD_RMPP_HDR_SIZE</strong>                                       36\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo835">[Definitions]<a name="IBA20Base3a20Types2fDM5fSVC5fNAME">\r
+IBA Base: Types/DM_SVC_NAME</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>DM_SVC_NAME</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined Device Management service name (16.3)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#define <strong>DM_SVC_NAME</strong>                             "DeviceManager.IBTA"\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo836">[Functions]<a name="IBA20Base3a20Types2fib5fclass5fis5fvendor5fspecific">\r
+IBA Base: Types/ib_class_is_vendor_specific</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_class_is_vendor_specific</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicitates if the Class Code if a vendor specific class\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>static inline boolean_t\r
+<strong>ib_class_is_vendor_specific</strong>(\r
+        IN              const   uint8_t class_code )\r
+{\r
+  return( <a href="#robo838">ib_class_is_vendor_specific_low</a>(class_code) ||\r
+                         <a href="#robo837">ib_class_is_vendor_specific_high</a>(class_code) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       class_code\r
+               [in] The Management Datagram Class Code\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       TRUE if the class is a Vendor Specific MAD\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>  <a href="#robo838">ib_class_is_vendor_specific_low</a>, <a href="#robo837">ib_class_is_vendor_specific_high</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo837">[Functions]<a name="IBA20Base3a20Types2fib5fclass5fis5fvendor5fspecific5fhigh">\r
+IBA Base: Types/ib_class_is_vendor_specific_high</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_class_is_vendor_specific_high</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicitates if the Class Code if a vendor specific class from \r
+  the high range\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>static inline boolean_t\r
+<strong>ib_class_is_vendor_specific_high</strong>(\r
+        IN              const   uint8_t class_code )\r
+{\r
+        return( (class_code &gt;= <a href="#robo797">IB_MCLASS_VENDOR_HIGH_RANGE_MIN</a>) &amp;&amp;\r
+           (class_code &lt;= <a href="#robo796">IB_MCLASS_VENDOR_HIGH_RANGE_MAX</a>)) ;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       class_code\r
+               [in] The Management Datagram Class Code\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       TRUE if the class is in the High range of Vendor Specific MADs \r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre> <a href="#robo797">IB_MCLASS_VENDOR_HIGH_RANGE_MIN</a>, <a href="#robo796">IB_MCLASS_VENDOR_HIGH_RANGE_MAX</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo838">[Functions]<a name="IBA20Base3a20Types2fib5fclass5fis5fvendor5fspecific5flow">\r
+IBA Base: Types/ib_class_is_vendor_specific_low</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_class_is_vendor_specific_low</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicitates if the Class Code if a vendor specific class from \r
+  the low range\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>static inline boolean_t\r
+<strong>ib_class_is_vendor_specific_low</strong>(\r
+        IN              const   uint8_t class_code )\r
+{\r
+        return( (class_code &gt;= <a href="#robo799">IB_MCLASS_VENDOR_LOW_RANGE_MIN</a>) &amp;&amp;\r
+           (class_code &lt;= <a href="#robo798">IB_MCLASS_VENDOR_LOW_RANGE_MAX</a>)) ;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       class_code\r
+               [in] The Management Datagram Class Code\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       TRUE if the class is in the Low range of Vendor Specific MADs \r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre> <a href="#robo799">IB_MCLASS_VENDOR_LOW_RANGE_MIN</a>, <a href="#robo798">IB_MCLASS_VENDOR_LOW_RANGE_MAX</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo839">[Structures]<a name="IBA20Base3a20Types2fib5fclass5fport5finfo5ft">\r
+IBA Base: Types/ib_class_port_info_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_class_port_info_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined ClassPortInfo attribute (13.4.8.1)\r
+       route between two end-points on a subnet.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_class_port_info\r
+{\r
+        uint8_t                                 base_ver;\r
+        uint8_t                                 class_ver;\r
+        <a href="#robo893">ib_net16_t</a>                              cap_mask;\r
+        <a href="#robo894">ib_net32_t</a>                              resp_time_val;\r
+        <a href="#robo856">ib_gid_t</a>                                redir_gid;\r
+        <a href="#robo894">ib_net32_t</a>                              redir_tc_sl_fl;\r
+        <a href="#robo893">ib_net16_t</a>                              redir_lid;\r
+        <a href="#robo893">ib_net16_t</a>                              redir_pkey;\r
+        <a href="#robo894">ib_net32_t</a>                              redir_qp;\r
+        <a href="#robo894">ib_net32_t</a>                              redir_qkey;\r
+        <a href="#robo856">ib_gid_t</a>                                trap_gid;\r
+        <a href="#robo894">ib_net32_t</a>                              trap_tc_sl_fl;\r
+        <a href="#robo893">ib_net16_t</a>                              trap_lid;\r
+        <a href="#robo893">ib_net16_t</a>                              trap_pkey;\r
+        <a href="#robo894">ib_net32_t</a>                              trap_hop_qp;\r
+        <a href="#robo894">ib_net32_t</a>                              trap_qkey;\r
+\r
+}       PACK_SUFFIX <strong>ib_class_port_info_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       base_ver\r
+               Maximum supported MAD Base Version.\r
+\r
+       class_ver\r
+               Maximum supported management class version.\r
+\r
+       cap_mask\r
+               Supported capabilities of this management class.\r
+\r
+       resp_time_value\r
+               Maximum expected response time.\r
+\r
+       redr_gid\r
+               GID to use for redirection, or zero\r
+\r
+       recdir_tc_sl_fl\r
+               Traffic class, service level and flow label the requester\r
+               should use if the service is redirected.\r
+\r
+       redir_lid\r
+               LID used for redirection, or zero\r
+\r
+       redir_pkey\r
+               P_Key used for redirection\r
+\r
+       redir_qp\r
+               QP number used for redirection\r
+\r
+       redir_qkey\r
+               Q_Key associated with the redirected QP.  This shall be the\r
+               well known Q_Key value.\r
+\r
+       trap_gid\r
+               GID value used for trap messages from this service.\r
+\r
+       trap_tc_sl_fl\r
+               Traffic class, service level and flow label used for\r
+               trap messages originated by this service.\r
+\r
+       trap_lid\r
+               LID used for trap messages, or zero\r
+\r
+       trap_pkey\r
+               P_Key used for trap messages\r
+\r
+       trap_hop_qp\r
+               Hop limit (upper 8 bits) and QP number used for trap messages\r
+\r
+       trap_qkey\r
+               Q_Key associated with the trap messages QP.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo709">IB_CLASS_CAP_GETSET</a>, <a href="#robo710">IB_CLASS_CAP_TRAP</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo840">[Structures]<a name="IBA20Base3a20Types2fib5fdm5fmad5ft">\r
+IBA Base: Types/ib_dm_mad_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_dm_mad_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined Device Management MAD (16.3.1)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_dm_mad\r
+{\r
+        <a href="#robo882">ib_mad_t</a>                hdr;\r
+        uint8_t                 resv[40];\r
+\r
+#define IB_DM_DATA_SIZE                 192\r
+        uint8_t                 data[IB_DM_DATA_SIZE];\r
+\r
+}       PACK_SUFFIX <strong>ib_dm_mad_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       hdr\r
+               Common MAD header.\r
+\r
+       resv\r
+               Reserved.\r
+\r
+       data\r
+               Device Management payload.  The structure and content of this field\r
+               depend upon the method, attr_id, and attr_mod fields in the header.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre> <a href="#robo882">ib_mad_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo841">[Structures]<a name="IBA20Base3a20Types2fib5ffield325ft">\r
+IBA Base: Types/ib_field32_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_field32_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Represents a 32-bit field, and allows access as a 32-bit network byte\r
+       ordered or a 4-byte array.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef union _<strong>ib_field32_t</strong>\r
+{\r
+        net32_t         val;\r
+        uint8_t         bytes[4];\r
+\r
+}       PACK_SUFFIX <strong>ib_field32_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       val\r
+               Full field value.\r
+\r
+       bytes\r
+               Byte array representing the field.  The byte array provides identical\r
+               access independently from CPU byte-ordering.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo842">[Functions]<a name="IBA20Base3a20Types2fib5fget5fasync5fevent5fstr">\r
+IBA Base: Types/ib_get_async_event_str</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_async_event_str</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a string for the specified asynchronous event.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT const char* AL_API\r
+<strong>ib_get_async_event_str</strong>(\r
+        IN                              <a href="#robo1155">ib_async_event_t</a>                        event );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       event\r
+               [in] event value\r
+\r
+ RETURN VALUES\r
+       Pointer to the asynchronous event description string.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo843">[Functions]<a name="IBA20Base3a20Types2fib5fget5ferr5fstr">\r
+IBA Base: Types/ib_get_err_str</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_err_str</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a string for the specified status value.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT const char* AL_API\r
+<strong>ib_get_err_str</strong>(\r
+        IN                              <a href="#robo49">ib_api_status_t</a>                         status );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       status\r
+               [in] status value\r
+\r
+ RETURN VALUES\r
+       Pointer to the status description string.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo844">[Functions]<a name="IBA20Base3a20Types2fib5fget5fnode5ftype5fstr">\r
+IBA Base: Types/ib_get_node_type_str</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_node_type_str</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a string for the specified node type.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE const char* AL_API\r
+<strong>ib_get_node_type_str</strong>(\r
+        IN                              uint8_t                                         node_type )\r
+{\r
+        if( node_type &gt;= <a href="#robo803">IB_NODE_TYPE_ROUTER</a> )\r
+                node_type = 0;\r
+        return( __ib_node_type_str[node_type] );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       node_type\r
+               [in] Encoded node type as returned in the NodeInfo attribute.\r
+ RETURN VALUES\r
+       Pointer to the node type string.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre> <a href="#robo898">ib_node_info_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo845">[Functions]<a name="IBA20Base3a20Types2fib5fget5fport5fstate5ffrom5fstr">\r
+IBA Base: Types/ib_get_port_state_from_str</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_port_state_from_str</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a string for the specified port state.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE const uint8_t AL_API\r
+<strong>ib_get_port_state_from_str</strong>(\r
+        IN                              char*                                           p_port_state_str )\r
+{\r
+        if( !strncmp(p_port_state_str,"No State Change (NOP)",12) )\r
+                return(0);\r
+        else if( !strncmp(p_port_state_str, "DOWN",4) )\r
+                return(1);\r
+        else if( !strncmp(p_port_state_str, "INIT", 4) )\r
+                return(2);\r
+        else if( !strncmp(p_port_state_str,"ARMED" , 5) )\r
+                return(3);\r
+        else if( !strncmp(p_port_state_str, "ACTIVE", 6) )\r
+                return(4);\r
+        else if( !strncmp(p_port_state_str, "ACTDEFER", 8) )\r
+                return(5);\r
+        return(6);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_port_state_str\r
+               [in] A string matching one returned by <a href="#robo846">ib_get_port_state_str</a>\r
+\r
+ RETURN VALUES\r
+       The appropriate code.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo949">ib_port_info_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo846">[Functions]<a name="IBA20Base3a20Types2fib5fget5fport5fstate5fstr">\r
+IBA Base: Types/ib_get_port_state_str</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_port_state_str</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a string for the specified port state.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE const char* AL_API\r
+<strong>ib_get_port_state_str</strong>(\r
+        IN                              uint8_t                                         port_state )\r
+{\r
+        if( port_state &gt; IB_LINK_ACTIVE )\r
+                port_state = IB_LINK_ACTIVE + 1;\r
+        return( __ib_port_state_str[port_state] );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       port_state\r
+               [in] Encoded port state as returned in the PortInfo attribute.\r
+ RETURN VALUES\r
+       Pointer to the port state string.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre> <a href="#robo949">ib_port_info_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo847">[Functions]<a name="IBA20Base3a20Types2fib5fget5fwc5fstatus5fstr">\r
+IBA Base: Types/ib_get_wc_status_str</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_wc_status_str</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a string for the specified work completion status.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT const char* AL_API\r
+<strong>ib_get_wc_status_str</strong>(\r
+        IN                              <a href="#robo259">ib_wc_status_t</a>                          wc_status );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       wc_status\r
+               [in] work completion status value\r
+\r
+ RETURN VALUES\r
+       Pointer to the work completion status description string.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo848">[Functions]<a name="IBA20Base3a20Types2fib5fget5fwc5ftype5fstr">\r
+IBA Base: Types/ib_get_wc_type_str</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_wc_type_str</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a string for the specified work completion type.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT const char* AL_API\r
+<strong>ib_get_wc_type_str</strong>(\r
+        IN                              <a href="#robo261">ib_wc_type_t</a>                            wc_type );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       wc_type\r
+               [in] work completion type value\r
+\r
+ RETURN VALUES\r
+       Pointer to the work completion type description string.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo849">[Functions]<a name="IBA20Base3a20Types2fib5fget5fwr5ftype5fstr">\r
+IBA Base: Types/ib_get_wr_type_str</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_get_wr_type_str</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns a string for the specified work request type\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_EXPORT const char* AL_API\r
+<strong>ib_get_wr_type_str</strong>(\r
+        IN                              uint8_t                                         wr_type );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       wr_type\r
+               [in] Encoded work request type as defined in the\r
+ RETURN VALUES\r
+       Pointer to the work request type string.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre> <a href="#robo262">ib_wr_type_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo850">[Functions]<a name="IBA20Base3a20Types2fib5fgid5fget5fguid">\r
+IBA Base: Types/ib_gid_get_guid</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_gid_get_guid</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Gets the guid from a GID.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE <a href="#robo895">ib_net64_t</a> AL_API\r
+<strong>ib_gid_get_guid</strong>(\r
+        IN              const   <a href="#robo856">ib_gid_t</a>* const                         p_gid )\r
+{\r
+        return( p_gid-&gt;unicast.interface_id );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_gid\r
+               [in] Pointer to the GID object.\r
+\r
+ RETURN VALUES\r
+       64-bit GUID value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo856">ib_gid_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo851">[Functions]<a name="IBA20Base3a20Types2fib5fgid5fget5fsubnet5fprefix">\r
+IBA Base: Types/ib_gid_get_subnet_prefix</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_gid_get_subnet_prefix</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Gets the subnet prefix from a GID.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE <a href="#robo895">ib_net64_t</a> AL_API\r
+<strong>ib_gid_get_subnet_prefix</strong>(\r
+        IN              const   <a href="#robo856">ib_gid_t</a>* const                         p_gid )\r
+{\r
+        return( p_gid-&gt;unicast.prefix );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_gid\r
+               [in] Pointer to the GID object.\r
+\r
+ RETURN VALUES\r
+       64-bit subnet prefix value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo856">ib_gid_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo852">[Functions]<a name="IBA20Base3a20Types2fib5fgid5fis5flink5flocal">\r
+IBA Base: Types/ib_gid_is_link_local</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_gid_is_link_local</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns TRUE if the unicast GID scoping indicates link local,\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>static inline boolean_t\r
+<strong>ib_gid_is_link_local</strong>(\r
+        IN              const   <a href="#robo856">ib_gid_t</a>* const                         p_gid )\r
+{\r
+        return( <a href="#robo851">ib_gid_get_subnet_prefix</a>( p_gid ) == <a href="#robo713">IB_DEFAULT_SUBNET_PREFIX</a> );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_gid\r
+               [in] Pointer to the GID object.\r
+\r
+ RETURN VALUES\r
+       Returns TRUE if the unicast GID scoping indicates link local,\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo856">ib_gid_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo853">[Functions]<a name="IBA20Base3a20Types2fib5fgid5fis5fsite5flocal">\r
+IBA Base: Types/ib_gid_is_site_local</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_gid_is_site_local</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns TRUE if the unicast GID scoping indicates site local,\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>static inline boolean_t\r
+<strong>ib_gid_is_site_local</strong>(\r
+        IN              const   <a href="#robo856">ib_gid_t</a>* const                         p_gid )\r
+{\r
+        return( ( <a href="#robo851">ib_gid_get_subnet_prefix</a>( p_gid ) &amp;\r
+                <a href="../complib/cl_byteswap_h.html#robo283">CL_HTON64</a>( CL_CONST64(0xFFFFFFFFFFFF0000) ) ) ==\r
+                <a href="../complib/cl_byteswap_h.html#robo283">CL_HTON64</a>( CL_CONST64(0xFEC0000000000000) ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_gid\r
+               [in] Pointer to the GID object.\r
+\r
+ RETURN VALUES\r
+       Returns TRUE if the unicast GID scoping indicates link local,\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo856">ib_gid_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo854">[Definitions]<a name="IBA20Base3a20Types2fib5fgid5fprefix5ft">\r
+IBA Base: Types/ib_gid_prefix_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_gid_prefix_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"></span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>typedef <a href="#robo895">ib_net64_t</a>              <strong>ib_gid_prefix_t</strong>;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo855">[Functions]<a name="IBA20Base3a20Types2fib5fgid5fset5fdefault">\r
+IBA Base: Types/ib_gid_set_default</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_gid_set_default</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets a GID to the default value.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_gid_set_default</strong>(\r
+        IN                              <a href="#robo856">ib_gid_t</a>* const                         p_gid,\r
+        IN              const   <a href="#robo895">ib_net64_t</a>                                      interface_id )\r
+{\r
+        p_gid-&gt;unicast.prefix = <a href="#robo713">IB_DEFAULT_SUBNET_PREFIX</a>;\r
+        p_gid-&gt;unicast.interface_id = interface_id;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_gid\r
+               [in] Pointer to the GID object.\r
+\r
+       interface_id\r
+               [in] Manufacturer assigned EUI64 value of a port.\r
+\r
+ RETURN VALUES\r
+       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo856">ib_gid_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo856">[Definitions]<a name="IBA20Base3a20Types2fib5fgid5ft">\r
+IBA Base: Types/ib_gid_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_gid_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"></span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef union _ib_gid\r
+{\r
+        uint8_t                                 raw[16];\r
+        struct _ib_gid_unicast\r
+        {\r
+                <a href="#robo854">ib_gid_prefix_t</a>         prefix;\r
+                <a href="#robo895">ib_net64_t</a>                      interface_id;\r
+\r
+        } PACK_SUFFIX unicast;\r
+\r
+        struct _ib_gid_multicast\r
+        {\r
+                uint8_t                         header[2];\r
+                uint8_t                         raw_group_id[14];\r
+\r
+        } PACK_SUFFIX multicast;\r
+\r
+}       PACK_SUFFIX <strong>ib_gid_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       raw\r
+               GID represented as an unformated byte array.\r
+\r
+       unicast\r
+               Typical unicast representation with subnet prefix and\r
+               port GUID.\r
+\r
+       multicast\r
+               Representation for multicast use.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo857">[Functions]<a name="IBA20Base3a20Types2fib5fgrh5fget5fver5fclass5fflow">\r
+IBA Base: Types/ib_grh_get_ver_class_flow</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_grh_get_ver_class_flow</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get encoded version, traffic class and flow label in grh\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_grh_get_ver_class_flow</strong>(\r
+        IN              const   <a href="#robo894">ib_net32_t</a>                                      ver_class_flow,\r
+                OUT                     uint8_t* const                          p_ver OPTIONAL,\r
+                OUT                     uint8_t* const                          p_tclass OPTIONAL,\r
+                OUT                     net32_t* const                          p_flow_lbl OPTIONAL )\r
+{\r
+        <a href="#robo894">ib_net32_t</a> tmp_ver_class_flow;\r
+\r
+        tmp_ver_class_flow = <a href="../complib/cl_byteswap_h.html#robo288">cl_ntoh32</a>( ver_class_flow );\r
+\r
+        if (p_ver)\r
+                *p_ver = (uint8_t)(tmp_ver_class_flow &gt;&gt; 28);\r
+\r
+        if (p_tclass)\r
+                *p_tclass = (uint8_t)(tmp_ver_class_flow &gt;&gt; 20);\r
+\r
+        if (p_flow_lbl)\r
+                *p_flow_lbl = (ver_class_flow &amp; <a href="../complib/cl_byteswap_h.html#robo282">CL_HTON32</a>( 0x000FFFFF ));\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       ver_class_flow\r
+               [in] the version, traffic class and flow label info.\r
+\r
+ RETURN VALUES\r
+       p_ver\r
+               [out] pointer to the version info.\r
+\r
+       p_tclass\r
+               [out] pointer to the traffic class info.\r
+\r
+       p_flow_lbl\r
+               [out] pointer to the flow label info\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo859">ib_grh_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo858">[Functions]<a name="IBA20Base3a20Types2fib5fgrh5fset5fver5fclass5fflow">\r
+IBA Base: Types/ib_grh_set_ver_class_flow</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_grh_set_ver_class_flow</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Set encoded version, traffic class and flow label in grh\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE <a href="#robo894">ib_net32_t</a> AL_API\r
+<strong>ib_grh_set_ver_class_flow</strong>(\r
+        IN              const   uint8_t                                         ver,\r
+        IN              const   uint8_t                                         tclass,\r
+        IN              const   net32_t                                         flow_lbl )\r
+{\r
+        <a href="#robo894">ib_net32_t</a>              ver_class_flow;\r
+\r
+        ver_class_flow = <a href="../complib/cl_byteswap_h.html#robo281">cl_hton32</a>( (ver &lt;&lt; 28) | (tclass &lt;&lt; 20) );\r
+        ver_class_flow |= (flow_lbl &amp; <a href="../complib/cl_byteswap_h.html#robo282">CL_HTON32</a>( 0x000FFFFF ));\r
+        return (ver_class_flow);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       ver\r
+               [in] the version info.\r
+\r
+       tclass\r
+               [in] the traffic class info.\r
+\r
+       flow_lbl\r
+               [in] the flow label info\r
+\r
+ RETURN VALUES\r
+       ver_class_flow\r
+               [out] the version, traffic class and flow label info.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo859">ib_grh_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo859">[Structures]<a name="IBA20Base3a20Types2fib5fgrh5ft">\r
+IBA Base: Types/ib_grh_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_grh_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Global route header information received with unreliable datagram messages\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_grh\r
+{\r
+        <a href="#robo894">ib_net32_t</a>                              ver_class_flow;\r
+        <a href="#robo893">ib_net16_t</a>                              resv1;\r
+        uint8_t                                 resv2;\r
+        uint8_t                                 hop_limit;\r
+        <a href="#robo856">ib_gid_t</a>                                src_gid;\r
+        <a href="#robo856">ib_gid_t</a>                                dest_gid;\r
+\r
+}       PACK_SUFFIX <strong>ib_grh_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo860">[Structures]<a name="IBA20Base3a20Types2fib5fguid5finfo5ft">\r
+IBA Base: Types/ib_guid_info_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_guid_info_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined GuidInfo. (14.2.5.5)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#define GUID_TABLE_MAX_ENTRIES          8\r
+\r
+#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_guid_info\r
+{\r
+        <a href="#robo895">ib_net64_t</a>                      guid[GUID_TABLE_MAX_ENTRIES];\r
+\r
+}       PACK_SUFFIX <strong>ib_guid_info_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo861">[Functions]<a name="IBA20Base3a20Types2fib5finform5fget5fdev5fid">\r
+IBA Base: Types/ib_inform_get_dev_id</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_inform_get_dev_id</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the device ID from a vendor specific inform trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint16_t AL_API\r
+<strong>ib_inform_get_dev_id</strong>(\r
+        IN              const   ib_inform_info_t* const         p_inform_info )\r
+{\r
+        return <a href="#robo865">ib_inform_get_trap_num</a>( p_inform_info );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_inform_info\r
+               [in] Pointer to the inform info structure whose\r
+               device ID to return.\r
+\r
+ RETURN VALUES\r
+       Returns the vendor ID of the inform info, in host byte order.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_inform_info_t, <a href="#robo868">ib_inform_set_dev_id</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo862">[Functions]<a name="IBA20Base3a20Types2fib5finform5fget5fprod5ftype">\r
+IBA Base: Types/ib_inform_get_prod_type</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_inform_get_prod_type</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the producer type from an inform info structure.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint32_t AL_API\r
+<strong>ib_inform_get_prod_type</strong>(\r
+        IN              const   ib_inform_info_t* const         p_inform_info )\r
+{\r
+        return (<a href="../complib/cl_byteswap_h.html#robo288">cl_ntoh32</a>( p_inform_info-&gt;combo3 ) &gt;&gt; 8);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_inform_info\r
+               [in] Pointer to the inform info structure whose\r
+               prducer type to return.\r
+\r
+ RETURN VALUES\r
+       Returns the producer type of the infrom info, in host byte order.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_inform_info_t, <a href="#robo869">ib_inform_set_prod_type</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo863">[Functions]<a name="IBA20Base3a20Types2fib5finform5fget5fqpn">\r
+IBA Base: Types/ib_inform_get_qpn</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_inform_get_qpn</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the QPN from an inform info structure.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE net32_t AL_API\r
+<strong>ib_inform_get_qpn</strong>(\r
+        IN              const   ib_inform_info_t* const         p_inform_info )\r
+{\r
+        return (p_inform_info-&gt;combo2 &amp; <a href="../complib/cl_byteswap_h.html#robo289">CL_NTOH32</a>( 0x00FFFFFF ));\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_inform_info\r
+               [in] Pointer to the inform info structure whose\r
+               QPN to return.\r
+\r
+ RETURN VALUES\r
+       Returns the QPN of the infrom info.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_inform_info_t, <a href="#robo870">ib_inform_set_qpn</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo864">[Functions]<a name="IBA20Base3a20Types2fib5finform5fget5fresp5ftime5fval">\r
+IBA Base: Types/ib_inform_get_resp_time_val</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_inform_get_resp_time_val</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the response time value from an inform info structure.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_inform_get_resp_time_val</strong>(\r
+        IN              const   ib_inform_info_t* const         p_inform_info )\r
+{\r
+        return (uint8_t)(<a href="../complib/cl_byteswap_h.html#robo288">cl_ntoh32</a>( p_inform_info-&gt;combo2 ) &gt;&gt; 27);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_inform_info\r
+               [in] Pointer to the inform info structure whose\r
+               response time value to return.\r
+\r
+ RETURN VALUES\r
+       Returns the response time value of the infrom info.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_inform_info_t, <a href="#robo871">ib_inform_set_resp_time_val</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo865">[Functions]<a name="IBA20Base3a20Types2fib5finform5fget5ftrap5fnum">\r
+IBA Base: Types/ib_inform_get_trap_num</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_inform_get_trap_num</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the trap number from an inform info structure.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint16_t AL_API\r
+<strong>ib_inform_get_trap_num</strong>(\r
+        IN              const   ib_inform_info_t* const         p_inform_info )\r
+{\r
+        return <a href="../complib/cl_byteswap_h.html#robo287">cl_ntoh16</a>( p_inform_info-&gt;combo1 );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_inform_info\r
+               [in] Pointer to the inform info structure whose\r
+               trap number to return.\r
+\r
+ RETURN VALUES\r
+       Returns the trap number of the infrom info, in host byte order.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_inform_info_t, <a href="#robo872">ib_inform_set_trap_num</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo866">[Functions]<a name="IBA20Base3a20Types2fib5finform5fget5fvend5fid">\r
+IBA Base: Types/ib_inform_get_vend_id</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_inform_get_vend_id</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the vendor ID from an inform info structure.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint32_t AL_API\r
+<strong>ib_inform_get_vend_id</strong>(\r
+        IN              const   ib_inform_info_t* const         p_inform_info )\r
+{\r
+        return <a href="#robo862">ib_inform_get_prod_type</a>( p_inform_info );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_inform_info\r
+               [in] Pointer to the inform info structure whose\r
+               vendor ID to return.\r
+\r
+ RETURN VALUES\r
+       Returns the vendor ID of the infrom info, in host byte order.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_inform_info_t, <a href="#robo873">ib_inform_set_vend_id</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo867">[Structures]<a name="IBA20Base3a20Types2fib5finform5finfo5frecord5ft">\r
+IBA Base: Types/ib_inform_info_record_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_inform_info_record_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined InformInfo Record. (15.2.5.12)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_inform_info_record\r
+{\r
+        <a href="#robo856">ib_gid_t</a>                                subscriber_gid;\r
+        net16_t                                 subscriber_enum;\r
+        uint16_t                                reserved[3];\r
+        ib_inform_info_t                inform_info;\r
+\r
+}       PACK_SUFFIX <strong>ib_inform_info_record_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo868">[Functions]<a name="IBA20Base3a20Types2fib5finform5fset5fdev5fid">\r
+IBA Base: Types/ib_inform_set_dev_id</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_inform_set_dev_id</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the producer type of a vendor specific inform trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_inform_set_dev_id</strong>(\r
+        IN      OUT                     ib_inform_info_t* const         p_inform_info,\r
+        IN              const   uint16_t                                        dev_id )\r
+{\r
+        <a href="#robo872">ib_inform_set_trap_num</a>( p_inform_info, dev_id );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_inform_info\r
+               [in/out] Pointer to the inform info structure\r
+               whose device ID to set.\r
+\r
+       dev_id\r
+               [in] Device ID of inform trap.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_inform_info_t, <a href="#robo861">ib_inform_get_dev_id</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo869">[Functions]<a name="IBA20Base3a20Types2fib5finform5fset5fprod5ftype">\r
+IBA Base: Types/ib_inform_set_prod_type</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_inform_set_prod_type</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the producer type of an inform info structure.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_inform_set_prod_type</strong>(\r
+        IN      OUT                     ib_inform_info_t* const         p_inform_info,\r
+        IN              const   uint32_t                                        prod_type )\r
+{\r
+        p_inform_info-&gt;combo3 = <a href="../complib/cl_byteswap_h.html#robo281">cl_hton32</a>( prod_type &lt;&lt; 8 );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_inform_info\r
+               [in/out] Pointer to the inform info structure\r
+               whose producer type to set.\r
+\r
+       prod_type\r
+               [in] Producer type of inform trap.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_inform_info_t, <a href="#robo862">ib_inform_get_prod_type</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo870">[Functions]<a name="IBA20Base3a20Types2fib5finform5fset5fqpn">\r
+IBA Base: Types/ib_inform_set_qpn</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_inform_set_qpn</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the QPN of an inform info structure.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_inform_set_qpn</strong>(\r
+        IN      OUT                     ib_inform_info_t* const         p_inform_info,\r
+        IN              const   net32_t                                         qpn )\r
+{\r
+        p_inform_info-&gt;combo2 &amp;= <a href="../complib/cl_byteswap_h.html#robo289">CL_NTOH32</a>( 0xFF000000 );\r
+        p_inform_info-&gt;combo2 |= (qpn &amp; <a href="../complib/cl_byteswap_h.html#robo289">CL_NTOH32</a>( 0x00FFFFFF ));\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_inform_info\r
+               [in/out] Pointer to the inform info structure\r
+               whose QPN to set.\r
+\r
+       qpn\r
+               [in] QPN of the inform info.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_inform_info_t, <a href="#robo863">ib_inform_get_qpn</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo871">[Functions]<a name="IBA20Base3a20Types2fib5finform5fset5fresp5ftime5fval">\r
+IBA Base: Types/ib_inform_set_resp_time_val</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_inform_set_resp_time_val</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the response time value of an inform info structure.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_inform_set_resp_time_val</strong>(\r
+        IN      OUT                     ib_inform_info_t* const         p_inform_info,\r
+        IN              const   uint8_t                                         resp_time_val )\r
+{\r
+        uint32_t        val;\r
+\r
+        val = <a href="../complib/cl_byteswap_h.html#robo288">cl_ntoh32</a>( p_inform_info-&gt;combo2 );\r
+        val &amp;= 0x07FFFFFF;\r
+        val |= (resp_time_val &lt;&lt; 27);\r
+        p_inform_info-&gt;combo2 = <a href="../complib/cl_byteswap_h.html#robo281">cl_hton32</a>( val );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_inform_info\r
+               [in/out] Pointer to the inform info structure\r
+               whose response time value to set.\r
+\r
+       resp_time_val\r
+               [in] Response time value of the inform info.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_inform_info_t, <a href="#robo864">ib_inform_get_resp_time_val</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo872">[Functions]<a name="IBA20Base3a20Types2fib5finform5fset5ftrap5fnum">\r
+IBA Base: Types/ib_inform_set_trap_num</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_inform_set_trap_num</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the trap number of an inform info structure.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_inform_set_trap_num</strong>(\r
+        IN      OUT                     ib_inform_info_t* const         p_inform_info,\r
+        IN              const   uint16_t                                        trap_num )\r
+{\r
+        p_inform_info-&gt;combo1 = <a href="../complib/cl_byteswap_h.html#robo280">cl_hton16</a>( trap_num );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_inform_info\r
+               [in/out] Pointer to the inform info structure\r
+               whose trap number to set.\r
+\r
+       trap_num\r
+               [in] Trap number to set.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_inform_info_t, <a href="#robo865">ib_inform_get_trap_num</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo873">[Functions]<a name="IBA20Base3a20Types2fib5finform5fset5fvend5fid">\r
+IBA Base: Types/ib_inform_set_vend_id</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_inform_set_vend_id</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the vendor ID of an inform info structure.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_inform_set_vend_id</strong>(\r
+        IN      OUT                     ib_inform_info_t* const         p_inform_info,\r
+        IN              const   uint32_t                                        vend_id )\r
+{\r
+        <a href="#robo869">ib_inform_set_prod_type</a>( p_inform_info, vend_id );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_inform_info\r
+               [in/out] Pointer to the inform info structure\r
+               whose vendor ID to set.\r
+\r
+       vend_id\r
+               [in] Vendor ID of inform trap.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_inform_info_t, <a href="#robo866">ib_inform_get_vend_id</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo874">[Structures]<a name="IBA20Base3a20Types2fib5fioc5fprofile5ft">\r
+IBA Base: Types/ib_ioc_profile_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_ioc_profile_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined IO Controller profile structure (16.3.3.4)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef __declspec(align(8)) struct _ib_ioc_profile\r
+{\r
+        <a href="#robo895">ib_net64_t</a>                              ioc_guid;\r
+\r
+        <a href="#robo894">ib_net32_t</a>                              vend_id;\r
+\r
+        <a href="#robo894">ib_net32_t</a>                              dev_id;\r
+        <a href="#robo893">ib_net16_t</a>                              dev_ver;\r
+        <a href="#robo893">ib_net16_t</a>                              resv2;\r
+\r
+        <a href="#robo894">ib_net32_t</a>                              subsys_vend_id;\r
+        <a href="#robo894">ib_net32_t</a>                              subsys_id;\r
+\r
+        <a href="#robo893">ib_net16_t</a>                              io_class;\r
+        <a href="#robo893">ib_net16_t</a>                              io_subclass;\r
+        <a href="#robo893">ib_net16_t</a>                              protocol;\r
+        <a href="#robo893">ib_net16_t</a>                              protocol_ver;\r
+\r
+        <a href="#robo894">ib_net32_t</a>                              resv3;\r
+        <a href="#robo893">ib_net16_t</a>                              send_msg_depth;\r
+        uint8_t                                 resv4;\r
+        uint8_t                                 rdma_read_depth;\r
+        <a href="#robo894">ib_net32_t</a>                              send_msg_size;\r
+        <a href="#robo894">ib_net32_t</a>                              rdma_size;\r
+\r
+        uint8_t                                 ctrl_ops_cap;\r
+#define CTRL_OPS_CAP_ST         0x01\r
+#define CTRL_OPS_CAP_SF         0x02\r
+#define CTRL_OPS_CAP_RT         0x04\r
+#define CTRL_OPS_CAP_RF         0x08\r
+#define CTRL_OPS_CAP_WT         0x10\r
+#define CTRL_OPS_CAP_WF         0x20\r
+#define CTRL_OPS_CAP_AT         0x40\r
+#define CTRL_OPS_CAP_AF         0x80\r
+\r
+        uint8_t                                 resv5;\r
+\r
+        uint8_t                                 num_svc_entries;\r
+#define MAX_NUM_SVC_ENTRIES     0xff\r
+\r
+        uint8_t                                 resv6[9];\r
+\r
+#define CTRL_ID_STRING_LEN      64\r
+        char                                    id_string[CTRL_ID_STRING_LEN];\r
+\r
+}       PACK_SUFFIX <strong>ib_ioc_profile_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       ioc_guid\r
+               An EUI-64 GUID used to uniquely identify the IO controller.\r
+\r
+       vend_id\r
+               IO controller vendor ID, IEEE format.\r
+\r
+       dev_id\r
+               A number assigned by the vendor to identify the type of controller.\r
+\r
+       dev_ver\r
+               A number assigned by the vendor to identify the divice version.\r
+\r
+       subsys_vend_id\r
+               ID of the vendor of the enclosure, if any, in which the IO controller\r
+               resides in IEEE format; otherwise zero.\r
+\r
+       subsys_id\r
+               A number identifying the subsystem where the controller resides.\r
+\r
+       io_class\r
+               0x0000 - 0xfffe = reserved for IO classes encompased by InfiniBand\r
+               Architecture.  0xffff = Vendor specific.\r
+\r
+       io_subclass\r
+               0x0000 - 0xfffe = reserved for IO subclasses encompased by InfiniBand\r
+               Architecture.  0xffff = Vendor specific.  This shall be set to 0xfff\r
+               if the io_class component is 0xffff.\r
+\r
+       protocol\r
+               0x0000 - 0xfffe = reserved for IO subclasses encompased by InfiniBand\r
+               Architecture.  0xffff = Vendor specific.  This shall be set to 0xfff\r
+               if the io_class component is 0xffff.\r
+\r
+       protocol_ver\r
+               Protocol specific.\r
+\r
+       send_msg_depth\r
+               Maximum depth of the send message queue.\r
+\r
+       rdma_read_depth\r
+               Maximum depth of the per-channel RDMA read queue.\r
+\r
+       send_msg_size\r
+               Maximum size of send messages.\r
+\r
+       ctrl_ops_cap\r
+               Supported operation types of this IO controller.  A bit set to one\r
+               for affirmation of supported capability.\r
+\r
+       num_svc_entries\r
+               Number of entries in the service entries table.\r
+\r
+       id_string\r
+               UTF-8 encoded string for identifying the controller to an operator.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre> <a href="#robo840">ib_dm_mad_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo875">[Functions]<a name="IBA20Base3a20Types2fib5fiou5finfo5fdiag5fdev5fid">\r
+IBA Base: Types/ib_iou_info_diag_dev_id</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_iou_info_diag_dev_id</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the DiagDeviceID.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_iou_info_diag_dev_id</strong>(\r
+        IN              const   <a href="#robo877">ib_iou_info_t</a>* const            p_iou_info )\r
+{\r
+        return( (uint8_t)(p_iou_info-&gt;diag_rom &gt;&gt; 6 &amp; 1) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_iou_info\r
+               [in] Pointer to the IO Unit information structure.\r
+\r
+ RETURN VALUES\r
+       DiagDeviceID field of the IO Unit information.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo877">ib_iou_info_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo876">[Functions]<a name="IBA20Base3a20Types2fib5fiou5finfo5foption5from">\r
+IBA Base: Types/ib_iou_info_option_rom</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_iou_info_option_rom</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the OptionROM.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_iou_info_option_rom</strong>(\r
+        IN              const   <a href="#robo877">ib_iou_info_t</a>*  const   p_iou_info )\r
+{\r
+        return( (uint8_t)(p_iou_info-&gt;diag_rom &gt;&gt; 7) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_iou_info\r
+               [in] Pointer to the IO Unit information structure.\r
+\r
+ RETURN VALUES\r
+       OptionROM field of the IO Unit information.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo877">ib_iou_info_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo877">[Structures]<a name="IBA20Base3a20Types2fib5fiou5finfo5ft">\r
+IBA Base: Types/ib_iou_info_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_iou_info_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined IO Unit information structure (16.3.3.3)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_iou_info\r
+{\r
+        <a href="#robo893">ib_net16_t</a>              change_id;\r
+        uint8_t                 max_controllers;\r
+        uint8_t                 diag_rom;\r
+\r
+#define IB_DM_CTRL_LIST_SIZE    128\r
+#define IB_DM_MAX_CTRL                  0xFF;\r
+\r
+        uint8_t                 controller_list[IB_DM_CTRL_LIST_SIZE];\r
+#define IOC_NOT_INSTALLED               0x0\r
+#define IOC_INSTALLED                   0x1\r
+//              Reserved values                         0x02-0xE\r
+#define SLOT_DOES_NOT_EXIST             0xF\r
+\r
+}       PACK_SUFFIX <strong>ib_iou_info_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       change_id\r
+               Value incremented, with rollover, by any change to the controller_list.\r
+\r
+       max_controllers\r
+               Number of slots in controller_list.\r
+\r
+       diag_rom\r
+               A byte containing two fields: DiagDeviceID and OptionROM.\r
+               These fields may be read using the <a href="#robo875">ib_iou_info_diag_dev_id</a>\r
+               and <a href="#robo876">ib_iou_info_option_rom</a> functions.\r
+\r
+       controller_list\r
+               A series of 4-bit nibbles, with each nibble representing a slot\r
+               in the IO Unit.  Individual nibbles may be read using the\r
+               <a href="#robo977">ioc_at_slot</a> function.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre> <a href="#robo840">ib_dm_mad_t</a>, <a href="#robo875">ib_iou_info_diag_dev_id</a>, <a href="#robo876">ib_iou_info_option_rom</a>, <a href="#robo977">ioc_at_slot</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo878">[Structures]<a name="IBA20Base3a20Types2fib5flft5frecord5ft">\r
+IBA Base: Types/ib_lft_record_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_lft_record_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined LinearForwardingTable. (14.2.5.6)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_lft_record\r
+{\r
+        <a href="#robo893">ib_net16_t</a>              lid;\r
+        <a href="#robo893">ib_net16_t</a>              block_num;\r
+        uint32_t                resv0;\r
+        uint8_t                 lft[64];\r
+\r
+}       PACK_SUFFIX <strong>ib_lft_record_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo879">[Functions]<a name="IBA20Base3a20Types2fib5fmad5finit5fnew">\r
+IBA Base: Types/ib_mad_init_new</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_mad_init_new</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Initializes a MAD common header.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_mad_init_new</strong>(\r
+        IN                              <a href="#robo882">ib_mad_t</a>* const                         p_mad,\r
+        IN              const   uint8_t                                         mgmt_class,\r
+        IN              const   uint8_t                                         class_ver,\r
+        IN              const   uint8_t                                         method,\r
+        IN              const   <a href="#robo895">ib_net64_t</a>                                      trans_id,\r
+        IN              const   <a href="#robo893">ib_net16_t</a>                                      attr_id,\r
+        IN              const   <a href="#robo894">ib_net32_t</a>                                      attr_mod )\r
+{\r
+        CL_ASSERT( p_mad );\r
+        p_mad-&gt;base_ver = 1;\r
+        p_mad-&gt;mgmt_class = mgmt_class;\r
+        p_mad-&gt;class_ver = class_ver;\r
+        p_mad-&gt;method = method;\r
+        p_mad-&gt;status = 0;\r
+        p_mad-&gt;class_spec = 0;\r
+        p_mad-&gt;trans_id = trans_id;\r
+        p_mad-&gt;attr_id = attr_id;\r
+        p_mad-&gt;resv = 0;\r
+        p_mad-&gt;attr_mod = attr_mod;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_mad\r
+               [in] Pointer to the MAD common header.\r
+\r
+       mgmt_class\r
+               [in] Class of operation.\r
+\r
+       class_ver\r
+               [in] Version of MAD class-specific format.\r
+\r
+       method\r
+               [in] Method to perform, including 'R' bit.\r
+\r
+       trans_Id\r
+               [in] Transaction ID.\r
+\r
+       attr_id\r
+               [in] Attribute ID.\r
+\r
+       attr_mod\r
+               [in] Attribute modifier.\r
+\r
+ RETURN VALUES\r
+       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo882">ib_mad_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo880">[Functions]<a name="IBA20Base3a20Types2fib5fmad5finit5fresponse">\r
+IBA Base: Types/ib_mad_init_response</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_mad_init_response</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Initializes a MAD common header as a response.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_mad_init_response</strong>(\r
+        IN              const   <a href="#robo882">ib_mad_t</a>* const                         p_req_mad,\r
+        IN                              <a href="#robo882">ib_mad_t</a>* const                         p_mad,\r
+        IN              const   <a href="#robo893">ib_net16_t</a>                                      status )\r
+{\r
+        CL_ASSERT( p_req_mad );\r
+        CL_ASSERT( p_mad );\r
+        *p_mad = *p_req_mad;\r
+        p_mad-&gt;status = status;\r
+        if( p_mad-&gt;method == <a href="#robo771">IB_MAD_METHOD_SET</a> )\r
+                p_mad-&gt;method = <a href="#robo763">IB_MAD_METHOD_GET</a>;\r
+        p_mad-&gt;method |= <a href="#robo769">IB_MAD_METHOD_RESP_MASK</a>;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_req_mad\r
+               [in] Pointer to the MAD common header in the original request MAD.\r
+\r
+       p_mad\r
+               [in] Pointer to the MAD common header to initialize.\r
+\r
+       status\r
+               [in] MAD Status value to return;\r
+\r
+ RETURN VALUES\r
+       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       p_req_mad and p_mad may point to the same MAD.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo882">ib_mad_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo881">[Functions]<a name="IBA20Base3a20Types2fib5fmad5fis5fresponse">\r
+IBA Base: Types/ib_mad_is_response</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_mad_is_response</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns TRUE if the MAD is a response ('R' bit set),\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE boolean_t AL_API\r
+<strong>ib_mad_is_response</strong>(\r
+        IN              const   <a href="#robo882">ib_mad_t</a>* const                         p_mad )\r
+{\r
+        CL_ASSERT( p_mad );\r
+        return( (p_mad-&gt;method &amp; <a href="#robo769">IB_MAD_METHOD_RESP_MASK</a>) ==\r
+                        <a href="#robo769">IB_MAD_METHOD_RESP_MASK</a> );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_mad\r
+               [in] Pointer to the MAD.\r
+\r
+ RETURN VALUES\r
+       Returns TRUE if the MAD is a response ('R' bit set),\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo882">ib_mad_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo882">[Structures]<a name="IBA20Base3a20Types2fib5fmad5ft">\r
+IBA Base: Types/ib_mad_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_mad_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined MAD header (13.4.3)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_mad\r
+{\r
+        uint8_t                                 base_ver;\r
+        uint8_t                                 mgmt_class;\r
+        uint8_t                                 class_ver;\r
+        uint8_t                                 method;\r
+        <a href="#robo893">ib_net16_t</a>                              status;\r
+        <a href="#robo893">ib_net16_t</a>                              class_spec;\r
+        <a href="#robo895">ib_net64_t</a>                              trans_id;\r
+        <a href="#robo893">ib_net16_t</a>                              attr_id;\r
+        <a href="#robo893">ib_net16_t</a>                              resv;\r
+        <a href="#robo894">ib_net32_t</a>                              attr_mod;\r
+\r
+}       PACK_SUFFIX <strong>ib_mad_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       base_ver\r
+               MAD base format.\r
+\r
+       mgmt_class\r
+               Class of operation.\r
+\r
+       class_ver\r
+               Version of MAD class-specific format.\r
+\r
+       method\r
+               Method to perform, including 'R' bit.\r
+\r
+       status\r
+               Status of operation.\r
+\r
+       class_spec\r
+               Reserved for subnet management.\r
+\r
+       trans_id\r
+               Transaction ID.\r
+\r
+       attr_id\r
+               Attribute ID.\r
+\r
+       resv\r
+               Reserved field.\r
+\r
+       attr_mod\r
+               Attribute modifier.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo883">[Functions]<a name="IBA20Base3a20Types2fib5fmember5fget5fscope">\r
+IBA Base: Types/ib_member_get_scope</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_member_get_scope</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get encoded MGID scope\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_member_get_scope</strong>(\r
+        IN              const   uint8_t                                         scope_state )\r
+{\r
+        return (scope_state &gt;&gt; 4);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       scope_state\r
+               [in] the scope and state\r
+\r
+ RETURN VALUES\r
+       Encoded scope.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo887">ib_member_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo884">[Functions]<a name="IBA20Base3a20Types2fib5fmember5fget5fscope5fstate">\r
+IBA Base: Types/ib_member_get_scope_state</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_member_get_scope_state</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get encoded MGID scope and JoinState\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_member_get_scope_state</strong>(\r
+        IN              const   uint8_t                                         scope_state,\r
+                OUT                     uint8_t* const                          p_scope,\r
+                OUT                     uint8_t* const                          p_state )\r
+{\r
+        if (p_scope)\r
+                *p_scope = <a href="#robo883">ib_member_get_scope</a>( scope_state );\r
+\r
+        if (p_state)\r
+                *p_state = <a href="#robo886">ib_member_get_state</a>( scope_state );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       scope_state\r
+               [in] the scope and state\r
+\r
+ RETURN VALUES\r
+       p_scope\r
+               [out] pointer to the MGID scope\r
+\r
+       p_state\r
+               [out] pointer to the join state\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo887">ib_member_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo885">[Functions]<a name="IBA20Base3a20Types2fib5fmember5fget5fsl5fflow5fhop">\r
+IBA Base: Types/ib_member_get_sl_flow_hop</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_member_get_sl_flow_hop</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get encoded sl flow label and hop limit\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_member_get_sl_flow_hop</strong>(\r
+        IN              const   <a href="#robo894">ib_net32_t</a>                                      sl_flow_hop,\r
+                OUT                     uint8_t* const                          p_sl OPTIONAL,\r
+                OUT                     net32_t* const                          p_flow_lbl OPTIONAL,\r
+                OUT                     uint8_t* const                          p_hop OPTIONAL )\r
+{\r
+        <a href="#robo894">ib_net32_t</a> tmp_sl_flow_hop;\r
+\r
+        if (p_sl)\r
+                *p_sl = (uint8_t)(sl_flow_hop &amp; 0x0f);\r
+\r
+        tmp_sl_flow_hop = sl_flow_hop &gt;&gt; 4;\r
+\r
+        if (p_flow_lbl)\r
+                *p_flow_lbl = (uint32_t)(tmp_sl_flow_hop &amp; 0xffffff);\r
+\r
+        tmp_sl_flow_hop = tmp_sl_flow_hop &gt;&gt; 20;\r
+\r
+        if (p_hop)\r
+                *p_hop = (uint8_t)(tmp_sl_flow_hop &amp; 0xff);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       sl_flow_hop\r
+               [in] the sl flow label and hop limit of MC Group\r
+\r
+ RETURN VALUES\r
+       p_sl\r
+               [out] pointer to the service level\r
+\r
+       p_flow_lbl\r
+               [out] pointer to the flow label info\r
+\r
+       p_hop\r
+               [out] pointer to the hop count limit.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo887">ib_member_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo886">[Functions]<a name="IBA20Base3a20Types2fib5fmember5fget5fstate">\r
+IBA Base: Types/ib_member_get_state</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_member_get_state</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get encoded MGID JoinState\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_member_get_state</strong>(\r
+        IN              const   uint8_t                                         scope_state )\r
+{\r
+        return (scope_state &amp; 0x0f);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       scope_state\r
+               [in] the scope and state\r
+\r
+ RETURN VALUES\r
+               Encoded JoinState\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo887">ib_member_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo887">[Structures]<a name="IBA20Base3a20Types2fib5fmember5frec5ft">\r
+IBA Base: Types/ib_member_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_member_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Multicast member record, used to create, join, and leave multicast\r
+       groups.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_member_rec\r
+{\r
+        <a href="#robo856">ib_gid_t</a>                                mgid;\r
+        <a href="#robo856">ib_gid_t</a>                                port_gid;\r
+        <a href="#robo894">ib_net32_t</a>                              qkey;\r
+        <a href="#robo893">ib_net16_t</a>                              mlid;\r
+        uint8_t                                 mtu;\r
+        uint8_t                                 tclass;\r
+        <a href="#robo893">ib_net16_t</a>                              pkey;\r
+        uint8_t                                 rate;\r
+        uint8_t                                 pkt_life;\r
+        <a href="#robo894">ib_net32_t</a>                              sl_flow_hop;\r
+        uint8_t                                 scope_state;\r
+        uint8_t                                 proxy_join;\r
+        uint8_t                                 reserved[2];\r
+        uint8_t                                 pad[4];\r
+\r
+}       PACK_SUFFIX <strong>ib_member_rec_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       mgid\r
+               Multicast GID address for this multicast group.\r
+\r
+       port_gid\r
+               Valid GID of the endpoint joining this multicast group.\r
+\r
+       requestor_gid\r
+               GID of the endpoint making this request on hehave of port_gid.\r
+\r
+       qkey\r
+               Q_Key to be used by this multicast group.\r
+\r
+       mlid\r
+               Multicast LID for this multicast group.\r
+\r
+       mtu\r
+               MTU and MTU selector fields to use on this path\r
+\r
+       tclass\r
+               Another global routing parameter.\r
+\r
+       pkey\r
+               Partition key (P_Key) to use for this member.\r
+\r
+       rate\r
+               Rate and rate selector fields to use on this path.\r
+\r
+       pkt_life\r
+               Packet lifetime\r
+\r
+       sl_flow_hop\r
+               Global routing parameters: service level, hop count, and flow label.\r
+\r
+       scope_state\r
+               MGID scope and JoinState of multicast request.\r
+\r
+       proxy_join\r
+               Enables others in the Partition to proxy add/remove from the group\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo888">[Functions]<a name="IBA20Base3a20Types2fib5fmember5fset5fjoin5fstate">\r
+IBA Base: Types/ib_member_set_join_state</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_member_set_join_state</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Set JoinState\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_member_set_join_state</strong>(\r
+        IN      OUT                     <a href="#robo887">ib_member_rec_t</a>                         *p_mc_rec,\r
+        IN              const   uint8_t                                         state )\r
+{\r
+        p_mc_rec-&gt;scope_state &amp;= 0xF0;\r
+        p_mc_rec-&gt;scope_state |= (state &amp; 0x0F);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_mc_rec\r
+               [in] pointer to the member record\r
+\r
+       state\r
+               [in] the JoinState\r
+\r
+ RETURN VALUES\r
+       NONE\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo887">ib_member_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo889">[Functions]<a name="IBA20Base3a20Types2fib5fmember5fset5fscope">\r
+IBA Base: Types/ib_member_set_scope</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_member_set_scope</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Set encoded scope of a MCR.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_member_set_scope</strong>(\r
+        IN      OUT                     uint8_t* const                          p_scope_state,\r
+        IN              const   uint8_t                                         scope )\r
+{\r
+        CL_ASSERT( scope &lt;= 0x0F );\r
+        /* Scope is MS 4-bits. */\r
+        *p_scope_state &amp;= 0xF0;\r
+        *p_scope_state |= (scope &lt;&lt; 4);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       scope_state\r
+               [in/out] Pointer to the MCR scope_state field.\r
+\r
+       scope\r
+               [in] The desired scope.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo887">ib_member_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo890">[Functions]<a name="IBA20Base3a20Types2fib5fmember5fset5fscope5fstate">\r
+IBA Base: Types/ib_member_set_scope_state</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_member_set_scope_state</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Set encoded version, MGID scope and JoinState\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_member_set_scope_state</strong>(\r
+        IN              const   uint8_t                                         scope,\r
+        IN              const   uint8_t                                         state )\r
+{\r
+        /* Scope is MS 4-bits, state is LS 4-bits */\r
+        return ((scope &lt;&lt; 4) | (state &amp; 0xF));\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       scope\r
+               [in] the MGID scope\r
+\r
+       state\r
+               [in] the JoinState\r
+\r
+ RETURN VALUES\r
+       scope_state\r
+               [out] the encoded one\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo887">ib_member_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo891">[Functions]<a name="IBA20Base3a20Types2fib5fmember5fset5fsl5fflow5fhop">\r
+IBA Base: Types/ib_member_set_sl_flow_hop</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_member_set_sl_flow_hop</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Set encoded version, sl flow and hop\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE <a href="#robo894">ib_net32_t</a> AL_API\r
+<strong>ib_member_set_sl_flow_hop</strong>(\r
+        IN              const   uint8_t                                         sl,\r
+        IN              const   net32_t                                         flow_lbl,\r
+        IN              const   uint8_t                                         hop_limit )\r
+{\r
+        <a href="#robo894">ib_net32_t</a>              sl_flow_hop;\r
+\r
+        sl_flow_hop = sl;\r
+        sl_flow_hop &lt;&lt;= 20;\r
+        sl_flow_hop |= (<a href="../complib/cl_byteswap_h.html#robo288">cl_ntoh32</a>( flow_lbl ) &amp; 0x000FFFFF);\r
+        sl_flow_hop &lt;&lt;= 8;\r
+        sl_flow_hop |= hop_limit;\r
+        return <a href="../complib/cl_byteswap_h.html#robo281">cl_hton32</a>(sl_flow_hop);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       sl\r
+               [in] the service level.\r
+\r
+       flow_lbl\r
+               [in] the flow label info\r
+\r
+       hop_limit\r
+               [in] the hop limit.\r
+\r
+ RETURN VALUES\r
+       sl_flow_hop\r
+               [out] the sl flow label and hop limit\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo887">ib_member_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo892">[Functions]<a name="IBA20Base3a20Types2fib5fmember5fset5fstate">\r
+IBA Base: Types/ib_member_set_state</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_member_set_state</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Set encoded JoinState of a MCR.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_member_set_state</strong>(\r
+        IN      OUT                     uint8_t* const                          p_scope_state,\r
+        IN              const   uint8_t                                         state )\r
+{\r
+        CL_ASSERT( state &lt;= 0x0F );\r
+        /* State is LS 4-bits. */\r
+        *p_scope_state &amp;= 0x0F;\r
+        *p_scope_state |= (state &amp; 0x0F);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       scope_state\r
+               [in/out] Pointer to the MCR scope_state field to modify.\r
+\r
+       state\r
+               [in] the JoinState\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo887">ib_member_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo893">[Definitions]<a name="IBA20Base3a20Types2fib5fnet165ft">\r
+IBA Base: Types/ib_net16_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_net16_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Defines the network ordered type for 16-bit values.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>typedef uint16_t        <strong>ib_net16_t</strong>;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo894">[Definitions]<a name="IBA20Base3a20Types2fib5fnet325ft">\r
+IBA Base: Types/ib_net32_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_net32_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Defines the network ordered type for 32-bit values.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>typedef uint32_t        <strong>ib_net32_t</strong>;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo895">[Definitions]<a name="IBA20Base3a20Types2fib5fnet645ft">\r
+IBA Base: Types/ib_net64_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_net64_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Defines the network ordered type for 64-bit values.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>typedef uint64_t        <strong>ib_net64_t</strong>;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo896">[Functions]<a name="IBA20Base3a20Types2fib5fnode5finfo5fget5flocal5fport5fnum">\r
+IBA Base: Types/ib_node_info_get_local_port_num</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_node_info_get_local_port_num</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Gets a the local port number from the NodeInfo attribute.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_node_info_get_local_port_num</strong>(\r
+        IN              const   <a href="#robo898">ib_node_info_t</a>* const           p_ni )\r
+{\r
+        return( (uint8_t)(( p_ni-&gt;port_num_vendor_id &amp;\r
+                        IB_NODE_INFO_PORT_NUM_MASK )\r
+                        &gt;&gt; IB_NODE_INFO_PORT_NUM_SHIFT ));\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_ni\r
+               [in] Pointer to a NodeInfo attribute.\r
+\r
+ RETURN VALUES\r
+       Local port number that returned the attribute.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo898">ib_node_info_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo897">[Functions]<a name="IBA20Base3a20Types2fib5fnode5finfo5fget5fvendor5fid">\r
+IBA Base: Types/ib_node_info_get_vendor_id</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_node_info_get_vendor_id</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Gets the VendorID from the NodeInfo attribute.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE <a href="#robo894">ib_net32_t</a> AL_API\r
+<strong>ib_node_info_get_vendor_id</strong>(\r
+        IN              const   <a href="#robo898">ib_node_info_t</a>* const           p_ni )\r
+{\r
+        return( (<a href="#robo894">ib_net32_t</a>)( p_ni-&gt;port_num_vendor_id &amp;\r
+                        IB_NODE_INFO_VEND_ID_MASK ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_ni\r
+               [in] Pointer to a NodeInfo attribute.\r
+\r
+ RETURN VALUES\r
+       VendorID that returned the attribute.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo898">ib_node_info_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo898">[Structures]<a name="IBA20Base3a20Types2fib5fnode5finfo5ft">\r
+IBA Base: Types/ib_node_info_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_node_info_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined NodeInfo. (14.2.5.3)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_node_info\r
+{\r
+        uint8_t                         base_version;\r
+        uint8_t                         class_version;\r
+        uint8_t                         node_type;\r
+        uint8_t                         num_ports;\r
+        <a href="#robo895">ib_net64_t</a>                      sys_guid;\r
+        <a href="#robo895">ib_net64_t</a>                      node_guid;\r
+        <a href="#robo895">ib_net64_t</a>                      port_guid;\r
+        <a href="#robo893">ib_net16_t</a>                      partition_cap;\r
+        <a href="#robo893">ib_net16_t</a>                      device_id;\r
+        <a href="#robo894">ib_net32_t</a>                      revision;\r
+        <a href="#robo894">ib_net32_t</a>                      port_num_vendor_id;\r
+\r
+}       PACK_SUFFIX <strong>ib_node_info_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo899">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fget5fcount">\r
+IBA Base: Types/ib_notice_get_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_get_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the notice toggle count from a notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE boolean_t AL_API\r
+<strong>ib_notice_get_count</strong>(\r
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )\r
+{\r
+        return ((<a href="../complib/cl_byteswap_h.html#robo287">cl_ntoh16</a>( p_notice_attr-&gt;combo3 ) &amp; 0xFFFE) &gt;&gt; 1);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in] Pointer to the notice attribute structure whose\r
+               notice toggle count to return.\r
+\r
+ RETURN VALUES\r
+       Returns the notice toggle count of the notice.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo907">ib_notice_set_count</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo900">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fget5fdev5fid">\r
+IBA Base: Types/ib_notice_get_dev_id</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_get_dev_id</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the device ID from a vendor specific notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint16_t AL_API\r
+<strong>ib_notice_get_dev_id</strong>(\r
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )\r
+{\r
+        return <a href="#robo904">ib_notice_get_trap_num</a>( p_notice_attr );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in] Pointer to the notice attribute structure whose\r
+               device ID to return.\r
+\r
+ RETURN VALUES\r
+       Returns the vendor ID of the notice, in host byte order.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo908">ib_notice_set_dev_id</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo901">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fget5fgeneric">\r
+IBA Base: Types/ib_notice_get_generic</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_get_generic</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves whether a notice trap is generic.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE boolean_t AL_API\r
+<strong>ib_notice_get_generic</strong>(\r
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )\r
+{\r
+        if( <a href="../complib/cl_byteswap_h.html#robo288">cl_ntoh32</a>( p_notice_attr-&gt;combo1 ) &amp; 0x00000001 )\r
+                return TRUE;\r
+        return FALSE;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in] Pointer to the notice attribute structure for which to return\r
+               whether it is generic or not.\r
+\r
+ RETURN VALUES\r
+       Returns TRUE if the notice is generic.\r
+\r
+       Returns FALSE if the notice is vendor specific.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo909">ib_notice_set_generic</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo902">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fget5fprod5ftype">\r
+IBA Base: Types/ib_notice_get_prod_type</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_get_prod_type</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the producer type from a generic notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint32_t AL_API\r
+<strong>ib_notice_get_prod_type</strong>(\r
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )\r
+{\r
+        return (<a href="../complib/cl_byteswap_h.html#robo288">cl_ntoh32</a>( p_notice_attr-&gt;combo1 ) &gt;&gt; 8);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in] Pointer to the notice attribute structure whose\r
+               prducer type to return.\r
+\r
+ RETURN VALUES\r
+       Returns the producer type of the notice, in host byte order.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo910">ib_notice_set_prod_type</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo903">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fget5ftoggle">\r
+IBA Base: Types/ib_notice_get_toggle</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_get_toggle</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the notice toggle bit from a notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE boolean_t AL_API\r
+<strong>ib_notice_get_toggle</strong>(\r
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )\r
+{\r
+        return (<a href="../complib/cl_byteswap_h.html#robo287">cl_ntoh16</a>( p_notice_attr-&gt;combo3 ) &amp; 0x0001);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in] Pointer to the notice attribute structure whose\r
+               notice toggle bit value to return.\r
+\r
+ RETURN VALUES\r
+       Returns TRUE if the notice toggle bit of the notice is set.\r
+\r
+       Returns FALSE otherwise.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo911">ib_notice_set_toggle</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo904">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fget5ftrap5fnum">\r
+IBA Base: Types/ib_notice_get_trap_num</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_get_trap_num</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the trap number from a generic notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint16_t AL_API\r
+<strong>ib_notice_get_trap_num</strong>(\r
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )\r
+{\r
+        return <a href="../complib/cl_byteswap_h.html#robo287">cl_ntoh16</a>( p_notice_attr-&gt;combo2 );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in] Pointer to the notice attribute structure whose\r
+               trap number to return.\r
+\r
+ RETURN VALUES\r
+       Returns the vendor ID of the notice, in host byte order.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo912">ib_notice_set_trap_num</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo905">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fget5ftype">\r
+IBA Base: Types/ib_notice_get_type</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_get_type</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the type of a notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_notice_get_type</strong>(\r
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )\r
+{\r
+        return (uint8_t)((<a href="../complib/cl_byteswap_h.html#robo288">cl_ntoh32</a>( p_notice_attr-&gt;combo1 ) &gt;&gt; 1) &amp; 0x0000007F);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in] Pointer to the notice attribute structure whose type to return.\r
+\r
+ RETURN VALUES\r
+       Returns the type of the notice.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo913">ib_notice_set_type</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo906">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fget5fvend5fid">\r
+IBA Base: Types/ib_notice_get_vend_id</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_get_vend_id</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the vendor ID from a vendor specific notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint32_t AL_API\r
+<strong>ib_notice_get_vend_id</strong>(\r
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )\r
+{\r
+        return <a href="#robo902">ib_notice_get_prod_type</a>( p_notice_attr );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in] Pointer to the notice attribute structure whose\r
+               vendor ID to return.\r
+\r
+ RETURN VALUES\r
+       Returns the vendor ID of the notice, in host byte order.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo914">ib_notice_set_vend_id</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo907">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fset5fcount">\r
+IBA Base: Types/ib_notice_set_count</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_set_count</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the toggle count of a notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_notice_set_count</strong>(\r
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,\r
+        IN              const   uint16_t                                        toggle_cnt )\r
+{\r
+        uint16_t        val;\r
+        val = <a href="../complib/cl_byteswap_h.html#robo287">cl_ntoh16</a>( p_notice_attr-&gt;combo3 );\r
+        val &amp;= 0x0001;\r
+        val |= (toggle_cnt &lt;&lt; 1);\r
+        p_notice_attr-&gt;combo3 = <a href="../complib/cl_byteswap_h.html#robo280">cl_hton16</a>( val );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in/out] Pointer to the notice attribute structure\r
+               whose device ID to set.\r
+\r
+       toggle_cnt\r
+               [in] Toggle count value of the notice.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo899">ib_notice_get_count</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo908">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fset5fdev5fid">\r
+IBA Base: Types/ib_notice_set_dev_id</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_set_dev_id</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the producer type of a vendor specific notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_notice_set_dev_id</strong>(\r
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,\r
+        IN              const   uint16_t                                        dev_id )\r
+{\r
+        <a href="#robo912">ib_notice_set_trap_num</a>( p_notice_attr, dev_id );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in/out] Pointer to the notice attribute structure\r
+               whose device ID to set.\r
+\r
+       dev_id\r
+               [in] Device ID of notice trap.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo900">ib_notice_get_dev_id</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo909">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fset5fgeneric">\r
+IBA Base: Types/ib_notice_set_generic</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_set_generic</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets whether a notice trap is generic.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_notice_set_generic</strong>(\r
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,\r
+        IN              const   boolean_t                                       is_generic )\r
+{\r
+        uint32_t        val;\r
+\r
+        val = <a href="../complib/cl_byteswap_h.html#robo288">cl_ntoh32</a>( p_notice_attr-&gt;combo1 );\r
+        if( is_generic )\r
+                val |= 0x00000001;\r
+        else\r
+                val &amp;= 0xFFFFFFFE;\r
+        p_notice_attr-&gt;combo1 = <a href="../complib/cl_byteswap_h.html#robo281">cl_hton32</a>( val );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in/out] Pointer to the notice attribute structure for which to set\r
+               the generic bit.\r
+\r
+       is_generic\r
+               [in] TRUE if the notice is generic, FALSE if vendor specific.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo901">ib_notice_get_generic</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo910">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fset5fprod5ftype">\r
+IBA Base: Types/ib_notice_set_prod_type</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_set_prod_type</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the producer type of a generic notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_notice_set_prod_type</strong>(\r
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,\r
+        IN              const   uint32_t                                        prod_type )\r
+{\r
+        uint32_t        val;\r
+\r
+        val = <a href="../complib/cl_byteswap_h.html#robo288">cl_ntoh32</a>( p_notice_attr-&gt;combo1 );\r
+        /* Clear the type. */\r
+        val &amp;= 0x000000FF;\r
+        /* Set new value. */\r
+        val |= (prod_type &lt;&lt; 8);\r
+        p_notice_attr-&gt;combo1 = <a href="../complib/cl_byteswap_h.html#robo281">cl_hton32</a>( val );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in/out] Pointer to the notice attribute structure\r
+               whose producer type to set.\r
+\r
+       prod_type\r
+               [in] Producer type of notice trap.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo902">ib_notice_get_prod_type</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo911">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fset5ftoggle">\r
+IBA Base: Types/ib_notice_set_toggle</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_set_toggle</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the notice toggle bit of a notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_notice_set_toggle</strong>(\r
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,\r
+        IN              const   boolean_t                                       toggle_val )\r
+{\r
+        uint16_t        val;\r
+        val = <a href="../complib/cl_byteswap_h.html#robo287">cl_ntoh16</a>( p_notice_attr-&gt;combo3 );\r
+        if( toggle_val )\r
+                val |= 0x0001;\r
+        else\r
+                val &amp;= 0xFFFE;\r
+        p_notice_attr-&gt;combo3 = <a href="../complib/cl_byteswap_h.html#robo280">cl_hton16</a>( val );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in/out] Pointer to the notice attribute structure\r
+               whose notice toggle bit to set or clear.\r
+\r
+       toggle_val\r
+               [in] Boolean value indicating whether the toggle bit of the notice\r
+               should be set or cleared.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo903">ib_notice_get_toggle</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo912">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fset5ftrap5fnum">\r
+IBA Base: Types/ib_notice_set_trap_num</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_set_trap_num</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the trap number of a generic notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_notice_set_trap_num</strong>(\r
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,\r
+        IN              const   uint16_t                                        trap_num )\r
+{\r
+        p_notice_attr-&gt;combo2 = <a href="../complib/cl_byteswap_h.html#robo280">cl_hton16</a>( trap_num );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in/out] Pointer to the notice attribute structure\r
+               whose trap number to set.\r
+\r
+       trap_num\r
+               [in] Trap number to set.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo904">ib_notice_get_trap_num</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo913">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fset5ftype">\r
+IBA Base: Types/ib_notice_set_type</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_set_type</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the type of a notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_notice_set_type</strong>(\r
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,\r
+        IN              const   uint8_t                                         type )\r
+{\r
+        uint32_t        val;\r
+\r
+        val = <a href="../complib/cl_byteswap_h.html#robo288">cl_ntoh32</a>( p_notice_attr-&gt;combo1 );\r
+        /* Clear the type. */\r
+        val &amp;= 0xFFFFFF01;\r
+        /* Set new value. */\r
+        val |= (((uint32_t)(type &amp; 0x7F)) &lt;&lt; 1);\r
+        p_notice_attr-&gt;combo1 = <a href="../complib/cl_byteswap_h.html#robo281">cl_hton32</a>( val );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in/out] Pointer to the notice attribute structure whose type to set.\r
+\r
+       type\r
+               [in] Type of notice trap.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo905">ib_notice_get_type</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo914">[Functions]<a name="IBA20Base3a20Types2fib5fnotice5fset5fvend5fid">\r
+IBA Base: Types/ib_notice_set_vend_id</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_notice_set_vend_id</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the vendor ID of a vendor specific notice trap.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_notice_set_vend_id</strong>(\r
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,\r
+        IN              const   uint32_t                                        vend_id )\r
+{\r
+        <a href="#robo910">ib_notice_set_prod_type</a>( p_notice_attr, vend_id );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_notice_attr\r
+               [in/out] Pointer to the notice attribute structure\r
+               whose vendor ID to set.\r
+\r
+       vend_id\r
+               [in] Vendor ID of notice trap.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t, <a href="#robo906">ib_notice_get_vend_id</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo915">[Functions]<a name="IBA20Base3a20Types2fib5fpath5fget5fipd">\r
+IBA Base: Types/ib_path_get_ipd</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_path_get_ipd</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the encoded value for the inter packet delay.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_path_get_ipd</strong>(\r
+        IN                              uint8_t                                         local_link_width_supported,\r
+        IN                              uint8_t                                         path_rec_rate )\r
+{\r
+        uint8_t ipd = 0;\r
+\r
+        switch(local_link_width_supported)\r
+        {\r
+                //link_width_supported = 1: 1x\r
+                case 1:\r
+                        break;\r
+\r
+                //link_width_supported = 3: 1x or 4x\r
+                case 3:\r
+                        switch(path_rec_rate &amp; 0x3F)\r
+                        {\r
+                                case IB_PATH_RECORD_RATE_2_5_GBS:\r
+                                        ipd = 3;\r
+                                        break;\r
+                                default:\r
+                                        break;\r
+                        }\r
+                        break;\r
+\r
+                //link_width_supported = 11: 1x or 4x or 12x\r
+                case 11:\r
+                        switch(path_rec_rate &amp; 0x3F)\r
+                        {\r
+                                case IB_PATH_RECORD_RATE_2_5_GBS:\r
+                                        ipd = 11;\r
+                                        break;\r
+                                case IB_PATH_RECORD_RATE_10_GBS:\r
+                                        ipd = 2;\r
+                                        break;\r
+                                default:\r
+                                        break;\r
+                        }\r
+                        break;\r
+\r
+                default:\r
+                        break;\r
+        }\r
+\r
+        return ipd;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       local_link_width_supported\r
+               [in] link with supported for this port\r
+\r
+       path_rec_rate\r
+               [in] rate field of the path record\r
+\r
+ RETURN VALUES\r
+       Returns the ipd\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo916">[Functions]<a name="IBA20Base3a20Types2fib5fpath5frec5fflow5flbl">\r
+IBA Base: Types/ib_path_rec_flow_lbl</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_path_rec_flow_lbl</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get flow label.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE net32_t AL_API\r
+<strong>ib_path_rec_flow_lbl</strong>(\r
+        IN              const   <a href="#robo927">ib_path_rec_t</a>* const            p_rec )\r
+{\r
+        return( <a href="../complib/cl_byteswap_h.html#robo281">cl_hton32</a>( (<a href="../complib/cl_byteswap_h.html#robo288">cl_ntoh32</a>(p_rec-&gt;hop_flow_raw.val) &gt;&gt; 8) &amp; 0x000FFFFF ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rec\r
+               [in] Pointer to the path record object.\r
+\r
+ RETURN VALUES\r
+       Flow label of the path record.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo927">ib_path_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo917">[Functions]<a name="IBA20Base3a20Types2fib5fpath5frec5fhop5flimit">\r
+IBA Base: Types/ib_path_rec_hop_limit</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_path_rec_hop_limit</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get hop limit.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_path_rec_hop_limit</strong>(\r
+        IN              const   <a href="#robo927">ib_path_rec_t</a>* const            p_rec )\r
+{\r
+        return( p_rec-&gt;hop_flow_raw.bytes[3] );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rec\r
+               [in] Pointer to the path record object.\r
+\r
+ RETURN VALUES\r
+       Hop limit of the path record.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo927">ib_path_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo918">[Functions]<a name="IBA20Base3a20Types2fib5fpath5frec5finit5flocal">\r
+IBA Base: Types/ib_path_rec_init_local</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_path_rec_init_local</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Initializes a subnet local path record.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_path_rec_init_local</strong>(\r
+        IN                              <a href="#robo927">ib_path_rec_t</a>*  const           p_rec,\r
+        IN              const   <a href="#robo856">ib_gid_t</a>*               const           p_dgid,\r
+        IN              const   <a href="#robo856">ib_gid_t</a>*               const           p_sgid,\r
+        IN              const   <a href="#robo893">ib_net16_t</a>                                      dlid,\r
+        IN              const   <a href="#robo893">ib_net16_t</a>                                      slid,\r
+        IN              const   uint8_t                                         num_path,\r
+        IN              const   <a href="#robo893">ib_net16_t</a>                                      pkey,\r
+        IN              const   uint8_t                                         sl,\r
+        IN              const   uint8_t                                         mtu_selector,\r
+        IN              const   uint8_t                                         mtu,\r
+        IN              const   uint8_t                                         rate_selector,\r
+        IN              const   uint8_t                                         rate,\r
+        IN              const   uint8_t                                         pkt_life_selector,\r
+        IN              const   uint8_t                                         pkt_life,\r
+        IN              const   uint8_t                                         preference )\r
+{\r
+        p_rec-&gt;dgid = *p_dgid;\r
+        p_rec-&gt;sgid = *p_sgid;\r
+        p_rec-&gt;dlid = dlid;\r
+        p_rec-&gt;slid = slid;\r
+        p_rec-&gt;num_path = num_path;\r
+        p_rec-&gt;pkey = pkey;\r
+        /* Lower 4 bits of path rec's SL are reserved. */\r
+        p_rec-&gt;sl = <a href="../complib/cl_byteswap_h.html#robo287">cl_ntoh16</a>( sl );\r
+        p_rec-&gt;mtu = (uint8_t)((mtu &amp; <a href="#robo809">IB_PATH_REC_BASE_MASK</a>) |\r
+                        (uint8_t)(mtu_selector &lt;&lt; 6));\r
+        p_rec-&gt;rate = (uint8_t)((rate &amp; <a href="#robo809">IB_PATH_REC_BASE_MASK</a>) |\r
+                        (uint8_t)(rate_selector &lt;&lt; 6));\r
+        p_rec-&gt;pkt_life = (uint8_t)((pkt_life &amp; <a href="#robo809">IB_PATH_REC_BASE_MASK</a>) |\r
+                        (uint8_t)(pkt_life_selector &lt;&lt; 6));\r
+        p_rec-&gt;preference = preference;\r
+\r
+        /* Clear global routing fields for local path records */\r
+        p_rec-&gt;hop_flow_raw.val = 0;\r
+        p_rec-&gt;tclass = 0;\r
+\r
+        p_rec-&gt;resv0 = 0;\r
+        p_rec-&gt;resv1 = 0;\r
+        p_rec-&gt;resv2 = 0;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rec\r
+               [in] Pointer to the path record object.\r
+\r
+       dgid\r
+               [in] GID of destination port.\r
+\r
+       sgid\r
+               [in] GID of source port.\r
+\r
+       dlid\r
+               [in] LID of destination port.\r
+\r
+       slid\r
+               [in] LID of source port.\r
+\r
+       num_path\r
+               [in] In queries, maximum number of paths to return.\r
+               In responses, undefined.\r
+\r
+       pkey\r
+               [in] Partition key (P_Key) to use on this path.\r
+\r
+       sl\r
+               [in] Service level to use on this path.  Lower 4-bits are valid.\r
+\r
+       mtu_selector\r
+               [in] Encoded MTU selector value to use on this path\r
+\r
+       mtu\r
+               [in] Encoded MTU to use on this path\r
+\r
+       rate_selector\r
+               [in] Encoded rate selector value to use on this path.\r
+\r
+       rate\r
+               [in] Encoded rate to use on this path.\r
+\r
+       pkt_life_selector\r
+               [in] Encoded Packet selector value lifetime for this path.\r
+\r
+       pkt_life\r
+               [in] Encoded Packet lifetime for this path.\r
+\r
+       preference\r
+               [in] Indicates the relative merit of this path versus other path\r
+               records returned from the SA.  Lower numbers are better.\r
+\r
+ RETURN VALUES\r
+       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo856">ib_gid_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo919">[Functions]<a name="IBA20Base3a20Types2fib5fpath5frec5fmtu">\r
+IBA Base: Types/ib_path_rec_mtu</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_path_rec_mtu</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get encoded path MTU.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_path_rec_mtu</strong>(\r
+        IN              const   <a href="#robo927">ib_path_rec_t</a>* const            p_rec )\r
+{\r
+        return( (uint8_t)(p_rec-&gt;mtu &amp; <a href="#robo809">IB_PATH_REC_BASE_MASK</a>) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rec\r
+               [in] Pointer to the path record object.\r
+\r
+ RETURN VALUES\r
+       Encoded path MTU.\r
+               1: 256\r
+               2: 512\r
+               3: 1024\r
+               4: 2048\r
+               5: 4096\r
+               others: reserved\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo927">ib_path_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo920">[Functions]<a name="IBA20Base3a20Types2fib5fpath5frec5fmtu5fsel">\r
+IBA Base: Types/ib_path_rec_mtu_sel</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_path_rec_mtu_sel</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get encoded path MTU selector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_path_rec_mtu_sel</strong>(\r
+        IN              const   <a href="#robo927">ib_path_rec_t</a>* const            p_rec )\r
+{\r
+        return( (uint8_t)((p_rec-&gt;mtu &amp; <a href="#robo810">IB_PATH_REC_SELECTOR_MASK</a>) &gt;&gt; 6) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rec\r
+               [in] Pointer to the path record object.\r
+\r
+ RETURN VALUES\r
+       Encoded path MTU selector value (for queries).\r
+               0: greater than MTU specified\r
+               1: less than MTU specified\r
+               2: exactly the MTU specified\r
+               3: largest MTU available\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo927">ib_path_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo921">[Functions]<a name="IBA20Base3a20Types2fib5fpath5frec5fpkt5flife">\r
+IBA Base: Types/ib_path_rec_pkt_life</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_path_rec_pkt_life</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get encoded path pkt_life.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_path_rec_pkt_life</strong>(\r
+        IN              const   <a href="#robo927">ib_path_rec_t</a>* const            p_rec )\r
+{\r
+        return( (uint8_t)(p_rec-&gt;pkt_life &amp; <a href="#robo809">IB_PATH_REC_BASE_MASK</a>) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rec\r
+               [in] Pointer to the path record object.\r
+\r
+ RETURN VALUES\r
+       Encoded path pkt_life = 4.096 Âµsec * 2 PacketLifeTime.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo927">ib_path_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo922">[Functions]<a name="IBA20Base3a20Types2fib5fpath5frec5fpkt5flife5fsel">\r
+IBA Base: Types/ib_path_rec_pkt_life_sel</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_path_rec_pkt_life_sel</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get encoded path pkt_lifetime selector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_path_rec_pkt_life_sel</strong>(\r
+        IN              const   <a href="#robo927">ib_path_rec_t</a>* const            p_rec )\r
+{\r
+        return( (uint8_t)((p_rec-&gt;pkt_life &amp; <a href="#robo810">IB_PATH_REC_SELECTOR_MASK</a>) &gt;&gt; 6 ));\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rec\r
+               [in] Pointer to the path record object.\r
+\r
+ RETURN VALUES\r
+       Encoded path pkt_lifetime selector value (for queries).\r
+               0: greater than rate specified\r
+               1: less than rate specified\r
+               2: exactly the rate specified\r
+               3: smallest packet lifetime available\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo927">ib_path_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo923">[Functions]<a name="IBA20Base3a20Types2fib5fpath5frec5frate">\r
+IBA Base: Types/ib_path_rec_rate</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_path_rec_rate</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get encoded path rate.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_path_rec_rate</strong>(\r
+        IN              const   <a href="#robo927">ib_path_rec_t</a>* const            p_rec )\r
+{\r
+        return( (uint8_t)(p_rec-&gt;rate &amp; <a href="#robo809">IB_PATH_REC_BASE_MASK</a>) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rec\r
+               [in] Pointer to the path record object.\r
+\r
+ RETURN VALUES\r
+       Encoded path rate.\r
+               2: 2.5 Gb/sec.\r
+               3: 10 Gb/sec.\r
+               4: 30 Gb/sec.\r
+               others: reserved\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo927">ib_path_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo924">[Functions]<a name="IBA20Base3a20Types2fib5fpath5frec5frate5fsel">\r
+IBA Base: Types/ib_path_rec_rate_sel</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_path_rec_rate_sel</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get encoded path rate selector.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_path_rec_rate_sel</strong>(\r
+        IN              const   <a href="#robo927">ib_path_rec_t</a>* const            p_rec )\r
+{\r
+        return( (uint8_t)((p_rec-&gt;rate &amp; <a href="#robo810">IB_PATH_REC_SELECTOR_MASK</a>) &gt;&gt; 6) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rec\r
+               [in] Pointer to the path record object.\r
+\r
+ RETURN VALUES\r
+       Encoded path rate selector value (for queries).\r
+               0: greater than rate specified\r
+               1: less than rate specified\r
+               2: exactly the rate specified\r
+               3: largest rate available\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo927">ib_path_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo925">[Functions]<a name="IBA20Base3a20Types2fib5fpath5frec5fset5fhop5fflow5fraw">\r
+IBA Base: Types/ib_path_rec_set_hop_flow_raw</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_path_rec_set_hop_flow_raw</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the hop limit, flow label, and raw traffic bits of a path record.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_path_rec_set_hop_flow_raw</strong>(\r
+                OUT                     <a href="#robo927">ib_path_rec_t</a>* const            p_rec,\r
+        IN              const   uint8_t                                         hop_limit,\r
+        IN              const   net32_t                                         flow_lbl,\r
+        IN              const   boolean_t                                       raw )\r
+{\r
+        p_rec-&gt;hop_flow_raw.val = (<a href="../complib/cl_byteswap_h.html#robo288">cl_ntoh32</a>( flow_lbl ) &amp; 0x000FFFFF) &lt;&lt; 8;\r
+        if( raw )\r
+                p_rec-&gt;hop_flow_raw.val |= 0x80000000;\r
+        p_rec-&gt;hop_flow_raw.val = <a href="../complib/cl_byteswap_h.html#robo281">cl_hton32</a>( p_rec-&gt;hop_flow_raw.val );\r
+        p_rec-&gt;hop_flow_raw.bytes[3] = hop_limit;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rec\r
+               Pointer to the path record whose hop limit, flow label, and rab\r
+               traffic fields to set.\r
+\r
+       hop_limit\r
+               Hop limit to set in the path record.\r
+\r
+       flow_lbl\r
+               Flow label, in network byte order, to set in the path record.\r
+\r
+       raw\r
+               Boolean flag to indicate whether the path record is for raw traffic.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo927">ib_path_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo926">[Functions]<a name="IBA20Base3a20Types2fib5fpath5frec5fsl">\r
+IBA Base: Types/ib_path_rec_sl</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_path_rec_sl</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Get path service level.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_path_rec_sl</strong>(\r
+        IN              const   <a href="#robo927">ib_path_rec_t</a>* const            p_rec )\r
+{\r
+        return( (uint8_t)((<a href="../complib/cl_byteswap_h.html#robo287">cl_ntoh16</a>( p_rec-&gt;sl )) &amp; 0xF) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_rec\r
+               [in] Pointer to the path record object.\r
+\r
+ RETURN VALUES\r
+       Encoded path MTU.\r
+               1: 256\r
+               2: 512\r
+               3: 1024\r
+               4: 2048\r
+               5: 4096\r
+               others: reserved\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo927">ib_path_rec_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo927">[Structures]<a name="IBA20Base3a20Types2fib5fpath5frec5ft">\r
+IBA Base: Types/ib_path_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_path_rec_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Path records encapsulate the properties of a given\r
+       route between two end-points on a subnet.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef __declspec(align(8)) struct _ib_path_rec\r
+{\r
+        uint64_t                                resv0;\r
+        <a href="#robo856">ib_gid_t</a>                                dgid;\r
+        <a href="#robo856">ib_gid_t</a>                                sgid;\r
+        <a href="#robo893">ib_net16_t</a>                              dlid;\r
+        <a href="#robo893">ib_net16_t</a>                              slid;\r
+        <a href="#robo841">ib_field32_t</a>                    hop_flow_raw;\r
+        uint8_t                                 tclass;\r
+        uint8_t                                 num_path;\r
+        <a href="#robo893">ib_net16_t</a>                              pkey;\r
+        <a href="#robo893">ib_net16_t</a>                              sl;\r
+        uint8_t                                 mtu;\r
+        uint8_t                                 rate;\r
+        uint8_t                                 pkt_life;\r
+        uint8_t                                 preference;\r
+        uint16_t                                resv1;\r
+        uint32_t                                resv2;\r
+\r
+}       PACK_SUFFIX <strong>ib_path_rec_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       resv0\r
+               Reserved bytes.\r
+\r
+       dgid\r
+               GID of destination port.\r
+\r
+       sgid\r
+               GID of source port.\r
+\r
+       dlid\r
+               LID of destination port.\r
+\r
+       slid\r
+               LID of source port.\r
+\r
+       hop_flow_raw\r
+               Global routing parameters: hop count, flow label and raw bit.\r
+\r
+       tclass\r
+               Another global routing parameter.\r
+\r
+       num_path\r
+               In queries, maximum number of paths to return.\r
+               In responses, undefined.\r
+\r
+       pkey\r
+               Partition key (P_Key) to use on this path.\r
+\r
+       resv1\r
+               Reserved byte.\r
+\r
+       sl\r
+               Service level to use on this path.\r
+\r
+       mtu\r
+               MTU and MTU selector fields to use on this path\r
+\r
+       rate\r
+               Rate and rate selector fields to use on this path.\r
+\r
+       pkt_life\r
+               Packet lifetime\r
+\r
+       preference\r
+               Indicates the relative merit of this path versus other path\r
+               records returned from the SA.  Lower numbers are better.\r
+\r
+       resv1\r
+               Reserved bytes.\r
+\r
+       resv2\r
+               Reserved bytes.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo928">[Functions]<a name="IBA20Base3a20Types2fib5fpkey5fget5fbase">\r
+IBA Base: Types/ib_pkey_get_base</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pkey_get_base</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the base P_Key value with the membership bit stripped.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE <a href="#robo893">ib_net16_t</a> AL_API\r
+<strong>ib_pkey_get_base</strong>(\r
+        IN              const   <a href="#robo893">ib_net16_t</a>                                      pkey )\r
+{\r
+        return( (<a href="#robo893">ib_net16_t</a>)(pkey &amp; <a href="#robo812">IB_PKEY_BASE_MASK</a>) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       pkey\r
+               [in] P_Key value\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Returns the base P_Key value with the membership bit stripped.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo929">[Functions]<a name="IBA20Base3a20Types2fib5fpkey5fis5ffull5fmember">\r
+IBA Base: Types/ib_pkey_is_full_member</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pkey_is_full_member</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicitates if the port is a full member of the parition.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE boolean_t AL_API\r
+<strong>ib_pkey_is_full_member</strong>(\r
+        IN              const   <a href="#robo893">ib_net16_t</a>                                      pkey )\r
+{\r
+        return( (pkey &amp; <a href="#robo815">IB_PKEY_TYPE_MASK</a>) == <a href="#robo815">IB_PKEY_TYPE_MASK</a> );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       pkey\r
+               [in] P_Key value\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       TRUE if the port is a full member of the partition.\r
+       FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre> <a href="#robo928">ib_pkey_get_base</a>, <a href="#robo893">ib_net16_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo930">[Structures]<a name="IBA20Base3a20Types2fib5fpkey5ftable5finfo5ft">\r
+IBA Base: Types/ib_pkey_table_info_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_pkey_table_info_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined PKey table. (14.2.5.7)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#define PKEY_TABLE_MAX_ENTRIES          32\r
+\r
+#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_pkey_table_info\r
+{\r
+        <a href="#robo893">ib_net16_t</a>                      pkey[PKEY_TABLE_MAX_ENTRIES];\r
+\r
+}       PACK_SUFFIX <strong>ib_pkey_table_info_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo931">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fcompute5frate">\r
+IBA Base: Types/ib_port_info_compute_rate</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_compute_rate</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the encoded value for the path rate.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_port_info_compute_rate</strong>(\r
+        IN              const   <a href="#robo949">ib_port_info_t</a>* const           p_pi )\r
+{\r
+        switch( p_pi-&gt;link_width_active * p_pi-&gt;link_width_active *\r
+                <a href="#robo932">ib_port_info_get_link_speed_active</a>( p_pi ) )\r
+        {\r
+        case 1:\r
+                return IB_PATH_RECORD_RATE_2_5_GBS;\r
+\r
+        case 2:\r
+                return IB_PATH_RECORD_RATE_5_GBS;\r
+\r
+        case 4:\r
+                return IB_PATH_RECORD_RATE_10_GBS;\r
+\r
+        case 8:\r
+                return IB_PATH_RECORD_RATE_20_GBS;\r
+\r
+        case 16:\r
+                return IB_PATH_RECORD_RATE_40_GBS;\r
+\r
+        case 64:\r
+                return IB_PATH_RECORD_RATE_30_GBS;\r
+\r
+        case 128:\r
+                return IB_PATH_RECORD_RATE_60_GBS;\r
+\r
+        case 256:\r
+                return IB_PATH_RECORD_RATE_120_GBS;\r
+\r
+        default:\r
+                return IB_PATH_RECORD_RATE_2_5_GBS;\r
+        }\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+       Returns the encoded value for the link speed supported.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo932">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fget5flink5fspeed5factive">\r
+IBA Base: Types/ib_port_info_get_link_speed_active</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_get_link_speed_active</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the Link Speed Active value assigned to this port.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_port_info_get_link_speed_active</strong>(\r
+        IN              const   <a href="#robo949">ib_port_info_t</a>* const           p_pi )\r
+{\r
+        return( (uint8_t)((p_pi-&gt;link_speed &amp; IB_PORT_LINK_SPEED_ACTIVE_MASK) &gt;&gt;\r
+                IB_PORT_LINK_SPEED_SHIFT) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+       Returns the link speed active value assigned to this port.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo933">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fget5flink5fspeed5fsup">\r
+IBA Base: Types/ib_port_info_get_link_speed_sup</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_get_link_speed_sup</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the encoded value for the link speed supported.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_port_info_get_link_speed_sup</strong>(\r
+        IN              const   <a href="#robo949">ib_port_info_t</a>* const           p_pi )\r
+{\r
+        return( (uint8_t)((p_pi-&gt;state_info1 &amp;\r
+                        IB_PORT_LINK_SPEED_SUPPORTED_MASK) &gt;&gt;\r
+                        IB_PORT_LINK_SPEED_SHIFT) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+       Returns the encoded value for the link speed supported.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo934">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fget5flmc">\r
+IBA Base: Types/ib_port_info_get_lmc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_get_lmc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the LMC value assigned to this port.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_port_info_get_lmc</strong>(\r
+        IN              const   <a href="#robo949">ib_port_info_t</a>* const           p_pi )\r
+{\r
+        return( (uint8_t)(p_pi-&gt;mkey_lmc &amp; IB_PORT_LMC_MASK) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+       Returns the LMC value assigned to this port.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo935">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fget5fmpb">\r
+IBA Base: Types/ib_port_info_get_mpb</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_get_mpb</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the M_Key protect bits assigned to this port.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_port_info_get_mpb</strong>(\r
+        IN              const   <a href="#robo949">ib_port_info_t</a>* const           p_pi )\r
+{\r
+        return( (uint8_t)((p_pi-&gt;mkey_lmc &amp; IB_PORT_MPB_MASK) &gt;&gt;\r
+                        IB_PORT_MPB_SHIFT) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_ni\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+       Returns the M_Key protect bits assigned to this port.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo936">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fget5fmtu5fcap">\r
+IBA Base: Types/ib_port_info_get_mtu_cap</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_get_mtu_cap</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the encoded value for the maximum MTU supported by this port.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_port_info_get_mtu_cap</strong>(\r
+        IN              const   <a href="#robo949">ib_port_info_t</a>* const           p_pi )\r
+{\r
+        return( (uint8_t)(p_pi-&gt;mtu_cap &amp; 0x0F) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+       Returns the LMC value assigned to this port.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo937">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fget5fneighbor5fmtu">\r
+IBA Base: Types/ib_port_info_get_neighbor_mtu</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_get_neighbor_mtu</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the encoded value for the neighbor MTU at this port.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_port_info_get_neighbor_mtu</strong>(\r
+        IN const <a href="#robo949">ib_port_info_t</a>* const p_pi )\r
+{\r
+        return( (uint8_t)((p_pi-&gt;mtu_smsl &amp; 0xF0) &gt;&gt; 4) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+       Returns the encoded value for the neighbor MTU at this port.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo938">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fget5fop5fvls">\r
+IBA Base: Types/ib_port_info_get_op_vls</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_get_op_vls</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Gets the operational VLs on a port.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_port_info_get_op_vls</strong>(\r
+        IN const <a href="#robo949">ib_port_info_t</a>* const p_pi)\r
+{\r
+        return((p_pi-&gt;vl_enforce &gt;&gt; 4) &amp; 0x0F);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+       OP_VLS field\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo939">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fget5fport5fstate">\r
+IBA Base: Types/ib_port_info_get_port_state</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_get_port_state</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the port state.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_port_info_get_port_state</strong>(\r
+        IN              const   <a href="#robo949">ib_port_info_t</a>* const           p_pi )\r
+{\r
+        return( (uint8_t)(p_pi-&gt;state_info1 &amp; IB_PORT_STATE_MASK) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+       Port state.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo940">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fget5fvl5fcap">\r
+IBA Base: Types/ib_port_info_get_vl_cap</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_get_vl_cap</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Gets the VL Capability of a port.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_port_info_get_vl_cap</strong>(\r
+        IN const <a href="#robo949">ib_port_info_t</a>* const p_pi)\r
+{\r
+        return((p_pi-&gt;vl_cap &gt;&gt; 4) &amp; 0x0F);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+       VL_CAP field\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo941">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fset5flink5fspeed5fsup">\r
+IBA Base: Types/ib_port_info_set_link_speed_sup</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_set_link_speed_sup</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Given an integer of the supported link speed supported.\r
+       Set the appropriate bits in state_info1\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_port_info_set_link_speed_sup</strong>(\r
+        IN                              uint8_t const                           speed,\r
+        IN                              <a href="#robo949">ib_port_info_t</a>*                         p_pi )\r
+{\r
+        p_pi-&gt;state_info1 =\r
+                ( ~IB_PORT_LINK_SPEED_SUPPORTED_MASK &amp; p_pi-&gt;state_info1 ) |\r
+                ( IB_PORT_LINK_SPEED_SUPPORTED_MASK &amp;\r
+                        (speed &lt;&lt; IB_PORT_LINK_SPEED_SHIFT) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       speed\r
+               [in] Supported Speeds Code.\r
+\r
+       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo942">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fset5flmc">\r
+IBA Base: Types/ib_port_info_set_lmc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_set_lmc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the LMC value in the PortInfo attribute.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_port_info_set_lmc</strong>(\r
+        IN                              <a href="#robo949">ib_port_info_t</a>* const           p_pi,\r
+        IN              const   uint8_t                                         lmc )\r
+{\r
+        CL_ASSERT( lmc &lt;= 0x7 );\r
+        p_pi-&gt;mkey_lmc = (uint8_t)((p_pi-&gt;mkey_lmc &amp; 0xF8) | lmc);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+       lmc\r
+               [in] LMC value to set, must be less than 7.\r
+\r
+ RETURN VALUES\r
+       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo943">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fset5fmpb">\r
+IBA Base: Types/ib_port_info_set_mpb</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_set_mpb</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Set the M_Key protect bits of this port.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_port_info_set_mpb</strong>(\r
+        IN                              <a href="#robo949">ib_port_info_t</a>*                         p_pi,\r
+        IN                              uint8_t                                         mpb )\r
+{\r
+        p_pi-&gt;mkey_lmc =\r
+                ((p_pi-&gt;mkey_lmc &amp; ~IB_PORT_MPB_MASK) |\r
+                (mpb &lt;&lt; IB_PORT_MPB_SHIFT));\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       mpb\r
+               [in] M_Key protect bits\r
+       p_ni\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo944">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fset5fneighbor5fmtu">\r
+IBA Base: Types/ib_port_info_set_neighbor_mtu</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_set_neighbor_mtu</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the Neighbor MTU value in the PortInfo attribute.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_port_info_set_neighbor_mtu</strong>(\r
+        IN                              <a href="#robo949">ib_port_info_t</a>* const           p_pi,\r
+        IN              const   uint8_t                                         mtu )\r
+{\r
+        CL_ASSERT( mtu &lt;= 5 );\r
+        CL_ASSERT( mtu != 0 );\r
+        p_pi-&gt;mtu_smsl = (uint8_t)((p_pi-&gt;mtu_smsl &amp; 0x0F) | (mtu &lt;&lt; 4));\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+       mtu\r
+               [in] Encoded MTU value to set\r
+\r
+ RETURN VALUES\r
+       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo945">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fset5fop5fvls">\r
+IBA Base: Types/ib_port_info_set_op_vls</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_set_op_vls</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the operational VLs on a port.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_port_info_set_op_vls</strong>(\r
+        IN                              <a href="#robo949">ib_port_info_t</a>* const           p_pi,\r
+        IN              const   uint8_t                                         op_vls )\r
+{\r
+        p_pi-&gt;vl_enforce = (uint8_t)((p_pi-&gt;vl_enforce &amp; 0x0F) | (op_vls &lt;&lt; 4) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+       op_vls\r
+               [in] Encoded operation VLs value.\r
+\r
+ RETURN VALUES\r
+       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo946">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fset5fport5fstate">\r
+IBA Base: Types/ib_port_info_set_port_state</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_set_port_state</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the port state.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_port_info_set_port_state</strong>(\r
+        IN                              <a href="#robo949">ib_port_info_t</a>* const           p_pi,\r
+        IN              const   uint8_t                                         port_state )\r
+{\r
+        p_pi-&gt;state_info1 = (uint8_t)((p_pi-&gt;state_info1 &amp; 0xF0) | port_state );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+       port_state\r
+               [in] Port state value to set.\r
+\r
+ RETURN VALUES\r
+       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo947">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fset5fstate5fno5fchange">\r
+IBA Base: Types/ib_port_info_set_state_no_change</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_set_state_no_change</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the port state fields to the value for "no change".\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_port_info_set_state_no_change</strong>(\r
+        IN                              <a href="#robo949">ib_port_info_t</a>* const           p_pi )\r
+{\r
+        <a href="#robo946">ib_port_info_set_port_state</a>( p_pi, 0 );\r
+        p_pi-&gt;state_info2 = 0;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo948">[Functions]<a name="IBA20Base3a20Types2fib5fport5finfo5fset5ftimeout">\r
+IBA Base: Types/ib_port_info_set_timeout</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_set_timeout</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the encoded subnet timeout value in the PortInfo attribute.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_port_info_set_timeout</strong>(\r
+        IN                              <a href="#robo949">ib_port_info_t</a>* const           p_pi,\r
+        IN              const   uint8_t                                         timeout )\r
+{\r
+        CL_ASSERT( timeout &lt;= 0x1F );\r
+        p_pi-&gt;subnet_timeout = (uint8_t)(timeout &amp; 0x1F);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_pi\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+       timeout\r
+               [in] Encoded timeout value to set\r
+\r
+ RETURN VALUES\r
+       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo949">[Structures]<a name="IBA20Base3a20Types2fib5fport5finfo5ft">\r
+IBA Base: Types/ib_port_info_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_port_info_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined PortInfo. (14.2.5.6)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_port_info\r
+{\r
+        <a href="#robo895">ib_net64_t</a>                      m_key;\r
+        <a href="#robo895">ib_net64_t</a>                      subnet_prefix;\r
+        <a href="#robo893">ib_net16_t</a>                      base_lid;\r
+        <a href="#robo893">ib_net16_t</a>                      master_sm_base_lid;\r
+        <a href="#robo894">ib_net32_t</a>                      capability_mask;\r
+        <a href="#robo893">ib_net16_t</a>                      diag_code;\r
+        <a href="#robo893">ib_net16_t</a>                      m_key_lease_period;\r
+        uint8_t                         local_port_num;\r
+        uint8_t                         link_width_enabled;\r
+        uint8_t                         link_width_supported;\r
+        uint8_t                         link_width_active;\r
+        uint8_t                         state_info1; // LinkSpeedSupported and PortState\r
+        uint8_t                         state_info2; // PortPhysState and LinkDownDefaultState\r
+        uint8_t                         mkey_lmc;\r
+        uint8_t                         link_speed;      // LinkSpeedEnabled and LinkSpeedActive\r
+        uint8_t                         mtu_smsl;\r
+        uint8_t                         vl_cap;          // VlCap and InitType\r
+        uint8_t                         vl_high_limit;\r
+        uint8_t                         vl_arb_high_cap;\r
+        uint8_t                         vl_arb_low_cap;\r
+        uint8_t                         mtu_cap;\r
+        uint8_t                         vl_stall_life;\r
+        uint8_t                         vl_enforce;\r
+        <a href="#robo893">ib_net16_t</a>                      m_key_violations;\r
+        <a href="#robo893">ib_net16_t</a>                      p_key_violations;\r
+        <a href="#robo893">ib_net16_t</a>                      q_key_violations;\r
+        uint8_t                         guid_cap;\r
+        uint8_t                         subnet_timeout;\r
+        uint8_t                         resp_time_value;\r
+        uint8_t                         error_threshold;\r
+\r
+}       PACK_SUFFIX <strong>ib_port_info_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo950">[Functions]<a name="IBA20Base3a20Types2fib5frmpp5fis5fflag5fset">\r
+IBA Base: Types/ib_rmpp_is_flag_set</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_rmpp_is_flag_set</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns TRUE if the MAD has the given RMPP flag set.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE boolean_t AL_API\r
+<strong>ib_rmpp_is_flag_set</strong>(\r
+        IN              const   <a href="#robo951">ib_rmpp_mad_t</a>* const            p_rmpp_mad,\r
+        IN              const   uint8_t                                         flag )\r
+{\r
+        CL_ASSERT( p_rmpp_mad );\r
+        return( (p_rmpp_mad-&gt;rmpp_flags &amp; flag) == flag );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       <a href="#robo951">ib_rmpp_mad_t</a>\r
+               [in] Pointer to a MAD with an RMPP header.\r
+\r
+       flag\r
+               [in] The RMPP flag being examined.\r
+\r
+ RETURN VALUES\r
+       Returns TRUE if the MAD has the given RMPP flag set.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo882">ib_mad_t</a>, <a href="#robo951">ib_rmpp_mad_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo951">[Structures]<a name="IBA20Base3a20Types2fib5frmpp5fmad5ft">\r
+IBA Base: Types/ib_rmpp_mad_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_rmpp_mad_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined MAD RMPP header (13.6.2.1)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_rmpp_mad\r
+{\r
+        <a href="#robo882">ib_mad_t</a>                                common_hdr;\r
+\r
+        uint8_t                                 rmpp_version;\r
+        uint8_t                                 rmpp_type;\r
+        uint8_t                                 rmpp_flags;\r
+        uint8_t                                 rmpp_status;\r
+\r
+        <a href="#robo894">ib_net32_t</a>                              seg_num;\r
+        <a href="#robo894">ib_net32_t</a>                              paylen_newwin;\r
+\r
+}       PACK_SUFFIX <strong>ib_rmpp_mad_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo882">ib_mad_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo952">[Functions]<a name="IBA20Base3a20Types2fib5fsa5fmad5fget5fpayload5fptr">\r
+IBA Base: Types/ib_sa_mad_get_payload_ptr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_sa_mad_get_payload_ptr</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Gets a pointer to the SA MAD's payload area.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void* AL_API\r
+<strong>ib_sa_mad_get_payload_ptr</strong>(\r
+        IN              const   <a href="#robo953">ib_sa_mad_t</a>* const                      p_sa_mad )\r
+{\r
+        return( (void*)p_sa_mad-&gt;data );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_smp\r
+               [in] Pointer to the SA MAD packet.\r
+\r
+ RETURN VALUES\r
+       Pointer to SA MAD payload area.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo882">ib_mad_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo953">[Structures]<a name="IBA20Base3a20Types2fib5fsa5fmad5ft">\r
+IBA Base: Types/ib_sa_mad_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_sa_mad_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined SA MAD format. (15.2.1)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#define IB_SA_DATA_SIZE 200\r
+\r
+#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_sa_mad\r
+{\r
+        uint8_t                                 base_ver;\r
+        uint8_t                                 mgmt_class;\r
+        uint8_t                                 class_ver;\r
+        uint8_t                                 method;\r
+        <a href="#robo893">ib_net16_t</a>                              status;\r
+        <a href="#robo893">ib_net16_t</a>                              resv;\r
+        <a href="#robo895">ib_net64_t</a>                              trans_id;\r
+        <a href="#robo893">ib_net16_t</a>                              attr_id;\r
+        <a href="#robo893">ib_net16_t</a>                              resv1;\r
+        <a href="#robo894">ib_net32_t</a>                              attr_mod;\r
+\r
+        uint8_t                                 rmpp_version;\r
+        uint8_t                                 rmpp_type;\r
+        uint8_t                                 rmpp_flags;\r
+        uint8_t                                 rmpp_status;\r
+\r
+        <a href="#robo894">ib_net32_t</a>                              seg_num;\r
+        <a href="#robo894">ib_net32_t</a>                              paylen_newwin;\r
+\r
+        <a href="#robo895">ib_net64_t</a>                              sm_key;\r
+\r
+        <a href="#robo893">ib_net16_t</a>                              attr_offset;\r
+        <a href="#robo893">ib_net16_t</a>                              resv3;\r
+\r
+        <a href="#robo895">ib_net64_t</a>                              comp_mask;\r
+\r
+        uint8_t                                 data[IB_SA_DATA_SIZE];\r
+}       PACK_SUFFIX <strong>ib_sa_mad_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo954">[Functions]<a name="IBA20Base3a20Types2fib5fslvl5ftable5fget5fvl">\r
+IBA Base: Types/ib_slvl_table_get_vl</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_slvl_table_get_vl</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the VL for a given SL from an SL to VL mapping table.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_slvl_table_get_vl</strong>(\r
+        IN              const   <a href="#robo957">ib_slvl_table_t</a>* const          p_slvl_tbl,\r
+        IN              const   uint8_t                                         sl )\r
+{\r
+        uint8_t vl;\r
+\r
+        /* There are two VL's per byte. */\r
+        vl = p_slvl_tbl-&gt;vl_table[sl/2];\r
+        /* If odd, shift down 4 bits. */\r
+        if( sl % 2 )\r
+                vl &gt;&gt;= 4;\r
+\r
+        /* Mask off upper bits and return. */\r
+        return vl &amp; 0x0F;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_slvl_tbl\r
+               [in] Pointer to the SL to VL mapping table from which to return the VL.\r
+\r
+       sl\r
+               [in] SL in the table for which to return the VL.\r
+\r
+ RETURN VALUES\r
+       Returns the VL value for the specified SL in the provided table.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo957">ib_slvl_table_t</a>, <a href="#robo956">ib_slvl_table_set_vl</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo955">[Structures]<a name="IBA20Base3a20Types2fib5fslvl5ftable5frecord5ft">\r
+IBA Base: Types/ib_slvl_table_record_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_slvl_table_record_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined Sl to VL Mapping Table Record for SA Query. (15.2.5.4)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_slvl_table_record\r
+{\r
+        <a href="#robo893">ib_net16_t</a>              lid; // for CA: lid of port, for switch lid of port 0\r
+        uint8_t                 in_port_num;    // reserved for CA's\r
+        uint8_t                 out_port_num;   // reserved for CA's\r
+        uint32_t                resv;\r
+        <a href="#robo957">ib_slvl_table_t</a> slvl_tbl;\r
+\r
+}       PACK_SUFFIX <strong>ib_slvl_table_record_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo956">[Functions]<a name="IBA20Base3a20Types2fib5fslvl5ftable5fset5fvl">\r
+IBA Base: Types/ib_slvl_table_set_vl</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_slvl_table_set_vl</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the VL for a given SL in an SL to VL mapping table.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_slvl_table_set_vl</strong>(\r
+        IN      OUT                     <a href="#robo957">ib_slvl_table_t</a>* const          p_slvl_tbl,\r
+        IN              const   uint8_t                                         sl,\r
+        IN              const   uint8_t                                         vl )\r
+{\r
+        uint8_t entry;\r
+\r
+        /* Get the current value for the byte in which the VL is stored. */\r
+        entry = p_slvl_tbl-&gt;vl_table[sl/2];\r
+\r
+        /* Clear the appropriate bits and set the new VL value. */\r
+        if( sl % 2 )\r
+        {\r
+                entry &amp;= 0x0F;\r
+                entry |= ((vl &amp; 0x0F) &lt;&lt; 4);\r
+        }\r
+        else\r
+        {\r
+                entry &amp;= 0xF0;\r
+                entry |= (vl &amp; 0x0F);\r
+        }\r
+        /* Store the updated entry back into the table. */\r
+        p_slvl_tbl-&gt;vl_table[sl/2] = entry;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       slvl_tbl\r
+               [in/out] Pointer to the SL to VL mapping table in which to store the VL.\r
+\r
+       sl\r
+               [in] SL in the table for which to store the VL.\r
+\r
+       vl\r
+               [in] VL to store at the specifed SL.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo957">ib_slvl_table_t</a>, <a href="#robo954">ib_slvl_table_get_vl</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo957">[Structures]<a name="IBA20Base3a20Types2fib5fslvl5ftable5ft">\r
+IBA Base: Types/ib_slvl_table_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_slvl_table_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined SL2VL Mapping Table Attribute. (14.2.5.8)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_slvl_table\r
+{\r
+        uint8_t         vl_table[IB_MAX_NUM_VLS/2];\r
+\r
+}       PACK_SUFFIX <strong>ib_slvl_table_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo958">[Structures]<a name="IBA20Base3a20Types2fib5fsm5finfo5ft">\r
+IBA Base: Types/ib_sm_info_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_sm_info_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       SMInfo structure (14.2.5.13).\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_sm_info\r
+{\r
+        <a href="#robo895">ib_net64_t</a>                      guid;\r
+        <a href="#robo895">ib_net64_t</a>                      sm_key;\r
+        <a href="#robo894">ib_net32_t</a>                      act_count;\r
+        uint8_t                         pri_state;\r
+\r
+}       PACK_SUFFIX <strong>ib_sm_info_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       guid\r
+               Port GUID for this SM.\r
+\r
+       sm_key\r
+               SM_Key of this SM.\r
+\r
+       act_count\r
+               Activity counter used as a heartbeat.\r
+\r
+       pri_state\r
+               Priority and State information\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo959">[Functions]<a name="IBA20Base3a20Types2fib5fsminfo5fget5fpriority">\r
+IBA Base: Types/ib_sminfo_get_priority</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_sminfo_get_priority</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the priority value.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_sminfo_get_priority</strong>(\r
+        IN              const   <a href="#robo958">ib_sm_info_t</a>* const                     p_smi )\r
+{\r
+        return( (uint8_t)((p_smi-&gt;pri_state &amp; 0xF0)&gt;&gt;4) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_smi\r
+               [in] Pointer to the SMInfo Attribute.\r
+\r
+ RETURN VALUES\r
+       Returns the priority value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo960">[Functions]<a name="IBA20Base3a20Types2fib5fsminfo5fget5fstate">\r
+IBA Base: Types/ib_sminfo_get_state</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_sminfo_get_state</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the state value.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_sminfo_get_state</strong>(\r
+        IN              const   <a href="#robo958">ib_sm_info_t</a>* const                     p_smi )\r
+{\r
+        return( (uint8_t)(p_smi-&gt;pri_state &amp; 0x0F) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_smi\r
+               [in] Pointer to the SMInfo Attribute.\r
+\r
+ RETURN VALUES\r
+       Returns the state value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo961">[Functions]<a name="IBA20Base3a20Types2fib5fsmp5fget5fpayload5fptr">\r
+IBA Base: Types/ib_smp_get_payload_ptr</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_smp_get_payload_ptr</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Gets a pointer to the SMP payload area.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void* AL_API\r
+<strong>ib_smp_get_payload_ptr</strong>(\r
+        IN              const   <a href="#robo966">ib_smp_t</a>* const                         p_smp )\r
+{\r
+        return( (void*)p_smp-&gt;data );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_smp\r
+               [in] Pointer to the SMP packet.\r
+\r
+ RETURN VALUES\r
+       Pointer to SMP payload area.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo882">ib_mad_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo962">[Functions]<a name="IBA20Base3a20Types2fib5fsmp5fget5fstatus">\r
+IBA Base: Types/ib_smp_get_status</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_smp_get_status</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the SMP status value in network order.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE <a href="#robo893">ib_net16_t</a> AL_API\r
+<strong>ib_smp_get_status</strong>(\r
+        IN              const   <a href="#robo966">ib_smp_t</a>* const                         p_smp )\r
+{\r
+        return( (<a href="#robo893">ib_net16_t</a>)(p_smp-&gt;status &amp; <a href="#robo828">IB_SMP_STATUS_MASK</a>) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_smp\r
+               [in] Pointer to the SMP packet.\r
+\r
+ RETURN VALUES\r
+       Returns the SMP status value in network order.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo966">ib_smp_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo963">[Functions]<a name="IBA20Base3a20Types2fib5fsmp5finit5fnew">\r
+IBA Base: Types/ib_smp_init_new</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_smp_init_new</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Initializes a MAD common header.\r
+</pre>\r
+</span><p><strong>TODO</strong></p>\r
+<span class="TODO"><pre>       This is too big for inlining, but leave it here for now\r
+       since there is not yet another convient spot.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_smp_init_new</strong>(\r
+        IN                              <a href="#robo966">ib_smp_t</a>* const                         p_smp,\r
+        IN              const   uint8_t                                         method,\r
+        IN              const   <a href="#robo895">ib_net64_t</a>                                      trans_id,\r
+        IN              const   <a href="#robo893">ib_net16_t</a>                                      attr_id,\r
+        IN              const   <a href="#robo894">ib_net32_t</a>                                      attr_mod,\r
+        IN              const   uint8_t                                         hop_count,\r
+        IN              const   <a href="#robo895">ib_net64_t</a>                                      m_key,\r
+        IN              const   uint8_t*                                        path_out,\r
+        IN              const   <a href="#robo893">ib_net16_t</a>                                      dr_slid,\r
+        IN              const   <a href="#robo893">ib_net16_t</a>                                      dr_dlid )\r
+{\r
+        CL_ASSERT( p_smp );\r
+        CL_ASSERT( hop_count &lt; <a href="#robo829">IB_SUBNET_PATH_HOPS_MAX</a> );\r
+        p_smp-&gt;base_ver = 1;\r
+        p_smp-&gt;mgmt_class = <a href="#robo794">IB_MCLASS_SUBN_DIR</a>;\r
+        p_smp-&gt;class_ver = 1;\r
+        p_smp-&gt;method = method;\r
+        p_smp-&gt;status = 0;\r
+        p_smp-&gt;hop_ptr = 0;\r
+        p_smp-&gt;hop_count = hop_count;\r
+        p_smp-&gt;trans_id = trans_id;\r
+        p_smp-&gt;attr_id = attr_id;\r
+        p_smp-&gt;resv = 0;\r
+        p_smp-&gt;attr_mod = attr_mod;\r
+        p_smp-&gt;m_key = m_key;\r
+        p_smp-&gt;dr_slid = dr_slid;\r
+        p_smp-&gt;dr_dlid = dr_dlid;\r
+\r
+        <a href="../complib/cl_memory_h.html#robo429">cl_memclr</a>( p_smp-&gt;resv1,\r
+                        sizeof(p_smp-&gt;resv1) +\r
+                        sizeof(p_smp-&gt;data) +\r
+                        sizeof(p_smp-&gt;initial_path) +\r
+                        sizeof(p_smp-&gt;return_path) );\r
+\r
+        /* copy the path */\r
+        <a href="../complib/cl_memory_h.html#robo431">cl_memcpy</a>( &amp;p_smp-&gt;initial_path, path_out,\r
+                        sizeof( p_smp-&gt;initial_path ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_smp\r
+               [in] Pointer to the SMP packet.\r
+\r
+       method\r
+               [in] Method to perform, including 'R' bit.\r
+\r
+       trans_Id\r
+               [in] Transaction ID.\r
+\r
+       attr_id\r
+               [in] Attribute ID.\r
+\r
+       attr_mod\r
+               [in] Attribute modifier.\r
+\r
+       hop_count\r
+               [in] Number of hops in the path.\r
+\r
+       m_key\r
+               [in] Management key for this SMP.\r
+\r
+       path_out\r
+               [in] Port array for outbound path.\r
+\r
+\r
+ RETURN VALUES\r
+       None.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Payload area is initialized to zero.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo882">ib_mad_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo964">[Functions]<a name="IBA20Base3a20Types2fib5fsmp5fis5fd">\r
+IBA Base: Types/ib_smp_is_d</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_smp_is_d</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns TRUE if the SMP 'D' (direction) bit is set.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE boolean_t AL_API\r
+<strong>ib_smp_is_d</strong>(\r
+        IN              const   <a href="#robo966">ib_smp_t</a>* const                         p_smp )\r
+{\r
+        return( (p_smp-&gt;status &amp; <a href="#robo827">IB_SMP_DIRECTION</a>) == <a href="#robo827">IB_SMP_DIRECTION</a> );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_smp\r
+               [in] Pointer to the SMP packet.\r
+\r
+ RETURN VALUES\r
+       Returns TRUE if the SMP 'D' (direction) bit is set.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo966">ib_smp_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo965">[Functions]<a name="IBA20Base3a20Types2fib5fsmp5fis5fresponse">\r
+IBA Base: Types/ib_smp_is_response</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_smp_is_response</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns TRUE if the SMP is a response MAD, FALSE otherwise.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE boolean_t AL_API\r
+<strong>ib_smp_is_response</strong>(\r
+        IN              const   <a href="#robo966">ib_smp_t</a>* const                         p_smp )\r
+{\r
+        return( <a href="#robo881">ib_mad_is_response</a>( (const <a href="#robo882">ib_mad_t</a>*)p_smp ) );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_smp\r
+               [in] Pointer to the SMP packet.\r
+\r
+ RETURN VALUES\r
+       Returns TRUE if the SMP is a response MAD, FALSE otherwise.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo966">ib_smp_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo966">[Structures]<a name="IBA20Base3a20Types2fib5fsmp5ft">\r
+IBA Base: Types/ib_smp_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_smp_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined SMP. (14.2.1.2)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#define IB_SMP_DATA_SIZE 64\r
+#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_smp\r
+{\r
+        uint8_t                                 base_ver;\r
+        uint8_t                                 mgmt_class;\r
+        uint8_t                                 class_ver;\r
+        uint8_t                                 method;\r
+        <a href="#robo893">ib_net16_t</a>                              status;\r
+        uint8_t                                 hop_ptr;\r
+        uint8_t                                 hop_count;\r
+        <a href="#robo895">ib_net64_t</a>                              trans_id;\r
+        <a href="#robo893">ib_net16_t</a>                              attr_id;\r
+        <a href="#robo893">ib_net16_t</a>                              resv;\r
+        <a href="#robo894">ib_net32_t</a>                              attr_mod;\r
+        <a href="#robo895">ib_net64_t</a>                              m_key;\r
+        <a href="#robo893">ib_net16_t</a>                              dr_slid;\r
+        <a href="#robo893">ib_net16_t</a>                              dr_dlid;\r
+        uint32_t                                resv1[7];\r
+        uint8_t                                 data[IB_SMP_DATA_SIZE];\r
+        uint8_t                                 initial_path[<a href="#robo829">IB_SUBNET_PATH_HOPS_MAX</a>];\r
+        uint8_t                                 return_path[<a href="#robo829">IB_SUBNET_PATH_HOPS_MAX</a>];\r
+\r
+}       PACK_SUFFIX <strong>ib_smp_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       base_ver\r
+               MAD base format.\r
+\r
+       mgmt_class\r
+               Class of operation.\r
+\r
+       class_ver\r
+               Version of MAD class-specific format.\r
+\r
+       method\r
+               Method to perform, including 'R' bit.\r
+\r
+       status\r
+               Status of operation.\r
+\r
+       hop_ptr\r
+               Hop pointer for directed route MADs.\r
+\r
+       hop_count\r
+               Hop count for directed route MADs.\r
+\r
+       trans_Id\r
+               Transaction ID.\r
+\r
+       attr_id\r
+               Attribute ID.\r
+\r
+       resv\r
+               Reserved field.\r
+\r
+       attr_mod\r
+               Attribute modifier.\r
+\r
+       m_key\r
+               Management key value.\r
+\r
+       dr_slid\r
+               Directed route source LID.\r
+\r
+       dr_dlid\r
+               Directed route destination LID.\r
+\r
+       resv0\r
+               Reserved for 64 byte alignment.\r
+\r
+       data\r
+               MAD data payload.\r
+\r
+       initial_path\r
+               Outbound port list.\r
+\r
+       return_path\r
+               Inbound port list.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo967">[Structures]<a name="IBA20Base3a20Types2fib5fsvc5fentries5ft">\r
+IBA Base: Types/ib_svc_entries_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_svc_entries_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined IO Controller service entry array (16.3.3.5)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_svc_entries\r
+{\r
+#define SVC_ENTRY_COUNT                         4\r
+        <a href="#robo968">ib_svc_entry_t</a>                  service_entry[SVC_ENTRY_COUNT];\r
+\r
+}       PACK_SUFFIX <strong>ib_svc_entries_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       service_entry\r
+               An array of IO controller service entries.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre> <a href="#robo840">ib_dm_mad_t</a>, <a href="#robo968">ib_svc_entry_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo968">[Structures]<a name="IBA20Base3a20Types2fib5fsvc5fentry5ft">\r
+IBA Base: Types/ib_svc_entry_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_svc_entry_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined IO Controller service entry structure (16.3.3.5)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_svc_entry\r
+{\r
+#define MAX_SVC_ENTRY_NAME_LEN          40\r
+        char                                    name[MAX_SVC_ENTRY_NAME_LEN];\r
+\r
+        <a href="#robo895">ib_net64_t</a>                              id;\r
+\r
+}       PACK_SUFFIX <strong>ib_svc_entry_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       name\r
+               UTF-8 encoded, null-terminated name of the service.\r
+\r
+       id\r
+               An identifier of the associated Service.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre> <a href="#robo967">ib_svc_entries_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo969">[Functions]<a name="IBA20Base3a20Types2fib5fswitch5finfo5fclear5fstate5fchange">\r
+IBA Base: Types/ib_switch_info_clear_state_change</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_switch_info_clear_state_change</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Clears the switch's state change bit.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_switch_info_clear_state_change</strong>(\r
+        IN                              <a href="#robo971">ib_switch_info_t</a>* const         p_si )\r
+{\r
+        p_si-&gt;life_state = (uint8_t)(p_si-&gt;life_state &amp; 0xFB);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_ni\r
+               [in] Pointer to a PortInfo attribute.\r
+\r
+ RETURN VALUES\r
+       Returns the LMC value assigned to this port.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo970">[Functions]<a name="IBA20Base3a20Types2fib5fswitch5finfo5fget5fstate5fchange">\r
+IBA Base: Types/ib_switch_info_get_state_change</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_switch_info_get_state_change</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the value of the state change flag.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE boolean_t AL_API\r
+<strong>ib_switch_info_get_state_change</strong>(\r
+        IN              const   <a href="#robo971">ib_switch_info_t</a>* const         p_si )\r
+{\r
+        return( (p_si-&gt;life_state &amp; IB_SWITCH_PSC) == IB_SWITCH_PSC );\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_si\r
+               [in] Pointer to a SwitchInfo attribute.\r
+\r
+ RETURN VALUES\r
+       Returns the value of the state change flag.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"></span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"></span>\r
+<hr />\r
+\r
+<h2><a name="robo971">[Structures]<a name="IBA20Base3a20Types2fib5fswitch5finfo5ft">\r
+IBA Base: Types/ib_switch_info_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_switch_info_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined SwitchInfo. (14.2.5.4)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_switch_info\r
+{\r
+        <a href="#robo893">ib_net16_t</a>                      lin_cap;\r
+        <a href="#robo893">ib_net16_t</a>                      rand_cap;\r
+        <a href="#robo893">ib_net16_t</a>                      mcast_cap;\r
+        <a href="#robo893">ib_net16_t</a>                      lin_top;\r
+        uint8_t                         def_port;\r
+        uint8_t                         def_mcast_pri_port;\r
+        uint8_t                         def_mcast_not_port;\r
+        uint8_t                         life_state;\r
+        <a href="#robo893">ib_net16_t</a>                      lids_per_port;\r
+        <a href="#robo893">ib_net16_t</a>                      enforce_cap;\r
+        uint8_t                         flags;\r
+\r
+}       PACK_SUFFIX <strong>ib_switch_info_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo972">[Functions]<a name="IBA20Base3a20Types2fib5fvl5farb5felement5fget5fvl">\r
+IBA Base: Types/ib_vl_arb_element_get_vl</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_vl_arb_element_get_vl</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the VL from a VL arbitration table element.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ib_vl_arb_element_get_vl</strong>(\r
+        IN              const   <a href="#robo974">ib_vl_arb_element_t</a>                     vl_arb_element )\r
+{\r
+        return (vl_arb_element.res_vl &gt;&gt; 4);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       vl_arb_element\r
+               [in] VL arbitration table element from which to return the VL.\r
+\r
+ RETURN VALUES\r
+       Returns the VL value for the specified VL arbitration table element.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       vl_arb_element, <a href="#robo973">ib_vl_arb_element_set_vl</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo973">[Functions]<a name="IBA20Base3a20Types2fib5fvl5farb5felement5fset5fvl">\r
+IBA Base: Types/ib_vl_arb_element_set_vl</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_vl_arb_element_set_vl</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Retrieves the VL from a VL arbitration table element.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE void AL_API\r
+<strong>ib_vl_arb_element_set_vl</strong>(\r
+        IN      OUT                     <a href="#robo974">ib_vl_arb_element_t</a>* const      p_vl_arb_element,\r
+        IN              const   uint8_t                                         vl )\r
+{\r
+        p_vl_arb_element-&gt;res_vl = vl &lt;&lt; 4;\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       vl_arb_element\r
+               [in/out] VL arbitration table element in which to store the VL.\r
+\r
+       vl\r
+               [in] VL to store in the specified element.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       vl_arb_element, <a href="#robo972">ib_vl_arb_element_get_vl</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo974">[Structures]<a name="IBA20Base3a20Types2fib5fvl5farb5felement5ft">\r
+IBA Base: Types/ib_vl_arb_element_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_vl_arb_element_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined VL Arbitration Table Element. (14.2.5.9)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_vl_arb_element\r
+{\r
+        uint8_t res_vl;\r
+        uint8_t weight;\r
+\r
+}       PACK_SUFFIX <strong>ib_vl_arb_element_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo975">[Structures]<a name="IBA20Base3a20Types2fib5fvl5farb5ftable5frecord5ft">\r
+IBA Base: Types/ib_vl_arb_table_record_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_vl_arb_table_record_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined VL Arbitration Table Record for SA Query. (15.2.5.9)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_vl_arb_table_record\r
+{\r
+        <a href="#robo893">ib_net16_t</a>                      lid; // for CA: lid of port, for switch lid of port 0\r
+        uint8_t                         port_num;\r
+        uint8_t                         block_num;\r
+        uint32_t                        reserved;\r
+        <a href="#robo976">ib_vl_arb_table_t</a>       vl_arb_tbl;\r
+\r
+}       PACK_SUFFIX <strong>ib_vl_arb_table_record_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo976">[Structures]<a name="IBA20Base3a20Types2fib5fvl5farb5ftable5ft">\r
+IBA Base: Types/ib_vl_arb_table_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_vl_arb_table_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       IBA defined VL Arbitration Table. (14.2.5.9)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>#include &lt;complib/cl_packon.h&gt;\r
+typedef struct _ib_vl_arb_table\r
+{\r
+        <a href="#robo974">ib_vl_arb_element_t</a> vl_entry[IB_NUM_VL_ARB_ELEMENTS_IN_BLOCK];\r
+\r
+}       PACK_SUFFIX <strong>ib_vl_arb_table_t</strong>;\r
+#include &lt;complib/cl_packoff.h&gt;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo977">[Functions]<a name="IBA20Base3a20Types2fioc5fat5fslot">\r
+IBA Base: Types/ioc_at_slot</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ioc_at_slot</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the IOC value at the specified slot.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>AL_INLINE uint8_t AL_API\r
+<strong>ioc_at_slot</strong>(\r
+        IN              const   <a href="#robo877">ib_iou_info_t</a>*  const   p_iou_info,\r
+        IN                              uint8_t                                 slot )\r
+{\r
+        if( !slot )\r
+                return SLOT_DOES_NOT_EXIST;\r
+        else if( slot-- &amp; 0x01 )\r
+                return (p_iou_info-&gt;controller_list[slot &gt;&gt; 1] &gt;&gt; 4);\r
+        else\r
+                return (p_iou_info-&gt;controller_list[slot &gt;&gt; 1] &amp; 0x0F);\r
+}\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_iou_info\r
+               [in] Pointer to the IO Unit information structure.\r
+\r
+       slot\r
+               [in] 1-based slot number of the IOC slot to check.\r
+\r
+ RETURN VALUES\r
+       Returns the encoded value for the desired slot.  Possible values are\r
+       SLOT_DOES_NOT_EXIST, IOC_NOT_INSTALLED, and IOC_INSTALLED.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The input slot number is 1-based, not zero based.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo877">ib_iou_info_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo978">[Functions]<a name="IBA20Bases3a20Types2fib5fdm5fget5fslot5flo5fhi">\r
+IBA Bases: Types/ib_dm_get_slot_lo_hi</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the IOC slot number, and the lower and upper bound of the\r
+       service entries given the attribute modifier of ServiceEntries response.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre> <a href="#robo979">ib_dm_set_slot_lo_hi</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo979">[Functions]<a name="IBA20Bases3a20Types2fib5fdm5fset5fslot5flo5fhi">\r
+IBA Bases: Types/ib_dm_set_slot_lo_hi</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../robo_functions.html#top">index</a>]</p>\r
+<p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Joins the IOC slot number, and the lower and upper bound of the service \r
+       entries and returns it.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre> <a href="#robo978">ib_dm_get_slot_lo_hi</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1155">[Definitions]<a name="Verbs2fib5fasync5fevent5ft">\r
+Verbs/ib_async_event_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="./ib_ci_h.html#robo39">parent</a>][<a href="../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_async_event_t</strong> -- Async event types\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This type indicates the reason the async callback was called.\r
+       The context in the <a href="#robo1157">ib_event_rec_t</a> indicates the resource context\r
+       that associated with the callback.  For example, for IB_AE_CQ_ERROR\r
+       the context provided during the <a href="./ib_al_h.html#robo105">ib_create_cq</a> is returned in the event.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _<strong>ib_async_event_t</strong>\r
+{\r
+        IB_AE_SQ_ERROR = 1,\r
+        IB_AE_SQ_DRAINED,\r
+        IB_AE_RQ_ERROR,\r
+        IB_AE_CQ_ERROR,\r
+        IB_AE_QP_FATAL,\r
+        IB_AE_QP_COMM,\r
+        IB_AE_QP_APM,\r
+        IB_AE_LOCAL_FATAL,\r
+        IB_AE_PKEY_TRAP,\r
+        IB_AE_QKEY_TRAP,\r
+        IB_AE_MKEY_TRAP,\r
+        IB_AE_PORT_TRAP,\r
+        IB_AE_SYSIMG_GUID_TRAP,\r
+        IB_AE_BUF_OVERRUN,\r
+        IB_AE_LINK_INTEGRITY,\r
+        IB_AE_FLOW_CTRL_ERROR,\r
+        IB_AE_BKEY_TRAP,\r
+        IB_AE_QP_APM_ERROR,\r
+        IB_AE_WQ_REQ_ERROR,\r
+        IB_AE_WQ_ACCESS_ERROR,\r
+        IB_AE_PORT_ACTIVE,\r
+        IB_AE_PORT_DOWN,\r
+        IB_AE_CLIENT_REREGISTER,\r
+        IB_AE_UNKNOWN           /* ALWAYS LAST ENUM VALUE */\r
+\r
+}       <strong>ib_async_event_t</strong>;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       IB_AE_SQ_ERROR\r
+               An error occurred when accessing the send queue of the QP.\r
+               This event is optional.\r
+\r
+       IB_AE_SQ_DRAINED\r
+               The send queue of the specified QP has completed the outstanding\r
+               messages in progress when the state change was requested and, if\r
+               applicable, has received all acknowledgements for those messages.\r
+\r
+       IB_AE_RQ_ERROR\r
+               An error occurred when accessing the receive queue of the QP.\r
+               This event is optional.\r
+\r
+       IB_AE_CQ_ERROR\r
+               An error occurred when writing an entry to the CQ.\r
+\r
+       IB_AE_QP_FATAL\r
+               A catastrophic error occurred while accessing or processing the\r
+               work queue that prevents reporting of completions.\r
+\r
+       IB_AE_QP_COMM\r
+               The first packet has arrived for the receive work queue where the\r
+               QP is still in the RTR state.\r
+\r
+       IB_AE_QP_APM\r
+               If alternate path migration is supported, this event indicates that\r
+               the QP connection has migrated to the alternate path.\r
+\r
+       IB_AE_LOCAL_FATAL\r
+               A catastrophic HCA error occurred which cannot be attributed to any\r
+               resource; behavior is indeterminate.\r
+\r
+       IB_AE_PKEY_TRAP\r
+               A PKEY violation was detected.  This event is optional.\r
+\r
+       IB_AE_QKEY_TRAP\r
+               A QKEY violation was detected.  This event is optional.\r
+\r
+       IB_AE_MKEY_TRAP\r
+               An MKEY violation was detected.  This event is optional.\r
+\r
+       IB_AE_PORT_TRAP\r
+               A port capability change was detected.  This event is optional.\r
+\r
+       IB_AE_SYSIMG_GUID_TRAP\r
+               If the system image GUID is supported, this event indicates that the\r
+               system image GUID of this HCA has been changed.  This event is\r
+               optional.\r
+\r
+       IB_AE_BUF_OVERRUN\r
+               The number of consecutive flow control update periods with at least\r
+               one overrun error in each period has exceeded the threshold specified\r
+               in the port info attributes.  This event is optional.\r
+\r
+       IB_AE_LINK_INTEGRITY\r
+               The detection of excessively frequent local physical errors has\r
+               exceeded the threshold specified in the port info attributes.  This\r
+               event is optional.\r
+\r
+       IB_AE_FLOW_CTRL_ERROR\r
+               An HCA watchdog timer monitoring the arrival of flow control updates\r
+               has expired without receiving an update.  This event is optional.\r
+\r
+       IB_AE_BKEY_TRAP\r
+               An BKEY violation was detected.  This event is optional.\r
+\r
+       IB_AE_QP_APM_ERROR\r
+               If alternate path migration is supported, this event indicates that\r
+               an incoming path migration request to this QP was not accepted.\r
+\r
+       IB_AE_WQ_REQ_ERROR\r
+               An OpCode violation was detected at the responder.\r
+\r
+       IB_AE_WQ_ACCESS_ERROR\r
+               An access violation was detected at the responder.\r
+\r
+       IB_AE_PORT_ACTIVE\r
+               If the port active event is supported, this event is generated\r
+               when the link becomes active: IB_LINK_ACTIVE.\r
+\r
+       IB_AE_PORT_DOWN\r
+               The link is declared unavailable: IB_LINK_INIT, IB_LINK_ARMED,\r
+               IB_LINK_DOWN.\r
+\r
+       IB_AE_CLIENT_REREGISTER\r
+               The SM idicate to client to reregister its SA records.\r
+\r
+       IB_AE_UNKNOWN\r
+               An unknown error occurred which cannot be attributed to any\r
+               resource; behavior is indeterminate.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1157">[Structures]<a name="Verbs2fib5fevent5frec5ft">\r
+Verbs/ib_event_rec_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="./ib_ci_h.html#robo39">parent</a>][<a href="../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_event_rec_t</strong> -- Async event notification record\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       When an async event callback is made, this structure is passed to indicate\r
+       the type of event, the source of event that caused it, and the context\r
+       associated with this event.\r
+\r
+       context -- Context of the resource that caused the event.\r
+               -- ca_context if this is a port/adapter event.\r
+               -- qp_context if the source is a QP event\r
+               -- cq_context if the source is a CQ event.\r
+               -- ee_context if the source is an EE event.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _ib_event_rec\r
+{\r
+        void* __ptr64                   context;\r
+        <a href="#robo1155">ib_async_event_t</a>                type;\r
+\r
+        /* HCA vendor specific event information. */\r
+        uint64_t                                vendor_specific;\r
+\r
+        /* The following structures are valid only for trap types. */\r
+        union _trap\r
+        {\r
+                struct\r
+                {\r
+                        uint16_t                        lid;\r
+                        <a href="#robo895">ib_net64_t</a>                      port_guid;\r
+                        uint8_t                         port_num;\r
+\r
+                        /*\r
+                         * The following structure is valid only for\r
+                         * P_KEY, Q_KEY, and M_KEY violation traps.\r
+                         */\r
+                        struct\r
+                        {\r
+                                uint8_t                 sl;\r
+                                uint16_t                src_lid;\r
+                                uint16_t                dest_lid;\r
+                                union _key\r
+                                {\r
+                                        uint16_t        pkey;\r
+                                        uint32_t        qkey;\r
+                                        uint64_t        mkey;\r
+                                } key;\r
+                                uint32_t                src_qp;\r
+                                uint32_t                dest_qp;\r
+                                <a href="#robo856">ib_gid_t</a>                src_gid;\r
+                                <a href="#robo856">ib_gid_t</a>                dest_gid;\r
+\r
+                        }       violation;\r
+\r
+                } info;\r
+\r
+                <a href="#robo895">ib_net64_t</a>      sysimg_guid;\r
+\r
+        }       trap;\r
+\r
+}       <strong>ib_event_rec_t</strong>;\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/kernel/complib/cl_bus_ifc_h.html b/trunk/docs/kernel/complib/cl_bus_ifc_h.html
new file mode 100644 (file)
index 0000000..0e2d381
--- /dev/null
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../../robodoc.css" type="text/css">\r
+<title>./inc_doc/kernel/complib/cl_bus_ifc_h.html</title>\r
+<!-- Source: ./inc/kernel/complib/cl_bus_ifc.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/kernel/complib/cl_bus_ifc.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo488">[Functions]<a name="Component20Library3a20Plug20and20Play2fcl5ffwd5fquery5fifc">\r
+Component Library: Plug and Play/cl_fwd_query_ifc</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_fwd_query_ifc</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Forwards a IRP_MN_QUERY_INTERFACE request to the device stack\r
+       represented by the input device object.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT NTSTATUS\r
+<strong>cl_fwd_query_ifc</strong>(\r
+        IN                              DEVICE_OBJECT* const            p_dev_obj,\r
+        IN                              IO_STACK_LOCATION* const        p_io_stack );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dev_obj\r
+               Pointer to the device object that is the IRP target.\r
+\r
+       p_io_stack\r
+               Pointer to the original IRP's I/O stack location, used to format\r
+               the forwarded IRP.\r
+\r
+ RETURN VALUES\r
+       IRP status value.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The IRP forwarded is synchronous, so this call must be invoked at PASSIVE.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/kernel/complib/cl_pnp_po_h.html b/trunk/docs/kernel/complib/cl_pnp_po_h.html
new file mode 100644 (file)
index 0000000..7e3dc4c
--- /dev/null
@@ -0,0 +1,1010 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../../robodoc.css" type="text/css">\r
+<title>./inc_doc/kernel/complib/cl_pnp_po_h.html</title>\r
+<!-- Source: ./inc/kernel/complib/cl_pnp_po.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/kernel/complib/cl_pnp_po.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:24\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo22">[Modules]<a name="Component20Library2fPlug20and20Play">\r
+Component Library/Plug and Play</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Plug and Play\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Provides plug and play support for kernel drivers.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Callback Types:\r
+               <a href="#robo491">cl_pfn_pnp_po_t</a>\r
+\r
+       Structures:\r
+               cl_vfptr_pnp_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo485">[Functions]<a name="Component20Library3a20Plug20and20Play2fcl5falloc5frelations">\r
+Component Library: Plug and Play/cl_alloc_relations</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_alloc_relations</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Allocates device relations and copies existing device relations, if any.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT NTSTATUS\r
+<strong>cl_alloc_relations</strong>(\r
+        IN                              IRP* const                                      p_irp,\r
+        IN              const   size_t                                          n_devs );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_irp\r
+               Pointer to the IPR_MN_QUERY_DEVICE_RELATIONS IRP for which the\r
+               relations are being allocated.\r
+\r
+       n_devs\r
+               Number of devices the caller will report in the DEVICE_RELATIONS\r
+               structure stored at pIrp-&gt;IoStatus.Infomation upon success.\r
+\r
+ RETURN VALUES\r
+       STATUS_SUCCESS if the DEVICE_RELATIONS structure was allocated successfully.\r
+\r
+       STATUS_INSUFFICIENT_RESOURCES if there was not enough memory to complete\r
+       the operation.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Upon failure, any original relations buffer is freed.  Users should fail\r
+       the IRP with the returned status value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo486">[Functions]<a name="Component20Library3a20Plug20and20Play2fcl5fdo5fremove">\r
+Component Library: Plug and Play/cl_do_remove</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_do_remove</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Propagates an IRP_MN_REMOVE_DEVICE IRP, detaches, and deletes the\r
+       device object.  Useable by function and filter drivers only.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT NTSTATUS\r
+<strong>cl_do_remove</strong>(\r
+        IN                                      DEVICE_OBJECT* const    pDevObj,\r
+        IN                                      IRP* const                              pIrp, \r
+                OUT                             <a href="#robo490">cl_irp_action_t</a>* const  pAction );\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo487">[Functions]<a name="Component20Library3a20Plug20and20Play2fcl5fdo5fsync5fpnp">\r
+Component Library: Plug and Play/cl_do_sync_pnp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_do_sync_pnp</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sends an IRP to the next driver synchronously.  Returns when the lower \r
+       drivers have completed the IRP.  Used to process IRPs on the way up the\r
+       device node.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT NTSTATUS\r
+<strong>cl_do_sync_pnp</strong>(\r
+        IN                              DEVICE_OBJECT* const            p_dev_obj,\r
+        IN                              IRP* const                                      p_irp, \r
+                OUT                     <a href="#robo490">cl_irp_action_t</a>* const          p_action );\r
+/*\r
+* PARAMETER\r
+*       p_dev_obj\r
+*               Pointer to the device object that is the IRP target.\r
+*\r
+*       p_irp\r
+*               Pointer to the request IRP.\r
+*\r
+*       p_action\r
+*               Action to take for propagating the IRP.\r
+*\r
+* RETURN VALUES\r
+*       IRP status value returned by lower driver.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo489">[Functions]<a name="Component20Library3a20Plug20and20Play2fcl5finit5fpnp5fpo5fext">\r
+Component Library: Plug and Play/cl_init_pnp_po_ext</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_init_pnp_po_ext</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Initializes the component library device extension for use.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT void\r
+<strong>cl_init_pnp_po_ext</strong>(\r
+        IN      OUT                     DEVICE_OBJECT* const            p_dev_obj,\r
+        IN                              DEVICE_OBJECT* const            p_next_do,\r
+        IN                              DEVICE_OBJECT* const            p_pdo,\r
+        IN              const   uint32_t                                        pnp_po_dbg_lvl,\r
+        IN              const   <a href="#robo498">cl_vfptr_pnp_po_t</a>* const        vfptr_pnp,\r
+        IN              const   cl_vfptr_query_txt_t* const     vfptr_query_txt OPTIONAL );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dev_obj\r
+               Pointer to the device object for the device.\r
+\r
+       p_next_do\r
+               Pointer to the next device object in the device stack.  Must be NULL\r
+               for PDO objects.\r
+\r
+       p_pdo\r
+               Pointer to the PDO for the device node.\r
+\r
+       pnp_po_dbg_lvl\r
+               Debug level to control flow of debug messages.  If the bit for\r
+               CL_DBG_PNP is set, verbose debug messages are generated.\r
+\r
+       vfptr_pnp_po\r
+               Pointer to the function table of PnP and Power Management handlers.\r
+\r
+       vfptr_query_txt\r
+               Pointer to the function table for IRP_MN_QUERY_DEVICE_TEXT handlers.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo494">cl_pnp_po_ext_t</a>, <a href="#robo498">cl_vfptr_pnp_po_t</a>, cl_vfptr_query_txt_t\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo490">[Definitions]<a name="Component20Library3a20Plug20and20Play2fcl5firp5faction5ft">\r
+Component Library: Plug and Play/cl_irp_action_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_irp_action_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Indicates what kind of action to take in response to an IRP.  Used\r
+       when processing PnP IRPs.\r
+\r
+ SYNOPSIS:\r
+\r
+ VALUES:\r
+       IrpPassDown\r
+               Pass the IRP down to the next driver.  The IRP's current stack location\r
+               has been setup properly.\r
+\r
+       IrpSkip\r
+               Skip the current IRP stack location but sets the IRP's status.\r
+\r
+       IrpIgnore\r
+               Skip the current IRP without setting its status value since the IRP \r
+               is not interesting.\r
+\r
+       IrpComplete\r
+               Complete the IRP.  Sets the status in the IoStatus block, completes the\r
+               IRP, and returns the status.\r
+\r
+       IrpDoNothing\r
+               The routine assumed control of the IRP completion.  No further \r
+               processing is required in the dispatch routine.  The remove lock should\r
+               not be released.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo491">[Definitions]<a name="Component20Library3a20Plug20and20Play2fcl5fpfn5fpnp5fpo5ft">\r
+Component Library: Plug and Play/cl_pfn_pnp_po_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_pnp_po_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Function prototype for PnP and Power Management IRPs handlers.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef NTSTATUS\r
+(*<strong>cl_pfn_pnp_po_t</strong>)(\r
+        IN                              DEVICE_OBJECT* const            p_dev_obj,\r
+        IN                              IRP* const                                      p_irp, \r
+                OUT                     <a href="#robo490">cl_irp_action_t</a>* const          p_action );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dev_obj\r
+               Pointer to the device object that is the IRP target.\r
+\r
+       p_irp\r
+               Pointer to the request IRP.\r
+\r
+       p_action\r
+               Action to take for propagating the IRP.\r
+\r
+ RETURN VALUES\r
+       IRP status value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo490">cl_irp_action_t</a>, <a href="#robo498">cl_vfptr_pnp_po_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo492">[Definitions]<a name="Component20Library3a20Plug20and20Play2fcl5fpfn5fquery5ftext5ft">\r
+Component Library: Plug and Play/cl_pfn_query_text_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_query_text_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Function pointer type for handling IRP_MN_QUERY_DEVICE_TEXT IRPs.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef NTSTATUS\r
+(*<strong>cl_pfn_query_text_t</strong>)(\r
+        IN                              DEVICE_OBJECT* const            p_dev_obj,\r
+                OUT                     IRP* const                                      p_irp );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       pDevObj\r
+               Pointer to the device object that is the IRP target.\r
+\r
+       pIrp\r
+               [out] Pointer to the request IRP.  Sets the requested device text in\r
+               pIrp-&gt;IoStatus.Information.\r
+\r
+ RETURN VALUES\r
+       NTSTATUS value indicating the result of the query.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Only bus drivers handle the IRP_MN_QUERY_DEVICE_TEXT IRP for their PDOs.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo493">[Definitions]<a name="Component20Library3a20Plug20and20Play2fcl5fpfn5frelease5fresources5ft">\r
+Component Library: Plug and Play/cl_pfn_release_resources_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pfn_release_resources_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Function prototype for releasing resources associated with a device.\r
+       Called from either the remove handler or the surprise remove handler.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(*<strong>cl_pfn_release_resources_t</strong>)(\r
+        IN                              DEVICE_OBJECT* const            p_dev_obj );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dev_obj\r
+               Pointer to the device object whose resources to release.\r
+\r
+ RETURN VALUES\r
+       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo498">cl_vfptr_pnp_po_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo494">[Definitions]<a name="Component20Library3a20Plug20and20Play2fcl5fpnp5fpo5fext5ft">\r
+Component Library: Plug and Play/cl_pnp_po_ext_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pnp_po_ext_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Device extension structure required for using the component library\r
+       plug and play helper routines.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_pnp_po_ext\r
+{\r
+        <a href="#robo495">cl_pnp_state_t</a>                          pnp_state;\r
+        <a href="#robo495">cl_pnp_state_t</a>                          last_pnp_state;\r
+\r
+        DEVICE_OBJECT                           *p_self_do;\r
+        DEVICE_OBJECT                           *p_next_do;\r
+        DEVICE_OBJECT                           *p_pdo;\r
+\r
+        IO_REMOVE_LOCK                          remove_lock;\r
+        IO_REMOVE_LOCK                          stop_lock;\r
+\r
+        atomic32_t                                      n_paging_files;\r
+        atomic32_t                                      n_crash_files;\r
+        atomic32_t                                      n_hibernate_files;\r
+\r
+        const <a href="#robo498">cl_vfptr_pnp_po_t</a>         *vfptr_pnp_po;\r
+        const cl_vfptr_query_txt_t      *vfptr_query_txt;\r
+\r
+        void                                            *h_cl_locked_section;\r
+        void                                            *h_user_locked_section;\r
+\r
+        atomic32_t                                      n_ifc_ref;\r
+\r
+        uint32_t                                        dbg_lvl;\r
+\r
+}       <strong>cl_pnp_po_ext_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pnp_state\r
+               Current PnP device state.\r
+\r
+       last_pnp_state\r
+               Previous PnP device state, to restore in case a query is cancelled.\r
+\r
+       p_self_do\r
+               Pointer to the device's own device object.\r
+\r
+       p_next_do\r
+               Pointer to the next device object.  Null if the device is a PDO.\r
+\r
+       p_pdo\r
+               The pointer to the PDO for the device node.\r
+       \r
+       remove_lock\r
+               Remove lock used to synchronize access to the device when handling\r
+               PnP IRPs.\r
+\r
+       stop_lock\r
+               Lock used to track non-PnP and non-Power IO operations.  \r
+       \r
+       n_paging_files\r
+               Number of times the device is in a paging file path.\r
+\r
+       n_crash_files\r
+               Number of times the device is in a dump file path.\r
+\r
+       n_hibernate_files\r
+               Number of times the device is in a hibernation files path.\r
+       \r
+       vfptr_pnp\r
+               Funtion pointer table for the PnP and Power Management handlers.\r
+\r
+       vfptr_query_txt\r
+               Function pointer table for IRP_MN_QUERY_DEVICE_TEXT handlers.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       This structure must be first in the device extension so that the device\r
+       extension can successfully be cast to a <strong>cl_pnp_po_ext_t</strong> pointer by the\r
+       IRP handler routines.\r
+\r
+       When performing I/O operations, users should acquire the stop lock and\r
+       check status before starting an I/O operation, and release the stop lock\r
+       after completing an I/O operation using the cl_start_io and cl_end_io\r
+       functions respectively.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo498">cl_vfptr_pnp_po_t</a>, <a href="#robo495">cl_pnp_state_t</a>, cl_start_io, cl_end_io\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo495">[Definitions]<a name="Component20Library3a20Plug20and20Play2fcl5fpnp5fstate5ft">\r
+Component Library: Plug and Play/cl_pnp_state_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pnp_state_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       PnP States for device objects managed by this driver.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef enum _cl_pnp_state\r
+{\r
+        NotStarted = 0,\r
+        Started,\r
+        StopPending,\r
+        Stopped,\r
+        RemovePending,\r
+        SurpriseRemoved,\r
+        Deleted,\r
+        UnKnown\r
+\r
+}       <strong>cl_pnp_state_t</strong>;\r
+</pre>\r
+</span><p><strong>VALUES</strong></p>\r
+<span class="VALUES"><pre>       NotStarted\r
+               Not started yet.\r
+\r
+       Started\r
+               Device has received the IPR_MN_START_DEVICE IRP\r
+\r
+       StopPending\r
+               Device has received the IPR_MN_QUERY_STOP_DEVICE IRP\r
+\r
+       Stopped\r
+               Device has received the IPR_MN_STOP_DEVICE IRP\r
+\r
+       RemovePending\r
+               Device has received the IPR_MN_QUERY_REMOVE_DEVICE IRP\r
+\r
+       SurpriseRemoved\r
+               Device has received the IPR_MN_SURPRISE_REMOVE_DEVICE IRP\r
+\r
+       Deleted\r
+               Device has received the IPR_MN_REMOVE_DEVICE IRP\r
+\r
+       UnKnown\r
+               Unknown state\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo494">cl_pnp_po_ext_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo496">[Functions]<a name="Component20Library3a20Plug20and20Play2fcl5frollback5fpnp5fstate">\r
+Component Library: Plug and Play/cl_rollback_pnp_state</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_rollback_pnp_state</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Rolls back a PnP state change.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void\r
+<strong>cl_rollback_pnp_state</strong>(\r
+                OUT                     <a href="#robo494">cl_pnp_po_ext_t</a>* const          p_ext )\r
+{\r
+        p_ext-&gt;pnp_state = p_ext-&gt;last_pnp_state;\r
+}\r
+/*\r
+* PARAMTETERS\r
+*       p_ext\r
+*               Pointer to the device extension whose PnP state to set.\r
+*\r
+* RETURN VALUES\r
+*       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo494">cl_pnp_po_ext_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo497">[Functions]<a name="Component20Library3a20Plug20and20Play2fcl5fset5fpnp5fstate">\r
+Component Library: Plug and Play/cl_set_pnp_state</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_set_pnp_state</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Sets the PnP state stored in the common device extension to the desired\r
+       state.  Stores the previous state for rollback purposes.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_INLINE void\r
+<strong>cl_set_pnp_state</strong>(\r
+                OUT                     <a href="#robo494">cl_pnp_po_ext_t</a>* const          p_ext,\r
+        IN              const   <a href="#robo495">cl_pnp_state_t</a>                          new_state )\r
+{\r
+        p_ext-&gt;last_pnp_state = p_ext-&gt;pnp_state;\r
+        p_ext-&gt;pnp_state = new_state;\r
+}\r
+/*\r
+* PARAMTETERS\r
+*       p_ext\r
+*               Pointer to the device extension whose PnP state to set.\r
+*\r
+*       new_state\r
+*               New PnP state to store in the device extension.\r
+*\r
+* RETURN VALUES\r
+*       This function does not return a value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo494">cl_pnp_po_ext_t</a>, <a href="#robo495">cl_pnp_state_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo498">[Definitions]<a name="Component20Library3a20Plug20and20Play2fcl5fvfptr5fpnp5fpo5ft">\r
+Component Library: Plug and Play/cl_vfptr_pnp_po_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vfptr_pnp_po_t</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Virtual function pointer table for PnP and Power Management IRPs.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _cl_vfptr_pnp_po\r
+{\r
+        const char*                                             identity;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_start;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_query_stop;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_stop;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_cancel_stop;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_query_remove;\r
+        <a href="#robo493">cl_pfn_release_resources_t</a>              pfn_release_resources;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_remove;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_cancel_remove;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_surprise_remove;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_query_capabilities;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_query_pnp_state;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_filter_res_req;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_dev_usage_notification;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_query_bus_relations;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_query_ejection_relations;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_query_removal_relations;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_query_target_relations;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_unknown;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_query_resources;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_query_res_req;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_query_bus_info;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_query_interface;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_read_config;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_write_config;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_eject;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_set_lock;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_query_power;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_set_power;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_power_sequence;\r
+        <a href="#robo491">cl_pfn_pnp_po_t</a>                                 pfn_wait_wake;\r
+\r
+}       <strong>cl_vfptr_pnp_po_t</strong>;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       identity\r
+               string identifying the target, used in generating debug output.\r
+\r
+       pfn_start\r
+               IRP_MN_START_DEVICE handler.  Users must send forward the IRP to lower\r
+               devices as required for their driver type.\r
+\r
+       pfn_query_stop\r
+               IRP_MN_QUERY_STOP_DEVICE handler.\r
+\r
+       pfn_stop\r
+               IRP_MN_STOP_DEVICE handler.\r
+\r
+       pfn_cancel_stop\r
+               IRP_MN_CANCEL_STOP_DEVICE handler.  Users must send forward the IRP to \r
+               lower devices as required for their driver type.\r
+\r
+       pfn_query_remove\r
+               IRP_MN_QUERY_REMOVE_DEVICE handler.\r
+\r
+       pfn_release_resources\r
+               Called to release resources allocated for the device.\r
+\r
+       pfn_remove\r
+               IRP_MN_REMOVE_DEVICE handler.\r
+\r
+       pfn_cancel_remove\r
+               IRP_MN_CANCEL_REMOVE_DEVICE handler.  Users must send forward the IRP\r
+               to lower devices as required for their driver type.\r
+\r
+       pfn_surprise_remove\r
+               IRP_MN_SURPRISE_REMOVE_DEVICE handler.\r
+\r
+       pfn_query_capabilities\r
+               IRP_MN_QUERY_DEVICE_CAPABILITIES handler.\r
+\r
+       pfn_query_pnp_state\r
+               IRP_MN_QUERY_PNP_STATE handler.\r
+\r
+       pfn_filter_res_req\r
+               IRP_MN_FILTER_RESOURCE_REQUIREMENTS handler.\r
+\r
+       pfn_dev_usage_notification\r
+               IRP_MN_QUERY_DEVICE_USAGE_NOTIFICATION handler.\r
+\r
+       pfn_query_bus_relations\r
+               IRP_MN_QUERY_BUS_RELATIONS handler.\r
+\r
+       pfn_query_ejection_relations\r
+               IRP_MN_QUERY_EJECTION_RELATIONS handler.\r
+\r
+       pfn_query_removal_relations\r
+               IRP_MN_QUERY_REMOVAL_RELATIONS handler.\r
+\r
+       pfn_query_target_relations\r
+               IRP_MN_QUERY_TARGET_RELATIONS handler.\r
+\r
+       pfn_unknown\r
+               FDO and Filter drivers should pass this IRP down.  Bus drivers should \r
+               complete the request for their PDOs without modifying the status.\r
+               The component library provides the <a href="#robo502">cl_irp_skip</a> and <a href="#robo500">cl_irp_complete</a> \r
+               functions to skip and complete and IRP, respectively.  These functions\r
+               can be used to perform the required action.  This handler is invoked\r
+               when an undocumented PNP irp is received.\r
+\r
+       pfn_query_resources\r
+               IRP_MN_QUERY_RESOURCES handler.\r
+\r
+       pfn_query_res_req\r
+               IRP_MN_QUERY_RESOURCE_REQUIREMENTS handler.\r
+\r
+       pfn_query_bus_info\r
+               IRP_MN_QUERY_BUS_INFORMATION handler.\r
+\r
+       pfn_query_interface\r
+               IRP_MN_QUERY_INTERFACE handler.\r
+\r
+       pfn_read_config\r
+               IRP_MN_READ_CONFIG handler.\r
+\r
+       pfn_write_config\r
+               IRP_MN_WRITE_CONFIG handler.\r
+\r
+       pfn_eject\r
+               IRP_MN_EJECT handler.\r
+\r
+       pfn_set_lock\r
+               IRP_MN_SET_LOCK handler.\r
+\r
+       pfn_query_power\r
+               IRP_MN_QUERY_POWER handler.\r
+\r
+       pfn_set_power\r
+               IRP_MN_SET_POWER handler.\r
+\r
+       pfn_power_sequence\r
+               IRP_MN_POWER_SEQUENCE handler.\r
+\r
+       pfn_wait_wake\r
+               IRP_MN_WAIT_WAKE handler.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       The component library provides default handlers for skiping the IRP,\r
+       completing the IRP without changing the status, and processing the IRP\r
+       on the way up the device stack.  Users can set the handler to \r
+       <a href="#robo502">cl_irp_skip</a>, <a href="#robo500">cl_irp_complete</a>, <a href="#robo487">cl_do_sync_pnp</a>.\r
+\r
+       The handlers specified in pfn_query_power, pfn_set_power, \r
+       pfn_power_sequence, and pfn_wait_wake, if implemented as pageable code,\r
+       should be marked in a single pageable code section.  The component library\r
+       will use the first function that is not a component library handler to\r
+       lock down the user's power management code.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo491">cl_pfn_pnp_po_t</a>, <a href="#robo493">cl_pfn_release_resources_t</a>, <a href="#robo487">cl_do_sync_pnp</a>,\r
+       <a href="#robo502">cl_irp_skip</a>, <a href="#robo500">cl_irp_complete</a>, <a href="#robo504">cl_irp_unsupported</a>, cl_irp_fail\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo499">[Definitions]<a name="Component20Library3a20Plug20and20Play2fcl5fvfptr5fquery5ftxt">\r
+Component Library: Plug and Play/cl_vfptr_query_txt</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_definitions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_vfptr_query_txt</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Function pointer table for the various type of text requested by\r
+       IRP_MN_QUERY_DEVICE_TEXT IRPs.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef struct _<strong>cl_vfptr_query_txt</strong>\r
+{\r
+        <a href="#robo492">cl_pfn_query_text_t</a>             pfn_query_device_id;\r
+        <a href="#robo492">cl_pfn_query_text_t</a>             pfn_query_hardware_id;\r
+        <a href="#robo492">cl_pfn_query_text_t</a>             pfn_query_compatible_id;\r
+        <a href="#robo492">cl_pfn_query_text_t</a>             pfn_query_unique_id;\r
+        <a href="#robo492">cl_pfn_query_text_t</a>             pfn_query_description;\r
+        <a href="#robo492">cl_pfn_query_text_t</a>             pfn_query_location;\r
+\r
+}       cl_vfptr_query_txt_t;\r
+</pre>\r
+</span><p><strong>FIELDS</strong></p>\r
+<span class="FIELDS"><pre>       pfn_query_device_id\r
+               The request is for the target device's device ID.\r
+\r
+       pfn_query_hardware_id\r
+               The request is for the target device's device IDs.\r
+\r
+       pfn_query_compatible_id\r
+               The request is for the target device's comptible IDs.\r
+\r
+       pfn_query_unique_id\r
+               The request is for the target device's unique ID.\r
+\r
+       pfn_query_description\r
+               The request is for the target device's description.\r
+\r
+       pfn_query_location\r
+               The request is for the target device's location text.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Hardware and compatible IDs should be returned in the most specific to\r
+       most general order.  The IDs are used to match drivers to devices.\r
+\r
+       The query text function pointer table is maintained separately from the\r
+       PnP function pointer table to allow FDO and filter drivers to not define\r
+       the table since they typically do not handle these requests.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo492">cl_pfn_query_text_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo500">[Functions]<a name="Component20Library3a20Plug20and20Play3a2fcl5firp5fcomplete">\r
+Component Library: Plug and Play:/cl_irp_complete</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_irp_complete</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Default handler for completeing a PnP or Power Management IRP with no \r
+       action.  Should only be used by bus drivers for their PDOs to complete \r
+       an IRP with no change in status.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT NTSTATUS\r
+<strong>cl_irp_complete</strong>(\r
+        IN                              DEVICE_OBJECT* const            p_dev_obj,\r
+        IN                              IRP* const                                      p_irp, \r
+                OUT                     <a href="#robo490">cl_irp_action_t</a>* const          p_action );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dev_obj\r
+               Pointer to the device object that is the IRP target.\r
+\r
+       p_irp\r
+               Pointer to the request IRP.\r
+\r
+       p_action\r
+               Action to take for propagating the IRP.\r
+\r
+ RETURN VALUES\r
+       IRP status value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo490">cl_irp_action_t</a>, <a href="#robo498">cl_vfptr_pnp_po_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo501">[Functions]<a name="Component20Library3a20Plug20and20Play3a2fcl5firp5fignore">\r
+Component Library: Plug and Play:/cl_irp_ignore</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_irp_ignore</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Default function for skipping a PnP IRP without setting the IRP's status.\r
+       Useable only by function and filter drivers.  Bus drivers should use \r
+       <a href="#robo500">cl_irp_complete</a> for their PDOs to complete an IRP with no change in status.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT NTSTATUS\r
+<strong>cl_irp_ignore</strong>(\r
+        IN                              DEVICE_OBJECT* const            p_dev_obj,\r
+        IN                              IRP* const                                      p_irp, \r
+                OUT                     <a href="#robo490">cl_irp_action_t</a>* const          p_action );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dev_obj\r
+               Pointer to the device object that is the IRP target.\r
+\r
+       p_irp\r
+               Pointer to the request IRP.\r
+\r
+       p_action\r
+               Action to take for propagating the IRP.\r
+\r
+ RETURN VALUES\r
+       IRP status value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo490">cl_irp_action_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo502">[Functions]<a name="Component20Library3a20Plug20and20Play3a2fcl5firp5fskip">\r
+Component Library: Plug and Play:/cl_irp_skip</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_irp_skip</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Default function for skipping a PnP IRP.  Sets the IRP's status value.\r
+       Useable only by function and filter drivers.  Bus drivers should use \r
+       <a href="#robo500">cl_irp_complete</a> for their PDOs to complete an IRP with no change in status.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT NTSTATUS\r
+<strong>cl_irp_skip</strong>(\r
+        IN                              DEVICE_OBJECT* const            p_dev_obj,\r
+        IN                              IRP* const                                      p_irp, \r
+                OUT                     <a href="#robo490">cl_irp_action_t</a>* const          p_action );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dev_obj\r
+               Pointer to the device object that is the IRP target.\r
+\r
+       p_irp\r
+               Pointer to the request IRP.\r
+\r
+       p_action\r
+               Action to take for propagating the IRP.\r
+\r
+ RETURN VALUES\r
+       IRP status value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo490">cl_irp_action_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo503">[Functions]<a name="Component20Library3a20Plug20and20Play3a2fcl5firp5fsucceed">\r
+Component Library: Plug and Play:/cl_irp_succeed</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_irp_succeed</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Default handler for succeeding an IRP with STATUS_SUCCESS.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT NTSTATUS\r
+<strong>cl_irp_succeed</strong>(\r
+        IN                              DEVICE_OBJECT* const            p_dev_obj,\r
+        IN                              IRP* const                                      p_irp, \r
+                OUT                     <a href="#robo490">cl_irp_action_t</a>* const          p_action );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dev_obj\r
+               Pointer to the device object that is the IRP target.\r
+\r
+       p_irp\r
+               Pointer to the request IRP.\r
+\r
+       p_action\r
+               Action to take for propagating the IRP.\r
+\r
+ RETURN VALUES\r
+       IRP status value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo490">cl_irp_action_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo504">[Functions]<a name="Component20Library3a20Plug20and20Play3a2fcl5firp5funsupported">\r
+Component Library: Plug and Play:/cl_irp_unsupported</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_irp_unsupported</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Default handler for failing an IRP with STATUS_UNSUPPORTED.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT NTSTATUS\r
+<strong>cl_irp_unsupported</strong>(\r
+        IN                              DEVICE_OBJECT* const            p_dev_obj,\r
+        IN                              IRP* const                                      p_irp, \r
+                OUT                     <a href="#robo490">cl_irp_action_t</a>* const          p_action );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_dev_obj\r
+               Pointer to the device object that is the IRP target.\r
+\r
+       p_irp\r
+               Pointer to the request IRP.\r
+\r
+       p_action\r
+               Action to take for propagating the IRP.\r
+\r
+ RETURN VALUES\r
+       IRP status value.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play, <a href="#robo490">cl_irp_action_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo505">[Functions]<a name="Component20Library3a20Plug20and20Play3a2fcl5fpnp">\r
+Component Library: Plug and Play:/cl_pnp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_pnp</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Main PnP entry point for the driver.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT NTSTATUS\r
+<strong>cl_pnp</strong>(\r
+        IN                              PDEVICE_OBJECT                          p_dev_obj,\r
+        IN                              PIRP                                            p_irp );\r
+/*\r
+* PARAMTETERS\r
+*       p_dev_obj\r
+*               Pointer to the device object that is the target of the PnP IRP.\r
+*\r
+*       p_irp\r
+*               Pointer to the PnP IRP to perform on the specified device.\r
+*\r
+* RETURN VALUES\r
+*       STATUS_SUCCESS if the operation is successful\r
+*\r
+*       Other NTSTATUS values in case of error.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo506">[Functions]<a name="Component20Library3a20Plug20and20Play3a2fcl5fpower">\r
+Component Library: Plug and Play:/cl_power</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>cl_power</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Main Power Management entry point for the driver.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>CL_EXPORT NTSTATUS\r
+<strong>cl_power</strong>(\r
+        IN                              PDEVICE_OBJECT                          p_dev_obj,\r
+        IN                              PIRP                                            p_irp );\r
+/*\r
+* PARAMTETERS\r
+*       p_dev_obj\r
+*               Pointer to the device object that is the target of the PnP IRP.\r
+*\r
+*       p_irp\r
+*               Pointer to the PnP IRP to perform on the specified device.\r
+*\r
+* RETURN VALUES\r
+*       STATUS_SUCCESS if the operation is successful\r
+*\r
+*       Other NTSTATUS values in case of error.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       Plug and Play\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/kernel/iba/ib_al_ifc_h.html b/trunk/docs/kernel/iba/ib_al_ifc_h.html
new file mode 100644 (file)
index 0000000..df1a07d
--- /dev/null
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../../robodoc.css" type="text/css">\r
+<title>./inc_doc/kernel/iba/ib_al_ifc_h.html</title>\r
+<!-- Source: ./inc/kernel/iba/ib_al_ifc.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/kernel/iba/ib_al_ifc.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:23\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo0">[Modules]<a name="Access20Layer2fib5fal5fifc2eh">\r
+Access Layer/ib_al_ifc.h</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_al_ifc.h</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Header file for the interface exported to ICT client drivers for access to\r
+       IB resources provided by HCAs.\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/kernel/iba/ib_ci_ifc_h.html b/trunk/docs/kernel/iba/ib_ci_ifc_h.html
new file mode 100644 (file)
index 0000000..c4fee38
--- /dev/null
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../../robodoc.css" type="text/css">\r
+<title>./inc_doc/kernel/iba/ib_ci_ifc_h.html</title>\r
+<!-- Source: ./inc/kernel/iba/ib_ci_ifc.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/kernel/iba/ib_ci_ifc.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:23\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo1">[Modules]<a name="Access20Layer2fib5fci5fifc2eh">\r
+Access Layer/ib_ci_ifc.h</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ib_ci_ifc.h</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Header file for the interface exported to HCA drivers to allow them\r
+       to register with AL for use by AL clients.\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/kernel/iba/ioc_ifc_h.html b/trunk/docs/kernel/iba/ioc_ifc_h.html
new file mode 100644 (file)
index 0000000..72441bb
--- /dev/null
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../../robodoc.css" type="text/css">\r
+<title>./inc_doc/kernel/iba/ioc_ifc_h.html</title>\r
+<!-- Source: ./inc/kernel/iba/ioc_ifc.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/kernel/iba/ioc_ifc.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:19\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo2">[Modules]<a name="Access20Layer2fioc5fifc2eh">\r
+Access Layer/ioc_ifc.h</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ioc_ifc.h</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Header file for the interface exported to IOC client drivers to retrieve\r
+       IOC device information.\r
+\r
+       The interface contains information about the particular instance of an IOC.\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/kernel/iba/iou_ifc_h.html b/trunk/docs/kernel/iba/iou_ifc_h.html
new file mode 100644 (file)
index 0000000..4459592
--- /dev/null
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../../robodoc.css" type="text/css">\r
+<title>./inc_doc/kernel/iba/iou_ifc_h.html</title>\r
+<!-- Source: ./inc/kernel/iba/iou_ifc.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/kernel/iba/iou_ifc.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:19\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo3">[Modules]<a name="Access20Layer2fiou5fifc2eh">\r
+Access Layer/iou_ifc.h</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>iou_ifc.h</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Header file for the interface exported to IOU client drivers to retrieve\r
+       IOU device information.\r
+\r
+       The interface contains information about the particular instance of an IOU.\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/kernel/iba/ipoib_ifc_h.html b/trunk/docs/kernel/iba/ipoib_ifc_h.html
new file mode 100644 (file)
index 0000000..c898cec
--- /dev/null
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../../robodoc.css" type="text/css">\r
+<title>./inc_doc/kernel/iba/ipoib_ifc_h.html</title>\r
+<!-- Source: ./inc/kernel/iba/ipoib_ifc.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/kernel/iba/ipoib_ifc.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:19\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo4">[Modules]<a name="Access20Layer2fipoib5fifc2eh">\r
+Access Layer/ipoib_ifc.h</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>ipoib_ifc.h</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Header file for the interface exported to IPoIB client drivers for access\r
+       to IB resources provided by HCAs.\r
+\r
+       The actual interface returned is an contains information about the\r
+       particular instance of an IPoIB device.\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/masterindex.html b/trunk/docs/masterindex.html
new file mode 100644 (file)
index 0000000..5dd5bad
--- /dev/null
@@ -0,0 +1,3246 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="./robodoc.css" type="text/css">\r
+<title>Index</title>\r
+<!-- Source: ./inc/ -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<p>\r
+[<a href="./robo_sourcefiles.html#top">Sourcefiles</a>]\r
+[<a href="#top">Index</a>]\r
+[<a href="./robo_definitions.html#top">Definitions</a>]\r
+[<a href="./robo_functions.html#top">Functions</a>]\r
+[<a href="./robo_modules.html#top">Modules</a>]\r
+[<a href="./robo_strutures.html#top">Structures</a>]\r
+</p>\r
+<h1>Index</h1>\r
+<table cellspacing="3">\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_debug_h.html#robo305"><tt>\r
+64-bit Print Format</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_async_proc_h.html#robo6"><tt>\r
+Asynchronous Processor</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_atomic_h.html#robo7"><tt>\r
+Atomic Operations</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo44"><tt>\r
+ATS</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo8"><tt>\r
+Byte Swapping</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1109"><tt>\r
+ci_allocate_pd</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1110"><tt>\r
+ci_async_event_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1111"><tt>\r
+ci_attach_mcast</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1112"><tt>\r
+ci_bind_mw</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1113"><tt>\r
+ci_close_ca</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1114"><tt>\r
+ci_completion_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1115"><tt>\r
+ci_create_av</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1116"><tt>\r
+ci_create_cq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1117"><tt>\r
+ci_create_mw</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1118"><tt>\r
+ci_create_qp</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1119"><tt>\r
+ci_create_spl_qp</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1120"><tt>\r
+ci_deallocate_pd</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1121"><tt>\r
+ci_deregister_mr</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1122"><tt>\r
+ci_destroy_av</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1123"><tt>\r
+ci_destroy_cq</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1124"><tt>\r
+ci_destroy_mw</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1125"><tt>\r
+ci_destroy_qp</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1126"><tt>\r
+ci_detach_mcast</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1127"><tt>\r
+ci_enable_cq_notify</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1128"><tt>\r
+ci_enable_ncomp_cq_notify</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1129"><tt>\r
+ci_interface_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1130"><tt>\r
+ci_local_mad</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1131"><tt>\r
+ci_modify_av</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1132"><tt>\r
+ci_modify_ca</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1133"><tt>\r
+ci_modify_mr</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1134"><tt>\r
+ci_modify_pmr</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1135"><tt>\r
+ci_modify_qp</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1136"><tt>\r
+ci_open_ca</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1137"><tt>\r
+ci_peek_cq</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1138"><tt>\r
+ci_poll_cq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1139"><tt>\r
+ci_post_recv</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1140"><tt>\r
+ci_post_send</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1141"><tt>\r
+ci_query_av</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1142"><tt>\r
+ci_query_ca</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1143"><tt>\r
+ci_query_cq</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1144"><tt>\r
+ci_query_mr</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1145"><tt>\r
+ci_query_mw</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1146"><tt>\r
+ci_query_qp</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1147"><tt>\r
+ci_register_mr</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1148"><tt>\r
+ci_register_pmr</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1149"><tt>\r
+ci_register_smr</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1150"><tt>\r
+ci_resize_cq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1151"><tt>\r
+ci_um_close_ca_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1152"><tt>\r
+ci_um_open_ca</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1153"><tt>\r
+ci_umv_buf_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1154"><tt>\r
+ci_vendor_call</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo485"><tt>\r
+cl_alloc_relations</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_async_proc_h.html#robo_top_of_doc"><tt>\r
+cl_async_proc.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_async_proc_h.html#robo266"><tt>\r
+cl_async_proc_construct</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_async_proc_h.html#robo267"><tt>\r
+cl_async_proc_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_async_proc_h.html#robo268"><tt>\r
+cl_async_proc_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_async_proc_h.html#robo269"><tt>\r
+cl_async_proc_item_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_async_proc_h.html#robo270"><tt>\r
+cl_async_proc_queue</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_async_proc_h.html#robo271"><tt>\r
+cl_async_proc_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_atomic_h.html#robo_top_of_doc"><tt>\r
+cl_atomic.h</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_atomic_h.html#robo273"><tt>\r
+cl_atomic_add</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_atomic_h.html#robo274"><tt>\r
+cl_atomic_comp_xchg</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_atomic_h.html#robo275"><tt>\r
+cl_atomic_dec</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_atomic_h.html#robo276"><tt>\r
+cl_atomic_inc</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_atomic_h.html#robo277"><tt>\r
+cl_atomic_sub</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_atomic_h.html#robo278"><tt>\r
+cl_atomic_xchg</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_debug_h.html#robo306"><tt>\r
+cl_break</tt></a></td>\r
+<td  class="even"><a href="./kernel/complib/cl_bus_ifc_h.html#robo_top_of_doc"><tt>\r
+cl_bus_ifc.h</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo_top_of_doc"><tt>\r
+cl_byteswap.h</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo420"><tt>\r
+cl_check_for_read</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo421"><tt>\r
+cl_check_for_write</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo_top_of_doc"><tt>\r
+cl_comppool.h</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo422"><tt>\r
+cl_copy_from_user</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo423"><tt>\r
+cl_copy_to_user</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_comppool_h.html#robo292"><tt>\r
+cl_cpool_construct</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo293"><tt>\r
+cl_cpool_count</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_comppool_h.html#robo294"><tt>\r
+cl_cpool_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo295"><tt>\r
+cl_cpool_get</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_comppool_h.html#robo296"><tt>\r
+cl_cpool_grow</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo297"><tt>\r
+cl_cpool_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_comppool_h.html#robo298"><tt>\r
+cl_cpool_put</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo299"><tt>\r
+cl_cpool_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_debug_h.html#robo307"><tt>\r
+cl_dbg_out</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_debug_h.html#robo_top_of_doc"><tt>\r
+cl_debug.h</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo442"><tt>\r
+cl_destroy_type_t</tt></a></td>\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo486"><tt>\r
+cl_do_remove</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo487"><tt>\r
+cl_do_sync_pnp</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_debug_h.html#robo308"><tt>\r
+CL_ENTER</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_event_h.html#robo_top_of_doc"><tt>\r
+cl_event.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_event_h.html#robo316"><tt>\r
+cl_event_construct</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_event_h.html#robo317"><tt>\r
+cl_event_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_event_h.html#robo318"><tt>\r
+cl_event_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_event_h.html#robo319"><tt>\r
+cl_event_reset</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_event_h.html#robo320"><tt>\r
+cl_event_signal</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_event_h.html#robo321"><tt>\r
+cl_event_wait_on</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_debug_h.html#robo309"><tt>\r
+CL_EXIT</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo_top_of_doc"><tt>\r
+cl_fleximap.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo323"><tt>\r
+cl_fmap_apply_func</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo324"><tt>\r
+cl_fmap_count</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo325"><tt>\r
+cl_fmap_delta</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo326"><tt>\r
+cl_fmap_end</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo327"><tt>\r
+cl_fmap_get</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo328"><tt>\r
+cl_fmap_head</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo329"><tt>\r
+cl_fmap_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo330"><tt>\r
+cl_fmap_insert</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo331"><tt>\r
+cl_fmap_item_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo332"><tt>\r
+cl_fmap_key</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo333"><tt>\r
+cl_fmap_merge</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo334"><tt>\r
+cl_fmap_next</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo335"><tt>\r
+cl_fmap_prev</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo336"><tt>\r
+cl_fmap_remove</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo337"><tt>\r
+cl_fmap_remove_all</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo338"><tt>\r
+cl_fmap_remove_item</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo339"><tt>\r
+cl_fmap_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo340"><tt>\r
+cl_fmap_tail</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo424"><tt>\r
+cl_free</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_bus_ifc_h.html#robo488"><tt>\r
+cl_fwd_query_ifc</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo425"><tt>\r
+cl_get_pagesize</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo426"><tt>\r
+cl_get_physaddr</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo668"><tt>\r
+cl_get_tick_count</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_timer_h.html#robo669"><tt>\r
+cl_get_tick_freq</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo670"><tt>\r
+cl_get_time_stamp</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_timer_h.html#robo671"><tt>\r
+cl_get_time_stamp_sec</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo672"><tt>\r
+cl_get_time_stamp_usec</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo280"><tt>\r
+cl_hton16</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo279"><tt>\r
+CL_HTON16</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo282"><tt>\r
+CL_HTON32</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo281"><tt>\r
+cl_hton32</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo283"><tt>\r
+CL_HTON64</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo284"><tt>\r
+cl_hton64</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo489"><tt>\r
+cl_init_pnp_po_ext</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo_top_of_doc"><tt>\r
+cl_ioctl.h</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo344"><tt>\r
+cl_ioctl_cmd</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo345"><tt>\r
+cl_ioctl_complete</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo346"><tt>\r
+cl_ioctl_ctl_code</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo347"><tt>\r
+cl_ioctl_handle_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo348"><tt>\r
+cl_ioctl_in_buf</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo349"><tt>\r
+cl_ioctl_in_size</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo350"><tt>\r
+cl_ioctl_out_buf</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo351"><tt>\r
+cl_ioctl_out_size</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo352"><tt>\r
+cl_ioctl_process</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo353"><tt>\r
+cl_ioctl_request</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo354"><tt>\r
+cl_ioctl_result</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo355"><tt>\r
+cl_ioctl_type</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo490"><tt>\r
+cl_irp_action_t</tt></a></td>\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo500"><tt>\r
+cl_irp_complete</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo501"><tt>\r
+cl_irp_ignore</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo502"><tt>\r
+cl_irp_skip</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo503"><tt>\r
+cl_irp_succeed</tt></a></td>\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo504"><tt>\r
+cl_irp_unsupported</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_irqlock_h.html#robo_top_of_doc"><tt>\r
+cl_irqlock.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_irqlock_h.html#robo358"><tt>\r
+cl_irqlock_acquire</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_irqlock_h.html#robo359"><tt>\r
+cl_irqlock_construct</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_irqlock_h.html#robo360"><tt>\r
+cl_irqlock_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_irqlock_h.html#robo361"><tt>\r
+cl_irqlock_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_irqlock_h.html#robo362"><tt>\r
+cl_irqlock_release</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_thread_h.html#robo663"><tt>\r
+cl_is_blockable</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo300"><tt>\r
+cl_is_cpool_inited</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo341"><tt>\r
+cl_is_fmap_empty</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo552"><tt>\r
+cl_is_item_in_qlist</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo363"><tt>\r
+cl_is_list_empty</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo364"><tt>\r
+cl_is_list_inited</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo396"><tt>\r
+cl_is_map_empty</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo322"><tt>\r
+cl_is_map_inited</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo365"><tt>\r
+cl_is_object_in_list</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_pool_h.html#robo528"><tt>\r
+cl_is_pool_inited</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qcomppool_h.html#robo539"><tt>\r
+cl_is_qcpool_inited</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo553"><tt>\r
+cl_is_qlist_empty</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo592"><tt>\r
+cl_is_qmap_empty</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo615"><tt>\r
+cl_is_qpool_inited</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo627"><tt>\r
+cl_is_rbmap_empty</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_types_h.html#robo441"><tt>\r
+cl_is_state_valid</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_syscallback_h.html#robo653"><tt>\r
+cl_is_sys_callback_inited</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo_top_of_doc"><tt>\r
+cl_list.h</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo366"><tt>\r
+cl_list_apply_func</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo367"><tt>\r
+cl_list_construct</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo368"><tt>\r
+cl_list_count</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo369"><tt>\r
+cl_list_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo370"><tt>\r
+cl_list_end</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo371"><tt>\r
+cl_list_find_from_head</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo372"><tt>\r
+cl_list_find_from_tail</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo373"><tt>\r
+cl_list_head</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo374"><tt>\r
+cl_list_init</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo375"><tt>\r
+cl_list_insert_array_head</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo376"><tt>\r
+cl_list_insert_array_tail</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo377"><tt>\r
+cl_list_insert_head</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo378"><tt>\r
+cl_list_insert_next</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo379"><tt>\r
+cl_list_insert_prev</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo380"><tt>\r
+cl_list_insert_tail</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo554"><tt>\r
+cl_list_item_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo381"><tt>\r
+cl_list_iterator_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo382"><tt>\r
+cl_list_next</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo383"><tt>\r
+cl_list_obj</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo555"><tt>\r
+cl_list_obj_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo384"><tt>\r
+cl_list_prev</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo385"><tt>\r
+cl_list_remove_all</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo386"><tt>\r
+cl_list_remove_head</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo387"><tt>\r
+cl_list_remove_item</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo388"><tt>\r
+cl_list_remove_object</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo389"><tt>\r
+cl_list_remove_tail</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo390"><tt>\r
+cl_list_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo391"><tt>\r
+cl_list_tail</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_log_h.html#robo_top_of_doc"><tt>\r
+cl_log.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_log_h.html#robo394"><tt>\r
+cl_log_event</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_log_h.html#robo395"><tt>\r
+cl_log_type_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo427"><tt>\r
+cl_malloc</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo_top_of_doc"><tt>\r
+cl_map.h</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo397"><tt>\r
+cl_map_construct</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo398"><tt>\r
+cl_map_count</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo399"><tt>\r
+cl_map_delta</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo400"><tt>\r
+cl_map_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo401"><tt>\r
+cl_map_end</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo402"><tt>\r
+cl_map_get</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo403"><tt>\r
+cl_map_head</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo404"><tt>\r
+cl_map_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo405"><tt>\r
+cl_map_insert</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo593"><tt>\r
+cl_map_item_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo406"><tt>\r
+cl_map_iterator_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo407"><tt>\r
+cl_map_key</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo408"><tt>\r
+cl_map_merge</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo409"><tt>\r
+cl_map_next</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo410"><tt>\r
+cl_map_obj</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo594"><tt>\r
+cl_map_obj_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo411"><tt>\r
+cl_map_prev</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo412"><tt>\r
+cl_map_remove</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo413"><tt>\r
+cl_map_remove_all</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo414"><tt>\r
+cl_map_remove_item</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo415"><tt>\r
+cl_map_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo416"><tt>\r
+cl_map_tail</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_math_h.html#robo_top_of_doc"><tt>\r
+cl_math.h</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo428"><tt>\r
+cl_mem_display</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo429"><tt>\r
+cl_memclr</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo430"><tt>\r
+cl_memcmp</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo431"><tt>\r
+cl_memcpy</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo_top_of_doc"><tt>\r
+cl_memory.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo432"><tt>\r
+cl_memset</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_debug_h.html#robo310"><tt>\r
+cl_msg_out</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_mutex_h.html#robo_top_of_doc"><tt>\r
+cl_mutex.h</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_mutex_h.html#robo436"><tt>\r
+cl_mutex_acquire</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_mutex_h.html#robo437"><tt>\r
+cl_mutex_construct</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_mutex_h.html#robo438"><tt>\r
+cl_mutex_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_mutex_h.html#robo439"><tt>\r
+cl_mutex_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_mutex_h.html#robo440"><tt>\r
+cl_mutex_release</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo285"><tt>\r
+cl_ntoh</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo287"><tt>\r
+cl_ntoh16</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo286"><tt>\r
+CL_NTOH16</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo289"><tt>\r
+CL_NTOH32</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo288"><tt>\r
+cl_ntoh32</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo290"><tt>\r
+CL_NTOH64</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo291"><tt>\r
+cl_ntoh64</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo_top_of_doc"><tt>\r
+cl_obj.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo443"><tt>\r
+cl_obj_construct</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo444"><tt>\r
+cl_obj_deinit</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo445"><tt>\r
+cl_obj_deref</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo446"><tt>\r
+cl_obj_destroy</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo447"><tt>\r
+cl_obj_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo448"><tt>\r
+cl_obj_insert_rel</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo449"><tt>\r
+cl_obj_insert_rel_parent_locked</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo450"><tt>\r
+cl_obj_lock</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo451"><tt>\r
+cl_obj_mgr_create</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo452"><tt>\r
+cl_obj_mgr_destroy</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo453"><tt>\r
+cl_obj_mgr_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo454"><tt>\r
+cl_obj_ref</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo455"><tt>\r
+cl_obj_rel_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo456"><tt>\r
+cl_obj_remove_rel</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo457"><tt>\r
+cl_obj_reset</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo458"><tt>\r
+cl_obj_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo459"><tt>\r
+cl_obj_type</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo460"><tt>\r
+cl_obj_unlock</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo433"><tt>\r
+cl_palloc</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_types_h.html#robo315"><tt>\r
+cl_panic</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_passivelock_h.html#robo_top_of_doc"><tt>\r
+cl_passivelock.h</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo_top_of_doc"><tt>\r
+cl_perf.h</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo471"><tt>\r
+cl_perf_clr</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo472"><tt>\r
+cl_perf_construct</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo473"><tt>\r
+cl_perf_destroy</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo474"><tt>\r
+cl_perf_display</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo475"><tt>\r
+cl_perf_inc</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo476"><tt>\r
+cl_perf_init</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo477"><tt>\r
+cl_perf_log</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo478"><tt>\r
+cl_perf_reset</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo479"><tt>\r
+cl_perf_start</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo480"><tt>\r
+cl_perf_stop</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo481"><tt>\r
+cl_perf_update</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo482"><tt>\r
+cl_perf_update_ctr</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_async_proc_h.html#robo272"><tt>\r
+cl_pfn_async_proc_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_comppool_h.html#robo301"><tt>\r
+cl_pfn_cpool_dtor_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo302"><tt>\r
+cl_pfn_cpool_init_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo342"><tt>\r
+cl_pfn_fmap_apply_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo343"><tt>\r
+cl_pfn_fmap_cmp_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo356"><tt>\r
+cl_pfn_ioctl_handler_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo392"><tt>\r
+cl_pfn_list_apply_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo393"><tt>\r
+cl_pfn_list_find_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo461"><tt>\r
+cl_pfn_obj_call_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo491"><tt>\r
+cl_pfn_pnp_po_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_pool_h.html#robo529"><tt>\r
+cl_pfn_pool_dtor_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo530"><tt>\r
+cl_pfn_pool_init_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo509"><tt>\r
+cl_pfn_ptr_vec_apply_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo510"><tt>\r
+cl_pfn_ptr_vec_find_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo540"><tt>\r
+cl_pfn_qcpool_dtor_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qcomppool_h.html#robo541"><tt>\r
+cl_pfn_qcpool_init_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo556"><tt>\r
+cl_pfn_qlist_apply_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo557"><tt>\r
+cl_pfn_qlist_find_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo595"><tt>\r
+cl_pfn_qmap_apply_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qpool_h.html#robo616"><tt>\r
+cl_pfn_qpool_dtor_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo617"><tt>\r
+cl_pfn_qpool_init_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo492"><tt>\r
+cl_pfn_query_text_t</tt></a></td>\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo493"><tt>\r
+cl_pfn_release_resources_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_reqmgr_h.html#robo639"><tt>\r
+cl_pfn_req_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_reqmgr_h.html#robo640"><tt>\r
+cl_pfn_reqmgr_get_count_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_syscallback_h.html#robo654"><tt>\r
+cl_pfn_sys_callback_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_thread_h.html#robo664"><tt>\r
+cl_pfn_thread_callback_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_timer_h.html#robo673"><tt>\r
+cl_pfn_timer_callback_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo681"><tt>\r
+cl_pfn_vec_apply_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo682"><tt>\r
+cl_pfn_vec_dtor_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo683"><tt>\r
+cl_pfn_vec_find_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo684"><tt>\r
+cl_pfn_vec_init_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_passivelock_h.html#robo464"><tt>\r
+cl_plock_acquire</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_passivelock_h.html#robo465"><tt>\r
+cl_plock_construct</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_passivelock_h.html#robo466"><tt>\r
+cl_plock_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_passivelock_h.html#robo467"><tt>\r
+cl_plock_excl_acquire</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_passivelock_h.html#robo468"><tt>\r
+cl_plock_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_passivelock_h.html#robo469"><tt>\r
+cl_plock_release</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_passivelock_h.html#robo470"><tt>\r
+cl_plock_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo505"><tt>\r
+cl_pnp</tt></a></td>\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo_top_of_doc"><tt>\r
+cl_pnp_po.h</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo494"><tt>\r
+cl_pnp_po_ext_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo495"><tt>\r
+cl_pnp_state_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo_top_of_doc"><tt>\r
+cl_pool.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_pool_h.html#robo531"><tt>\r
+cl_pool_construct</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo532"><tt>\r
+cl_pool_count</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_pool_h.html#robo533"><tt>\r
+cl_pool_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo534"><tt>\r
+cl_pool_get</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_pool_h.html#robo535"><tt>\r
+cl_pool_grow</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo536"><tt>\r
+cl_pool_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo542"><tt>\r
+cl_pool_item_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo537"><tt>\r
+cl_pool_put</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_pool_h.html#robo538"><tt>\r
+cl_pool_t</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo506"><tt>\r
+cl_power</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_debug_h.html#robo311"><tt>\r
+CL_PRINT</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_thread_h.html#robo665"><tt>\r
+cl_proc_count</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo_top_of_doc"><tt>\r
+cl_ptr_vector.h</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo511"><tt>\r
+cl_ptr_vector_apply_func</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo512"><tt>\r
+cl_ptr_vector_at</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo513"><tt>\r
+cl_ptr_vector_construct</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo514"><tt>\r
+cl_ptr_vector_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo515"><tt>\r
+cl_ptr_vector_find_from_end</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo516"><tt>\r
+cl_ptr_vector_find_from_start</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo517"><tt>\r
+cl_ptr_vector_get</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo518"><tt>\r
+cl_ptr_vector_get_capacity</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo519"><tt>\r
+cl_ptr_vector_get_size</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo520"><tt>\r
+cl_ptr_vector_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo521"><tt>\r
+cl_ptr_vector_insert</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo522"><tt>\r
+cl_ptr_vector_remove</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo523"><tt>\r
+cl_ptr_vector_set</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo524"><tt>\r
+cl_ptr_vector_set_capacity</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo525"><tt>\r
+cl_ptr_vector_set_min_size</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo526"><tt>\r
+cl_ptr_vector_set_size</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo527"><tt>\r
+cl_ptr_vector_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo434"><tt>\r
+cl_pzalloc</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qcomppool_h.html#robo_top_of_doc"><tt>\r
+cl_qcomppool.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo543"><tt>\r
+cl_qcpool_construct</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qcomppool_h.html#robo544"><tt>\r
+cl_qcpool_count</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo545"><tt>\r
+cl_qcpool_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qcomppool_h.html#robo546"><tt>\r
+cl_qcpool_get</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo547"><tt>\r
+cl_qcpool_grow</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qcomppool_h.html#robo548"><tt>\r
+cl_qcpool_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo549"><tt>\r
+cl_qcpool_put</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qcomppool_h.html#robo550"><tt>\r
+cl_qcpool_put_list</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo551"><tt>\r
+cl_qcpool_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo_top_of_doc"><tt>\r
+cl_qlist.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo558"><tt>\r
+cl_qlist_apply_func</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo559"><tt>\r
+cl_qlist_count</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo560"><tt>\r
+cl_qlist_end</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo561"><tt>\r
+cl_qlist_find_from_head</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo562"><tt>\r
+cl_qlist_find_from_tail</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo563"><tt>\r
+cl_qlist_find_next</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo564"><tt>\r
+cl_qlist_find_prev</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo565"><tt>\r
+cl_qlist_head</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo566"><tt>\r
+cl_qlist_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo567"><tt>\r
+cl_qlist_insert_array_head</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo568"><tt>\r
+cl_qlist_insert_array_tail</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo569"><tt>\r
+cl_qlist_insert_head</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo570"><tt>\r
+cl_qlist_insert_list_head</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo571"><tt>\r
+cl_qlist_insert_list_tail</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo572"><tt>\r
+cl_qlist_insert_next</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo573"><tt>\r
+cl_qlist_insert_prev</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo574"><tt>\r
+cl_qlist_insert_tail</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo575"><tt>\r
+cl_qlist_move_items</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo576"><tt>\r
+cl_qlist_next</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo577"><tt>\r
+cl_qlist_obj</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo578"><tt>\r
+cl_qlist_prev</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo579"><tt>\r
+cl_qlist_remove_all</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo580"><tt>\r
+cl_qlist_remove_head</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo581"><tt>\r
+cl_qlist_remove_item</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo582"><tt>\r
+cl_qlist_remove_tail</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo583"><tt>\r
+cl_qlist_set_obj</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo584"><tt>\r
+cl_qlist_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo585"><tt>\r
+cl_qlist_tail</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlockpool_h.html#robo586"><tt>\r
+cl_qlock_pool_construct</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlockpool_h.html#robo587"><tt>\r
+cl_qlock_pool_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlockpool_h.html#robo588"><tt>\r
+cl_qlock_pool_get</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlockpool_h.html#robo589"><tt>\r
+cl_qlock_pool_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlockpool_h.html#robo590"><tt>\r
+cl_qlock_pool_put</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlockpool_h.html#robo591"><tt>\r
+cl_qlock_pool_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlockpool_h.html#robo_top_of_doc"><tt>\r
+cl_qlockpool.h</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo_top_of_doc"><tt>\r
+cl_qmap.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo596"><tt>\r
+cl_qmap_apply_func</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo597"><tt>\r
+cl_qmap_count</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo598"><tt>\r
+cl_qmap_delta</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo599"><tt>\r
+cl_qmap_end</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo600"><tt>\r
+cl_qmap_get</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo601"><tt>\r
+cl_qmap_head</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo602"><tt>\r
+cl_qmap_init</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo603"><tt>\r
+cl_qmap_insert</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo604"><tt>\r
+cl_qmap_key</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo605"><tt>\r
+cl_qmap_merge</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo606"><tt>\r
+cl_qmap_next</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo607"><tt>\r
+cl_qmap_obj</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo608"><tt>\r
+cl_qmap_prev</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo609"><tt>\r
+cl_qmap_remove</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo610"><tt>\r
+cl_qmap_remove_all</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo611"><tt>\r
+cl_qmap_remove_item</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo612"><tt>\r
+cl_qmap_set_obj</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo613"><tt>\r
+cl_qmap_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo614"><tt>\r
+cl_qmap_tail</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qpool_h.html#robo_top_of_doc"><tt>\r
+cl_qpool.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo618"><tt>\r
+cl_qpool_construct</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qpool_h.html#robo619"><tt>\r
+cl_qpool_count</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo620"><tt>\r
+cl_qpool_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qpool_h.html#robo621"><tt>\r
+cl_qpool_get</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo622"><tt>\r
+cl_qpool_grow</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qpool_h.html#robo623"><tt>\r
+cl_qpool_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo624"><tt>\r
+cl_qpool_put</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qpool_h.html#robo625"><tt>\r
+cl_qpool_put_list</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo626"><tt>\r
+cl_qpool_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo_top_of_doc"><tt>\r
+cl_rbmap.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_rbmap_h.html#robo628"><tt>\r
+cl_rbmap_count</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo629"><tt>\r
+cl_rbmap_end</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_rbmap_h.html#robo630"><tt>\r
+cl_rbmap_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo631"><tt>\r
+cl_rbmap_insert</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_rbmap_h.html#robo632"><tt>\r
+cl_rbmap_item_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo633"><tt>\r
+cl_rbmap_left</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_rbmap_h.html#robo634"><tt>\r
+cl_rbmap_remove_item</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo635"><tt>\r
+cl_rbmap_reset</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_rbmap_h.html#robo636"><tt>\r
+cl_rbmap_right</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo637"><tt>\r
+cl_rbmap_root</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_rbmap_h.html#robo638"><tt>\r
+cl_rbmap_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo462"><tt>\r
+cl_rel_alloc</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo463"><tt>\r
+cl_rel_free</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_reqmgr_h.html#robo641"><tt>\r
+cl_req_mgr_construct</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_reqmgr_h.html#robo642"><tt>\r
+cl_req_mgr_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_reqmgr_h.html#robo643"><tt>\r
+cl_req_mgr_get</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_reqmgr_h.html#robo644"><tt>\r
+cl_req_mgr_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_reqmgr_h.html#robo645"><tt>\r
+cl_req_mgr_resume</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_reqmgr_h.html#robo646"><tt>\r
+cl_req_mgr_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_reqmgr_h.html#robo647"><tt>\r
+cl_req_type_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_reqmgr_h.html#robo_top_of_doc"><tt>\r
+cl_reqmgr.h</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo496"><tt>\r
+cl_rollback_pnp_state</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo497"><tt>\r
+cl_set_pnp_state</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_spinlock_h.html#robo_top_of_doc"><tt>\r
+cl_spinlock.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_spinlock_h.html#robo648"><tt>\r
+cl_spinlock_acquire</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_spinlock_h.html#robo649"><tt>\r
+cl_spinlock_construct</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_spinlock_h.html#robo650"><tt>\r
+cl_spinlock_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_spinlock_h.html#robo651"><tt>\r
+cl_spinlock_init</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_spinlock_h.html#robo652"><tt>\r
+cl_spinlock_release</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_types_h.html#robo303"><tt>\r
+CL_STATUS_MSG</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_types_h.html#robo304"><tt>\r
+cl_status_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_syscallback_h.html#robo655"><tt>\r
+cl_sys_callback_get</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_syscallback_h.html#robo656"><tt>\r
+cl_sys_callback_put</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_syscallback_h.html#robo657"><tt>\r
+cl_sys_callback_queue</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_syscallback_h.html#robo_top_of_doc"><tt>\r
+cl_syscallback.h</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_thread_h.html#robo_top_of_doc"><tt>\r
+cl_thread.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_threadpool_h.html#robo658"><tt>\r
+cl_thread_pool_construct</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_threadpool_h.html#robo659"><tt>\r
+cl_thread_pool_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_threadpool_h.html#robo660"><tt>\r
+cl_thread_pool_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_threadpool_h.html#robo661"><tt>\r
+cl_thread_pool_signal</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_threadpool_h.html#robo662"><tt>\r
+cl_thread_pool_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_thread_h.html#robo666"><tt>\r
+cl_thread_stall</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_thread_h.html#robo667"><tt>\r
+cl_thread_suspend</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_threadpool_h.html#robo_top_of_doc"><tt>\r
+cl_threadpool.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo_top_of_doc"><tt>\r
+cl_timer.h</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_timer_h.html#robo674"><tt>\r
+cl_timer_construct</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo675"><tt>\r
+cl_timer_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_timer_h.html#robo676"><tt>\r
+cl_timer_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo677"><tt>\r
+cl_timer_start</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_timer_h.html#robo678"><tt>\r
+cl_timer_stop</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo679"><tt>\r
+cl_timer_trim</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_debug_h.html#robo312"><tt>\r
+CL_TRACE</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_debug_h.html#robo313"><tt>\r
+CL_TRACE_EXIT</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_types_h.html#robo_top_of_doc"><tt>\r
+cl_types.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo_top_of_doc"><tt>\r
+cl_vector.h</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo685"><tt>\r
+cl_vector_apply_func</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo686"><tt>\r
+cl_vector_at</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo687"><tt>\r
+cl_vector_construct</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo688"><tt>\r
+cl_vector_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo689"><tt>\r
+cl_vector_find_from_end</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo690"><tt>\r
+cl_vector_find_from_start</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo691"><tt>\r
+cl_vector_get</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo692"><tt>\r
+cl_vector_get_capacity</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo693"><tt>\r
+cl_vector_get_ptr</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo694"><tt>\r
+cl_vector_get_size</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo695"><tt>\r
+cl_vector_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo696"><tt>\r
+cl_vector_set</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo697"><tt>\r
+cl_vector_set_capacity</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo698"><tt>\r
+cl_vector_set_min_size</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo699"><tt>\r
+cl_vector_set_size</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo700"><tt>\r
+cl_vector_t</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo498"><tt>\r
+cl_vfptr_pnp_po_t</tt></a></td>\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo499"><tt>\r
+cl_vfptr_query_txt</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_waitobj_h.html#robo_top_of_doc"><tt>\r
+cl_waitobj.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_waitobj_h.html#robo701"><tt>\r
+cl_waitobj_create</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_waitobj_h.html#robo702"><tt>\r
+cl_waitobj_deref</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_waitobj_h.html#robo703"><tt>\r
+cl_waitobj_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_waitobj_h.html#robo704"><tt>\r
+cl_waitobj_handle_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_waitobj_h.html#robo705"><tt>\r
+cl_waitobj_ref</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_waitobj_h.html#robo706"><tt>\r
+cl_waitobj_reset</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_waitobj_h.html#robo707"><tt>\r
+cl_waitobj_signal</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_waitobj_h.html#robo708"><tt>\r
+cl_waitobj_wait_on</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo435"><tt>\r
+cl_zalloc</tt></a></td>\r
+<td  class="uneven"><a href="./complib/comp_lib_h.html#robo_top_of_doc"><tt>\r
+comp_lib.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo9"><tt>\r
+Composite Pool</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo40"><tt>\r
+Constants</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_types_h.html#robo263"><tt>\r
+Data Types</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_debug_h.html#robo314"><tt>\r
+Debug Levels</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_debug_h.html#robo10"><tt>\r
+Debug Output</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo835"><tt>\r
+DM_SVC_NAME</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_event_h.html#robo11"><tt>\r
+Event</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo12"><tt>\r
+Flexi Map</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo45"><tt>\r
+ib_access_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo46"><tt>\r
+ib_add_svc_entry</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo_top_of_doc"><tt>\r
+ib_al.h</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo47"><tt>\r
+ib_al_flags_t</tt></a></td>\r
+<td  class="even"><a href="./kernel/iba/ib_al_ifc_h.html#robo_top_of_doc"><tt>\r
+ib_al_ifc.h</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./kernel/iba/ib_al_ifc_h.html#robo0"><tt>\r
+ib_al_ifc.h</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo_top_of_doc"><tt>\r
+ib_al_ioctl.h</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo48"><tt>\r
+ib_alloc_pd</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo49"><tt>\r
+ib_api_status_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo50"><tt>\r
+ib_apm_state_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo51"><tt>\r
+ib_apr_info_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo52"><tt>\r
+ib_apr_pdata_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo53"><tt>\r
+ib_apr_status_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo54"><tt>\r
+ib_ari_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo55"><tt>\r
+ib_async_event_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo1155"><tt>\r
+ib_async_event_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo56"><tt>\r
+ib_atomic_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo57"><tt>\r
+ib_av_attr_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo58"><tt>\r
+ib_bind_mw</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo59"><tt>\r
+ib_bind_wr_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo60"><tt>\r
+ib_ca_attr_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo61"><tt>\r
+ib_ca_mod_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo62"><tt>\r
+ib_cancel_mad</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo63"><tt>\r
+ib_cancel_query</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo64"><tt>\r
+ib_cep_listen_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo_top_of_doc"><tt>\r
+ib_ci.h</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo65"><tt>\r
+ib_ci_call</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/iba/ib_ci_ifc_h.html#robo_top_of_doc"><tt>\r
+ib_ci_ifc.h</tt></a></td>\r
+<td  class="even"><a href="./kernel/iba/ib_ci_ifc_h.html#robo1"><tt>\r
+ib_ci_ifc.h</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo66"><tt>\r
+ib_ci_op_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo709"><tt>\r
+IB_CLASS_CAP_GETSET</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo710"><tt>\r
+IB_CLASS_CAP_TRAP</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo836"><tt>\r
+ib_class_is_vendor_specific</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo837"><tt>\r
+ib_class_is_vendor_specific_high</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo838"><tt>\r
+ib_class_is_vendor_specific_low</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo839"><tt>\r
+ib_class_port_info_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo711"><tt>\r
+IB_CLASS_RESP_TIME_MASK</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo67"><tt>\r
+ib_close_al</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo68"><tt>\r
+ib_close_ca</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo69"><tt>\r
+ib_cm_apr</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo70"><tt>\r
+ib_cm_apr_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo71"><tt>\r
+ib_cm_apr_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo72"><tt>\r
+ib_cm_cancel</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo73"><tt>\r
+ib_cm_cap_mask_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo74"><tt>\r
+ib_cm_drep</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo75"><tt>\r
+ib_cm_drep_rec_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo76"><tt>\r
+ib_cm_drep_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo77"><tt>\r
+ib_cm_dreq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo78"><tt>\r
+ib_cm_dreq_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo79"><tt>\r
+ib_cm_dreq_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo80"><tt>\r
+ib_cm_failover_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo81"><tt>\r
+ib_cm_handoff</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo82"><tt>\r
+ib_cm_lap</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo83"><tt>\r
+ib_cm_lap_rec_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo84"><tt>\r
+ib_cm_lap_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo85"><tt>\r
+ib_cm_listen</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo86"><tt>\r
+ib_cm_listen_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo87"><tt>\r
+ib_cm_mra</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo88"><tt>\r
+ib_cm_mra_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo89"><tt>\r
+ib_cm_mra_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo90"><tt>\r
+ib_cm_rej</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo91"><tt>\r
+ib_cm_rej_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo92"><tt>\r
+ib_cm_rej_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo93"><tt>\r
+ib_cm_rep</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo94"><tt>\r
+ib_cm_rep_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo95"><tt>\r
+ib_cm_rep_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo96"><tt>\r
+ib_cm_req</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo97"><tt>\r
+ib_cm_req_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo98"><tt>\r
+ib_cm_req_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo99"><tt>\r
+ib_cm_rtu</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo100"><tt>\r
+ib_cm_rtu_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo101"><tt>\r
+ib_cm_rtu_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo102"><tt>\r
+ib_copy_ca_attr</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo103"><tt>\r
+ib_cq_create_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo104"><tt>\r
+ib_create_av</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo105"><tt>\r
+ib_create_cq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo106"><tt>\r
+ib_create_ioc</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo107"><tt>\r
+ib_create_mad_pool</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo108"><tt>\r
+ib_create_mw</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo109"><tt>\r
+ib_create_qp</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo110"><tt>\r
+ib_dealloc_pd</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo712"><tt>\r
+IB_DEFAULT_PKEY</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo713"><tt>\r
+IB_DEFAULT_SUBNET_PREFIX</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo111"><tt>\r
+ib_dereg_mad_pool</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo112"><tt>\r
+ib_dereg_mr</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo113"><tt>\r
+ib_dereg_pnp</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo114"><tt>\r
+ib_dereg_svc</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1156"><tt>\r
+ib_deregister_ca</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo115"><tt>\r
+ib_destroy_av</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo116"><tt>\r
+ib_destroy_cq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo117"><tt>\r
+ib_destroy_ioc</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo118"><tt>\r
+ib_destroy_mad_pool</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo119"><tt>\r
+ib_destroy_mw</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo120"><tt>\r
+ib_destroy_qp</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo121"><tt>\r
+ib_device_attr_mask_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo122"><tt>\r
+ib_dgrm_info_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo978"><tt>\r
+ib_dm_get_slot_lo_hi</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo840"><tt>\r
+ib_dm_mad_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo979"><tt>\r
+ib_dm_set_slot_lo_hi</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo123"><tt>\r
+ib_drep_pdata_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo124"><tt>\r
+ib_dreq_pdata_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo1157"><tt>\r
+ib_event_rec_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo841"><tt>\r
+ib_field32_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo125"><tt>\r
+ib_force_apm</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo842"><tt>\r
+ib_get_async_event_str</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo126"><tt>\r
+ib_get_ca_by_gid</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo127"><tt>\r
+ib_get_ca_guids</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo843"><tt>\r
+ib_get_err_str</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo128"><tt>\r
+ib_get_guid</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo129"><tt>\r
+ib_get_mad</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo130"><tt>\r
+ib_get_mad_buf</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo844"><tt>\r
+ib_get_node_type_str</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo131"><tt>\r
+ib_get_port_by_gid</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo845"><tt>\r
+ib_get_port_state_from_str</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo846"><tt>\r
+ib_get_port_state_str</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo132"><tt>\r
+ib_get_query_node_rec</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo133"><tt>\r
+ib_get_query_path_rec</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo134"><tt>\r
+ib_get_query_portinfo_rec</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo135"><tt>\r
+ib_get_query_result</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo136"><tt>\r
+ib_get_query_svc_rec</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo137"><tt>\r
+ib_get_spl_qp</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo847"><tt>\r
+ib_get_wc_status_str</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo848"><tt>\r
+ib_get_wc_type_str</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo849"><tt>\r
+ib_get_wr_type_str</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo850"><tt>\r
+ib_gid_get_guid</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo851"><tt>\r
+ib_gid_get_subnet_prefix</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo852"><tt>\r
+ib_gid_is_link_local</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo853"><tt>\r
+ib_gid_is_site_local</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo138"><tt>\r
+ib_gid_pair_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo854"><tt>\r
+ib_gid_prefix_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo855"><tt>\r
+ib_gid_set_default</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo856"><tt>\r
+ib_gid_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo857"><tt>\r
+ib_grh_get_ver_class_flow</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo858"><tt>\r
+ib_grh_set_ver_class_flow</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo859"><tt>\r
+ib_grh_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo860"><tt>\r
+ib_guid_info_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo139"><tt>\r
+ib_guid_pair_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo861"><tt>\r
+ib_inform_get_dev_id</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo862"><tt>\r
+ib_inform_get_prod_type</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo863"><tt>\r
+ib_inform_get_qpn</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo864"><tt>\r
+ib_inform_get_resp_time_val</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo865"><tt>\r
+ib_inform_get_trap_num</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo866"><tt>\r
+ib_inform_get_vend_id</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo867"><tt>\r
+ib_inform_info_record_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo868"><tt>\r
+ib_inform_set_dev_id</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo869"><tt>\r
+ib_inform_set_prod_type</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo870"><tt>\r
+ib_inform_set_qpn</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo871"><tt>\r
+ib_inform_set_resp_time_val</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo872"><tt>\r
+ib_inform_set_trap_num</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo873"><tt>\r
+ib_inform_set_vend_id</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo140"><tt>\r
+ib_init_dgrm_svc</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo141"><tt>\r
+ib_init_type_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo714"><tt>\r
+IB_INVALID_PORT_NUM</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo874"><tt>\r
+ib_ioc_profile_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo875"><tt>\r
+ib_iou_info_diag_dev_id</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo876"><tt>\r
+ib_iou_info_option_rom</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo877"><tt>\r
+ib_iou_info_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo142"><tt>\r
+ib_join_mcast</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo143"><tt>\r
+ib_lap_pdata_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo144"><tt>\r
+ib_leave_mcast</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo878"><tt>\r
+ib_lft_record_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo715"><tt>\r
+IB_LID_MCAST_END</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo716"><tt>\r
+IB_LID_MCAST_START</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo145"><tt>\r
+ib_lid_pair_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo717"><tt>\r
+IB_LID_PERMISSIVE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo718"><tt>\r
+IB_LID_UCAST_END</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo719"><tt>\r
+IB_LID_UCAST_START</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo720"><tt>\r
+ib_link_states_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo146"><tt>\r
+ib_listen_err_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo147"><tt>\r
+ib_listen_info_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo148"><tt>\r
+ib_local_ds_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo149"><tt>\r
+ib_local_mad</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo721"><tt>\r
+IB_MAD_ATTR_CLASS_PORT_INFO</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo722"><tt>\r
+IB_MAD_ATTR_DIAG_CODE</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo723"><tt>\r
+IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo724"><tt>\r
+IB_MAD_ATTR_GUID_INFO</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo725"><tt>\r
+IB_MAD_ATTR_INFORM_INFO</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo726"><tt>\r
+IB_MAD_ATTR_IO_UNIT_INFO</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo727"><tt>\r
+IB_MAD_ATTR_IOC_PROFILE</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo728"><tt>\r
+IB_MAD_ATTR_LED_INFO</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo729"><tt>\r
+IB_MAD_ATTR_LFT_RECORD</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo730"><tt>\r
+IB_MAD_ATTR_LIN_FWD_TBL</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo731"><tt>\r
+IB_MAD_ATTR_LINK_RECORD</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo732"><tt>\r
+IB_MAD_ATTR_MCAST_FWD_TBL</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo733"><tt>\r
+IB_MAD_ATTR_MCMEMBER_RECORD</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo734"><tt>\r
+IB_MAD_ATTR_MULTIPATH_RECORD</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo735"><tt>\r
+IB_MAD_ATTR_NODE_DESC</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo736"><tt>\r
+IB_MAD_ATTR_NODE_INFO</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo737"><tt>\r
+IB_MAD_ATTR_NODE_RECORD</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo738"><tt>\r
+IB_MAD_ATTR_NOTICE</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo739"><tt>\r
+IB_MAD_ATTR_P_KEY_TABLE</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo740"><tt>\r
+IB_MAD_ATTR_PATH_RECORD</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo741"><tt>\r
+IB_MAD_ATTR_PKEYTBL_RECORD</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo742"><tt>\r
+IB_MAD_ATTR_PORT_CNTRS</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo743"><tt>\r
+IB_MAD_ATTR_PORT_INFO</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo744"><tt>\r
+IB_MAD_ATTR_PORT_SMPL_CTRL</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo745"><tt>\r
+IB_MAD_ATTR_PORT_SMPL_RSLT</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo746"><tt>\r
+IB_MAD_ATTR_PORTINFO_RECORD</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo747"><tt>\r
+IB_MAD_ATTR_PREPARE_TO_TEST</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo748"><tt>\r
+IB_MAD_ATTR_RND_FWD_TBL</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo749"><tt>\r
+IB_MAD_ATTR_SERVICE_ENTRIES</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo750"><tt>\r
+IB_MAD_ATTR_SERVICE_RECORD</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo751"><tt>\r
+IB_MAD_ATTR_SLVL_RECORD</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo752"><tt>\r
+IB_MAD_ATTR_SLVL_TABLE</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo753"><tt>\r
+IB_MAD_ATTR_SM_INFO</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo754"><tt>\r
+IB_MAD_ATTR_SMINFO_RECORD</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo755"><tt>\r
+IB_MAD_ATTR_SVC_ASSOCIATION_RECORD</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo756"><tt>\r
+IB_MAD_ATTR_SWITCH_INFO</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo757"><tt>\r
+IB_MAD_ATTR_TEST_DEVICE_LOOP</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo758"><tt>\r
+IB_MAD_ATTR_TEST_DEVICE_ONCE</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo759"><tt>\r
+IB_MAD_ATTR_TRACE_RECORD</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo760"><tt>\r
+IB_MAD_ATTR_VENDOR_DIAG</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo761"><tt>\r
+IB_MAD_ATTR_VL_ARBITRATION</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo762"><tt>\r
+IB_MAD_ATTR_VLARB_RECORD</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo150"><tt>\r
+ib_mad_element_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo879"><tt>\r
+ib_mad_init_new</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo880"><tt>\r
+ib_mad_init_response</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo881"><tt>\r
+ib_mad_is_response</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo763"><tt>\r
+IB_MAD_METHOD_GET</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo764"><tt>\r
+IB_MAD_METHOD_GET_RESP</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo765"><tt>\r
+IB_MAD_METHOD_GETTABLE</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo766"><tt>\r
+IB_MAD_METHOD_GETTABLE_RESP</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo767"><tt>\r
+IB_MAD_METHOD_REPORT</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo768"><tt>\r
+IB_MAD_METHOD_REPORT_RESP</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo769"><tt>\r
+IB_MAD_METHOD_RESP_MASK</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo770"><tt>\r
+IB_MAD_METHOD_SEND</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo771"><tt>\r
+IB_MAD_METHOD_SET</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo772"><tt>\r
+IB_MAD_METHOD_TRAP</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo773"><tt>\r
+IB_MAD_METHOD_TRAP_REPRESS</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo774"><tt>\r
+IB_MAD_STATUS_BUSY</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo775"><tt>\r
+IB_MAD_STATUS_INVALID_FIELD</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo776"><tt>\r
+IB_MAD_STATUS_REDIRECT</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo777"><tt>\r
+IB_MAD_STATUS_UNSUP_CLASS_VER</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo778"><tt>\r
+IB_MAD_STATUS_UNSUP_METHOD</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo779"><tt>\r
+IB_MAD_STATUS_UNSUP_METHOD_ATTR</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo151"><tt>\r
+ib_mad_svc_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo152"><tt>\r
+ib_mad_svc_type_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo882"><tt>\r
+ib_mad_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo780"><tt>\r
+IB_MAX_METHOD</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo781"><tt>\r
+IB_MCAST_BLOCK_ID_MASK_HO</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo782"><tt>\r
+IB_MCAST_BLOCK_SIZE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo783"><tt>\r
+IB_MCAST_MASK_SIZE</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo784"><tt>\r
+IB_MCAST_MAX_BLOCK_ID</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo785"><tt>\r
+IB_MCAST_POSITION_MASK_HO</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo786"><tt>\r
+IB_MCAST_POSITION_MAX</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo787"><tt>\r
+IB_MCAST_POSITION_SHIFT</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo153"><tt>\r
+ib_mcast_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo154"><tt>\r
+ib_mcast_req_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo788"><tt>\r
+IB_MCLASS_BM</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo789"><tt>\r
+IB_MCLASS_COMM_MGMT</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo790"><tt>\r
+IB_MCLASS_DEV_MGMT</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo791"><tt>\r
+IB_MCLASS_PERF</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo792"><tt>\r
+IB_MCLASS_SNMP</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo793"><tt>\r
+IB_MCLASS_SUBN_ADM</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo794"><tt>\r
+IB_MCLASS_SUBN_DIR</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo795"><tt>\r
+IB_MCLASS_SUBN_LID</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo796"><tt>\r
+IB_MCLASS_VENDOR_HIGH_RANGE_MAX</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo797"><tt>\r
+IB_MCLASS_VENDOR_HIGH_RANGE_MIN</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo798"><tt>\r
+IB_MCLASS_VENDOR_LOW_RANGE_MAX</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo799"><tt>\r
+IB_MCLASS_VENDOR_LOW_RANGE_MIN</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo883"><tt>\r
+ib_member_get_scope</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo884"><tt>\r
+ib_member_get_scope_state</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo885"><tt>\r
+ib_member_get_sl_flow_hop</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo886"><tt>\r
+ib_member_get_state</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo887"><tt>\r
+ib_member_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo888"><tt>\r
+ib_member_set_join_state</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo889"><tt>\r
+ib_member_set_scope</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo890"><tt>\r
+ib_member_set_scope_state</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo891"><tt>\r
+ib_member_set_sl_flow_hop</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo892"><tt>\r
+ib_member_set_state</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo155"><tt>\r
+ib_modify_av</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo156"><tt>\r
+ib_modify_ca</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo157"><tt>\r
+ib_modify_cq</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo158"><tt>\r
+ib_modify_qp</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo159"><tt>\r
+ib_mr_attr_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo160"><tt>\r
+ib_mr_create_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo161"><tt>\r
+ib_mr_mod_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo162"><tt>\r
+ib_mra_pdata_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo800"><tt>\r
+IB_MTU_TYPE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo893"><tt>\r
+ib_net16_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo894"><tt>\r
+ib_net32_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo895"><tt>\r
+ib_net64_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo896"><tt>\r
+ib_node_info_get_local_port_num</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo897"><tt>\r
+ib_node_info_get_vendor_id</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo898"><tt>\r
+ib_node_info_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo801"><tt>\r
+IB_NODE_NUM_PORTS_MAX</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo802"><tt>\r
+IB_NODE_TYPE_CA</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo803"><tt>\r
+IB_NODE_TYPE_ROUTER</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo804"><tt>\r
+IB_NODE_TYPE_SWITCH</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo899"><tt>\r
+ib_notice_get_count</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo900"><tt>\r
+ib_notice_get_dev_id</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo901"><tt>\r
+ib_notice_get_generic</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo902"><tt>\r
+ib_notice_get_prod_type</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo903"><tt>\r
+ib_notice_get_toggle</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo904"><tt>\r
+ib_notice_get_trap_num</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo905"><tt>\r
+ib_notice_get_type</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo906"><tt>\r
+ib_notice_get_vend_id</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo805"><tt>\r
+IB_NOTICE_NODE_TYPE_CA</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo806"><tt>\r
+IB_NOTICE_NODE_TYPE_ROUTER</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo807"><tt>\r
+IB_NOTICE_NODE_TYPE_SUBN_MGMT</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo808"><tt>\r
+IB_NOTICE_NODE_TYPE_SWITCH</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo907"><tt>\r
+ib_notice_set_count</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo908"><tt>\r
+ib_notice_set_dev_id</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo909"><tt>\r
+ib_notice_set_generic</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo910"><tt>\r
+ib_notice_set_prod_type</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo911"><tt>\r
+ib_notice_set_toggle</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo912"><tt>\r
+ib_notice_set_trap_num</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo913"><tt>\r
+ib_notice_set_type</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo914"><tt>\r
+ib_notice_set_vend_id</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo163"><tt>\r
+ib_open_al</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo164"><tt>\r
+ib_open_ca</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo915"><tt>\r
+ib_path_get_ipd</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo809"><tt>\r
+IB_PATH_REC_BASE_MASK</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo916"><tt>\r
+ib_path_rec_flow_lbl</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo917"><tt>\r
+ib_path_rec_hop_limit</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo918"><tt>\r
+ib_path_rec_init_local</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo919"><tt>\r
+ib_path_rec_mtu</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo920"><tt>\r
+ib_path_rec_mtu_sel</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo921"><tt>\r
+ib_path_rec_pkt_life</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo922"><tt>\r
+ib_path_rec_pkt_life_sel</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo923"><tt>\r
+ib_path_rec_rate</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo924"><tt>\r
+ib_path_rec_rate_sel</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo810"><tt>\r
+IB_PATH_REC_SELECTOR_MASK</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo925"><tt>\r
+ib_path_rec_set_hop_flow_raw</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo926"><tt>\r
+ib_path_rec_sl</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo927"><tt>\r
+ib_path_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo811"><tt>\r
+IB_PATH_SELECTOR_TYPE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo165"><tt>\r
+ib_pd_type_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo166"><tt>\r
+ib_peek_cq</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo167"><tt>\r
+ib_pfn_cm_apr_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo168"><tt>\r
+ib_pfn_cm_drep_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo169"><tt>\r
+ib_pfn_cm_dreq_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo170"><tt>\r
+ib_pfn_cm_lap_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo171"><tt>\r
+ib_pfn_cm_mra_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo172"><tt>\r
+ib_pfn_cm_rej_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo173"><tt>\r
+ib_pfn_cm_rep_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo174"><tt>\r
+ib_pfn_cm_req_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo175"><tt>\r
+ib_pfn_cm_rtu_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo176"><tt>\r
+ib_pfn_comp_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo177"><tt>\r
+ib_pfn_destroy_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo178"><tt>\r
+ib_pfn_event_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo179"><tt>\r
+ib_pfn_listen_err_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo180"><tt>\r
+ib_pfn_mad_comp_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo181"><tt>\r
+ib_pfn_mcast_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo182"><tt>\r
+ib_pfn_pnp_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo183"><tt>\r
+ib_pfn_query_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo184"><tt>\r
+ib_pfn_reg_svc_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo185"><tt>\r
+ib_pfn_report_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo186"><tt>\r
+ib_pfn_sub_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo187"><tt>\r
+ib_phys_create_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo188"><tt>\r
+ib_phys_range_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo812"><tt>\r
+IB_PKEY_BASE_MASK</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo813"><tt>\r
+IB_PKEY_ENTRIES_MAX</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo928"><tt>\r
+ib_pkey_get_base</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo929"><tt>\r
+ib_pkey_is_full_member</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo814"><tt>\r
+IB_PKEY_MAX_BLOCKS</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo930"><tt>\r
+ib_pkey_table_info_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo815"><tt>\r
+IB_PKEY_TYPE_MASK</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo189"><tt>\r
+ib_pnp_ca_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo190"><tt>\r
+ib_pnp_class_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo191"><tt>\r
+ib_pnp_event_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo192"><tt>\r
+ib_pnp_ioc_path_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo193"><tt>\r
+ib_pnp_ioc_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo194"><tt>\r
+ib_pnp_iou_rec_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo195"><tt>\r
+ib_pnp_port_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo196"><tt>\r
+ib_pnp_rec_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo197"><tt>\r
+ib_pnp_req_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo198"><tt>\r
+ib_poll_cq</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo199"><tt>\r
+ib_port_attr_mod_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo200"><tt>\r
+ib_port_attr_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo201"><tt>\r
+ib_port_cap_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo931"><tt>\r
+ib_port_info_compute_rate</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo932"><tt>\r
+ib_port_info_get_link_speed_active</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo933"><tt>\r
+ib_port_info_get_link_speed_sup</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo934"><tt>\r
+ib_port_info_get_lmc</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo935"><tt>\r
+ib_port_info_get_mpb</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo936"><tt>\r
+ib_port_info_get_mtu_cap</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo937"><tt>\r
+ib_port_info_get_neighbor_mtu</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo938"><tt>\r
+ib_port_info_get_op_vls</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo939"><tt>\r
+ib_port_info_get_port_state</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo940"><tt>\r
+ib_port_info_get_vl_cap</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo941"><tt>\r
+ib_port_info_set_link_speed_sup</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo942"><tt>\r
+ib_port_info_set_lmc</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo943"><tt>\r
+ib_port_info_set_mpb</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo944"><tt>\r
+ib_port_info_set_neighbor_mtu</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo945"><tt>\r
+ib_port_info_set_op_vls</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo946"><tt>\r
+ib_port_info_set_port_state</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo947"><tt>\r
+ib_port_info_set_state_no_change</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo948"><tt>\r
+ib_port_info_set_timeout</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo949"><tt>\r
+ib_port_info_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo202"><tt>\r
+ib_post_recv</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo203"><tt>\r
+ib_post_send</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo204"><tt>\r
+ib_put_mad</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo816"><tt>\r
+IB_QP1_WELL_KNOWN_Q_KEY</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo205"><tt>\r
+ib_qp_attr_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo206"><tt>\r
+ib_qp_create_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo207"><tt>\r
+ib_qp_mod_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo208"><tt>\r
+ib_qp_opts_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo209"><tt>\r
+ib_qp_state_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo210"><tt>\r
+ib_qp_type_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo211"><tt>\r
+ib_query</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo212"><tt>\r
+ib_query_av</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo213"><tt>\r
+ib_query_ca</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo214"><tt>\r
+ib_query_ca_by_guid</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo215"><tt>\r
+ib_query_cq</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo216"><tt>\r
+ib_query_mr</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo217"><tt>\r
+ib_query_mw</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo218"><tt>\r
+ib_query_qp</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo219"><tt>\r
+ib_query_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo220"><tt>\r
+ib_query_req_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo221"><tt>\r
+ib_query_type_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo222"><tt>\r
+ib_rearm_cq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo223"><tt>\r
+ib_rearm_n_cq</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo224"><tt>\r
+ib_recv_opt_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo225"><tt>\r
+ib_recv_wr_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo226"><tt>\r
+ib_reg_ioc</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo227"><tt>\r
+ib_reg_mad_pool</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo228"><tt>\r
+ib_reg_mad_svc</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo229"><tt>\r
+ib_reg_mem</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo230"><tt>\r
+ib_reg_phys</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo231"><tt>\r
+ib_reg_pnp</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo232"><tt>\r
+ib_reg_shared</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo233"><tt>\r
+ib_reg_shmid</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo234"><tt>\r
+ib_reg_svc</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo235"><tt>\r
+ib_reg_svc_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo236"><tt>\r
+ib_reg_svc_req_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1158"><tt>\r
+ib_register_ca</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo237"><tt>\r
+ib_rej_pdata_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo238"><tt>\r
+ib_rej_status_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo239"><tt>\r
+ib_reject_ioc</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo240"><tt>\r
+ib_remove_svc_entry</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo241"><tt>\r
+ib_rep_pdata_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo242"><tt>\r
+ib_report_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo243"><tt>\r
+ib_req_pdata_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo244"><tt>\r
+ib_rereg_mem</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo245"><tt>\r
+ib_rereg_phys</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo950"><tt>\r
+ib_rmpp_is_flag_set</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo951"><tt>\r
+ib_rmpp_mad_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo246"><tt>\r
+ib_rtu_pdata_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo952"><tt>\r
+ib_sa_mad_get_payload_ptr</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo953"><tt>\r
+ib_sa_mad_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo247"><tt>\r
+ib_send_mad</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo248"><tt>\r
+ib_send_opt_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo249"><tt>\r
+ib_send_wr_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo250"><tt>\r
+ib_shmid_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo251"><tt>\r
+ib_sidr_rep_pdata_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo252"><tt>\r
+ib_sidr_req_pdata_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo954"><tt>\r
+ib_slvl_table_get_vl</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo955"><tt>\r
+ib_slvl_table_record_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo956"><tt>\r
+ib_slvl_table_set_vl</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo957"><tt>\r
+ib_slvl_table_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo958"><tt>\r
+ib_sm_info_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo817"><tt>\r
+IB_SMINFO_ATTR_MOD_ACKNOWLEDGE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo818"><tt>\r
+IB_SMINFO_ATTR_MOD_DISABLE</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo819"><tt>\r
+IB_SMINFO_ATTR_MOD_DISCOVER</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo820"><tt>\r
+IB_SMINFO_ATTR_MOD_HANDOVER</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo821"><tt>\r
+IB_SMINFO_ATTR_MOD_STANDBY</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo959"><tt>\r
+ib_sminfo_get_priority</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo960"><tt>\r
+ib_sminfo_get_state</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo822"><tt>\r
+IB_SMINFO_STATE_DISCOVERING</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo823"><tt>\r
+IB_SMINFO_STATE_INIT</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo824"><tt>\r
+IB_SMINFO_STATE_MASTER</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo825"><tt>\r
+IB_SMINFO_STATE_NOTACTIVE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo826"><tt>\r
+IB_SMINFO_STATE_STANDBY</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo827"><tt>\r
+IB_SMP_DIRECTION</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo961"><tt>\r
+ib_smp_get_payload_ptr</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo962"><tt>\r
+ib_smp_get_status</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo963"><tt>\r
+ib_smp_init_new</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo964"><tt>\r
+ib_smp_is_d</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo965"><tt>\r
+ib_smp_is_response</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo828"><tt>\r
+IB_SMP_STATUS_MASK</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo966"><tt>\r
+ib_smp_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo253"><tt>\r
+ib_sub_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo254"><tt>\r
+ib_sub_req_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo829"><tt>\r
+IB_SUBNET_PATH_HOPS_MAX</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo255"><tt>\r
+ib_subscribe</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo967"><tt>\r
+ib_svc_entries_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo968"><tt>\r
+ib_svc_entry_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo969"><tt>\r
+ib_switch_info_clear_state_change</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo970"><tt>\r
+ib_switch_info_get_state_change</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo971"><tt>\r
+ib_switch_info_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo256"><tt>\r
+ib_sync_destroy</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo_top_of_doc"><tt>\r
+ib_types.h</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo257"><tt>\r
+ib_unsubscribe</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo258"><tt>\r
+ib_user_query_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo_top_of_doc"><tt>\r
+ib_uvp.h</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo972"><tt>\r
+ib_vl_arb_element_get_vl</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo973"><tt>\r
+ib_vl_arb_element_set_vl</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo974"><tt>\r
+ib_vl_arb_element_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo975"><tt>\r
+ib_vl_arb_table_record_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo976"><tt>\r
+ib_vl_arb_table_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo259"><tt>\r
+ib_wc_status_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo260"><tt>\r
+ib_wc_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo261"><tt>\r
+ib_wc_type_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo262"><tt>\r
+ib_wr_type_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo977"><tt>\r
+ioc_at_slot</tt></a></td>\r
+<td  class="even"><a href="./kernel/iba/ioc_ifc_h.html#robo_top_of_doc"><tt>\r
+ioc_ifc.h</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./kernel/iba/ioc_ifc_h.html#robo2"><tt>\r
+ioc_ifc.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo13"><tt>\r
+IOCTL Object</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo357"><tt>\r
+IOCTL_CODE</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/iba/iou_ifc_h.html#robo3"><tt>\r
+iou_ifc.h</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/iba/iou_ifc_h.html#robo_top_of_doc"><tt>\r
+iou_ifc.h</tt></a></td>\r
+<td  class="even"><a href="./kernel/iba/ipoib_ifc_h.html#robo_top_of_doc"><tt>\r
+ipoib_ifc.h</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./kernel/iba/ipoib_ifc_h.html#robo4"><tt>\r
+ipoib_ifc.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_irqlock_h.html#robo14"><tt>\r
+Irqlock</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo830"><tt>\r
+Join States</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo15"><tt>\r
+List</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_log_h.html#robo16"><tt>\r
+Log Provider</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo831"><tt>\r
+MAD_BLOCK_GRH_SIZE</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo832"><tt>\r
+MAD_BLOCK_SIZE</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo833"><tt>\r
+MAD_RMPP_DATA_SIZE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo834"><tt>\r
+MAD_RMPP_HDR_SIZE</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo17"><tt>\r
+Map</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_math_h.html#robo417"><tt>\r
+MAX</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo42"><tt>\r
+Memory Management</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_math_h.html#robo418"><tt>\r
+MIN</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_mutex_h.html#robo5"><tt>\r
+Mutex</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo18"><tt>\r
+Object</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_types_h.html#robo264"><tt>\r
+Object States</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_types_h.html#robo507"><tt>\r
+offsetof</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo38"><tt>\r
+Overview</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/comp_lib_h.html#robo19"><tt>\r
+Overview</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo43"><tt>\r
+Overview user-mode Verbs</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_types_h.html#robo265"><tt>\r
+Parameter Keywords</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_types_h.html#robo508"><tt>\r
+PARENT_STRUCT</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_passivelock_h.html#robo20"><tt>\r
+Passive Lock</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo483"><tt>\r
+PERF_DECLARE</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo484"><tt>\r
+PERF_DECLARE_START</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo21"><tt>\r
+Performance Counters</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo22"><tt>\r
+Plug and Play</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo23"><tt>\r
+Pointer Vector</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo24"><tt>\r
+Pool</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo25"><tt>\r
+Quick Composite Pool</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo26"><tt>\r
+Quick List</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlockpool_h.html#robo27"><tt>\r
+Quick Locking Pool</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo28"><tt>\r
+Quick Map</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo29"><tt>\r
+Quick Pool</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo30"><tt>\r
+RB Map</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_reqmgr_h.html#robo31"><tt>\r
+Request Manager</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_math_h.html#robo419"><tt>\r
+ROUNDUP</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_spinlock_h.html#robo32"><tt>\r
+Spinlock</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_syscallback_h.html#robo33"><tt>\r
+System Callback</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_threadpool_h.html#robo34"><tt>\r
+Thread Pool</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_timer_h.html#robo35"><tt>\r
+Timer</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo41"><tt>\r
+Type Definitions</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo980"><tt>\r
+ual_alloc_pd_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo981"><tt>\r
+ual_attach_mcast_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo982"><tt>\r
+ual_bind_file_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo983"><tt>\r
+ual_bind_mw_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo984"><tt>\r
+ual_cancel_mad_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo985"><tt>\r
+ual_cancel_sa_req_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo986"><tt>\r
+ual_cep_apr_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo987"><tt>\r
+ual_cep_drep_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo988"><tt>\r
+ual_cep_dreq_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo989"><tt>\r
+ual_cep_get_rtr_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo990"><tt>\r
+ual_cep_get_rts_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo991"><tt>\r
+ual_cep_get_timewait_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo992"><tt>\r
+ual_cep_handoff_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo993"><tt>\r
+ual_cep_lap_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo994"><tt>\r
+ual_cep_listen_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo995"><tt>\r
+ual_cep_mra_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo996"><tt>\r
+ual_cep_poll_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo997"><tt>\r
+ual_cep_rej_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo998"><tt>\r
+ual_cep_rep_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo999"><tt>\r
+ual_cep_rtu_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1000"><tt>\r
+ual_ci_call_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1001"><tt>\r
+ual_close_ca_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1002"><tt>\r
+ual_cm_req_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1003"><tt>\r
+ual_create_av_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1004"><tt>\r
+ual_create_cep_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1005"><tt>\r
+ual_create_cq_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1006"><tt>\r
+ual_create_mw_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1007"><tt>\r
+ual_create_qp_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1008"><tt>\r
+ual_dealloc_pd_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1009"><tt>\r
+ual_dereg_mad_pool_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1010"><tt>\r
+ual_dereg_mad_svc_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1011"><tt>\r
+ual_dereg_mr_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1012"><tt>\r
+ual_dereg_pnp_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1013"><tt>\r
+ual_destroy_av_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1014"><tt>\r
+ual_destroy_cq_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1015"><tt>\r
+ual_destroy_mw_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1016"><tt>\r
+ual_destroy_qp_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1017"><tt>\r
+ual_detach_mcast_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1018"><tt>\r
+ual_force_apm_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1019"><tt>\r
+ual_get_uvp_name_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1020"><tt>\r
+ual_mad_recv_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1021"><tt>\r
+ual_modify_av_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1022"><tt>\r
+ual_modify_ca_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1023"><tt>\r
+ual_modify_cq_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1024"><tt>\r
+ual_modify_qp_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1025"><tt>\r
+ual_open_ca_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1026"><tt>\r
+ual_peek_cq_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1027"><tt>\r
+ual_poll_cq_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1028"><tt>\r
+ual_poll_pnp_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1029"><tt>\r
+ual_post_recv_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1030"><tt>\r
+ual_post_send_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1031"><tt>\r
+ual_query_av_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1032"><tt>\r
+ual_query_ca_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1033"><tt>\r
+ual_query_cq_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1034"><tt>\r
+ual_query_mr_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1035"><tt>\r
+ual_query_mw_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1036"><tt>\r
+ual_query_qp_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1037"><tt>\r
+ual_rearm_cq_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1038"><tt>\r
+ual_rearm_n_cq_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1039"><tt>\r
+ual_rearm_pnp_ioctl_in_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1040"><tt>\r
+ual_rearm_pnp_ioctl_out_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1041"><tt>\r
+ual_reg_mad_pool_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1042"><tt>\r
+ual_reg_mad_svc_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1043"><tt>\r
+ual_reg_mem_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1044"><tt>\r
+ual_reg_pnp_ioctl_in_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1045"><tt>\r
+ual_reg_shared_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1046"><tt>\r
+ual_reg_shmid_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1047"><tt>\r
+ual_rereg_mem_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1048"><tt>\r
+ual_send_mad_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1049"><tt>\r
+ual_send_sa_req_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1050"><tt>\r
+ual_spl_qp_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1051"><tt>\r
+unsupported functions</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_types_h.html#robo680"><tt>\r
+UNUSED_PARAM</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1052"><tt>\r
+uvp_bind_mw</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1053"><tt>\r
+uvp_get_interface</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1054"><tt>\r
+uvp_interface_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1055"><tt>\r
+uvp_peek_cq</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1056"><tt>\r
+uvp_poll_cq</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1057"><tt>\r
+uvp_post_allocate_pd_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1058"><tt>\r
+uvp_post_attach_mcast_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1059"><tt>\r
+uvp_post_ci_call</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1060"><tt>\r
+uvp_post_close_ca_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1061"><tt>\r
+uvp_post_create_av_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1062"><tt>\r
+uvp_post_create_cq_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1063"><tt>\r
+uvp_post_create_mw_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1064"><tt>\r
+uvp_post_create_qp_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1065"><tt>\r
+uvp_post_deallocate_pd_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1066"><tt>\r
+uvp_post_destroy_av_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1067"><tt>\r
+uvp_post_destroy_cq_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1068"><tt>\r
+uvp_post_destroy_mw_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1069"><tt>\r
+uvp_post_destroy_qp_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1070"><tt>\r
+uvp_post_detach_mcast_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1071"><tt>\r
+uvp_post_modify_av_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1072"><tt>\r
+uvp_post_modify_ca_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1073"><tt>\r
+uvp_post_modify_qp_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1074"><tt>\r
+uvp_post_open_ca_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1075"><tt>\r
+uvp_post_query_av_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1076"><tt>\r
+uvp_post_query_ca_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1077"><tt>\r
+uvp_post_query_cq_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1078"><tt>\r
+uvp_post_query_mw_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1079"><tt>\r
+uvp_post_query_qp_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1080"><tt>\r
+uvp_post_recv</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1081"><tt>\r
+uvp_post_resize_cq_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1082"><tt>\r
+uvp_post_send</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1083"><tt>\r
+uvp_pre_allocate_pd</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1084"><tt>\r
+uvp_pre_attach_mcast</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1085"><tt>\r
+uvp_pre_ci_call</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1086"><tt>\r
+uvp_pre_close_ca_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1087"><tt>\r
+uvp_pre_create_av</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1088"><tt>\r
+uvp_pre_create_cq</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1089"><tt>\r
+uvp_pre_create_mw</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1090"><tt>\r
+uvp_pre_create_qp</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1091"><tt>\r
+uvp_pre_deallocate_pd</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1092"><tt>\r
+uvp_pre_destroy_av</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1093"><tt>\r
+uvp_pre_destroy_cq</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1094"><tt>\r
+uvp_pre_destroy_mw</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1095"><tt>\r
+uvp_pre_destroy_qp</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1096"><tt>\r
+uvp_pre_detach_mcast</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1097"><tt>\r
+uvp_pre_modify_av</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1098"><tt>\r
+uvp_pre_modify_ca</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1099"><tt>\r
+uvp_pre_modify_qp</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1100"><tt>\r
+uvp_pre_open_ca_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1101"><tt>\r
+uvp_pre_query_av</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1102"><tt>\r
+uvp_pre_query_ca</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1103"><tt>\r
+uvp_pre_query_cq</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1104"><tt>\r
+uvp_pre_query_mw</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1105"><tt>\r
+uvp_pre_query_qp</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1106"><tt>\r
+uvp_pre_resize_cq</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1107"><tt>\r
+uvp_rearm_cq</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1108"><tt>\r
+uvp_rearm_n_cq</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo36"><tt>\r
+Vector</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo39"><tt>\r
+Verbs</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_waitobj_h.html#robo37"><tt>\r
+Wait Object</tt></a></td>\r
+<td></td>\r
+<td></td>\r
+</tr>\r
+</table>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/robo_definitions.html b/trunk/docs/robo_definitions.html
new file mode 100644 (file)
index 0000000..035bbdf
--- /dev/null
@@ -0,0 +1,661 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="./robodoc.css" type="text/css">\r
+<title>Definitions</title>\r
+<!-- Source: ./inc/ -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<p>\r
+[<a href="./robo_sourcefiles.html#top">Sourcefiles</a>]\r
+[<a href="./masterindex.html#top">Index</a>]\r
+[<a href="#top">Definitions</a>]\r
+[<a href="./robo_functions.html#top">Functions</a>]\r
+[<a href="./robo_modules.html#top">Modules</a>]\r
+[<a href="./robo_strutures.html#top">Structures</a>]\r
+</p>\r
+<h1>Definitions</h1>\r
+<table cellspacing="3">\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_debug_h.html#robo305"><tt>\r
+64-bit Print Format</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo44"><tt>\r
+ATS</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo442"><tt>\r
+cl_destroy_type_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_debug_h.html#robo308"><tt>\r
+CL_ENTER</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_debug_h.html#robo309"><tt>\r
+CL_EXIT</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo279"><tt>\r
+CL_HTON16</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo282"><tt>\r
+CL_HTON32</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo283"><tt>\r
+CL_HTON64</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo347"><tt>\r
+cl_ioctl_handle_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo490"><tt>\r
+cl_irp_action_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_types_h.html#robo441"><tt>\r
+cl_is_state_valid</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo381"><tt>\r
+cl_list_iterator_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_log_h.html#robo395"><tt>\r
+cl_log_type_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo406"><tt>\r
+cl_map_iterator_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo286"><tt>\r
+CL_NTOH16</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo289"><tt>\r
+CL_NTOH32</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo290"><tt>\r
+CL_NTOH64</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo471"><tt>\r
+cl_perf_clr</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo475"><tt>\r
+cl_perf_inc</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo477"><tt>\r
+cl_perf_log</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo479"><tt>\r
+cl_perf_start</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo480"><tt>\r
+cl_perf_stop</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo481"><tt>\r
+cl_perf_update</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo482"><tt>\r
+cl_perf_update_ctr</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_async_proc_h.html#robo272"><tt>\r
+cl_pfn_async_proc_cb_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo301"><tt>\r
+cl_pfn_cpool_dtor_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_comppool_h.html#robo302"><tt>\r
+cl_pfn_cpool_init_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo342"><tt>\r
+cl_pfn_fmap_apply_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo343"><tt>\r
+cl_pfn_fmap_cmp_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo356"><tt>\r
+cl_pfn_ioctl_handler_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo392"><tt>\r
+cl_pfn_list_apply_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo393"><tt>\r
+cl_pfn_list_find_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo461"><tt>\r
+cl_pfn_obj_call_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo491"><tt>\r
+cl_pfn_pnp_po_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo529"><tt>\r
+cl_pfn_pool_dtor_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_pool_h.html#robo530"><tt>\r
+cl_pfn_pool_init_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo509"><tt>\r
+cl_pfn_ptr_vec_apply_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo510"><tt>\r
+cl_pfn_ptr_vec_find_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qcomppool_h.html#robo540"><tt>\r
+cl_pfn_qcpool_dtor_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo541"><tt>\r
+cl_pfn_qcpool_init_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo556"><tt>\r
+cl_pfn_qlist_apply_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo557"><tt>\r
+cl_pfn_qlist_find_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo595"><tt>\r
+cl_pfn_qmap_apply_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo616"><tt>\r
+cl_pfn_qpool_dtor_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qpool_h.html#robo617"><tt>\r
+cl_pfn_qpool_init_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo492"><tt>\r
+cl_pfn_query_text_t</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo493"><tt>\r
+cl_pfn_release_resources_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_reqmgr_h.html#robo639"><tt>\r
+cl_pfn_req_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_reqmgr_h.html#robo640"><tt>\r
+cl_pfn_reqmgr_get_count_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_syscallback_h.html#robo654"><tt>\r
+cl_pfn_sys_callback_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_thread_h.html#robo664"><tt>\r
+cl_pfn_thread_callback_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo673"><tt>\r
+cl_pfn_timer_callback_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo681"><tt>\r
+cl_pfn_vec_apply_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo682"><tt>\r
+cl_pfn_vec_dtor_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo683"><tt>\r
+cl_pfn_vec_find_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo684"><tt>\r
+cl_pfn_vec_init_t</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo494"><tt>\r
+cl_pnp_po_ext_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo495"><tt>\r
+cl_pnp_state_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_debug_h.html#robo311"><tt>\r
+CL_PRINT</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_reqmgr_h.html#robo647"><tt>\r
+cl_req_type_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_types_h.html#robo303"><tt>\r
+CL_STATUS_MSG</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_types_h.html#robo304"><tt>\r
+cl_status_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_debug_h.html#robo312"><tt>\r
+CL_TRACE</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_debug_h.html#robo313"><tt>\r
+CL_TRACE_EXIT</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo498"><tt>\r
+cl_vfptr_pnp_po_t</tt></a></td>\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo499"><tt>\r
+cl_vfptr_query_txt</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_waitobj_h.html#robo704"><tt>\r
+cl_waitobj_handle_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_types_h.html#robo263"><tt>\r
+Data Types</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_debug_h.html#robo314"><tt>\r
+Debug Levels</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo835"><tt>\r
+DM_SVC_NAME</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo45"><tt>\r
+ib_access_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo47"><tt>\r
+ib_al_flags_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo49"><tt>\r
+ib_api_status_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo50"><tt>\r
+ib_apm_state_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo53"><tt>\r
+ib_apr_status_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo1155"><tt>\r
+ib_async_event_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo56"><tt>\r
+ib_atomic_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo61"><tt>\r
+ib_ca_mod_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo73"><tt>\r
+ib_cm_cap_mask_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo80"><tt>\r
+ib_cm_failover_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo712"><tt>\r
+IB_DEFAULT_PKEY</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo713"><tt>\r
+IB_DEFAULT_SUBNET_PREFIX</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo121"><tt>\r
+ib_device_attr_mask_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo854"><tt>\r
+ib_gid_prefix_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo856"><tt>\r
+ib_gid_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo141"><tt>\r
+ib_init_type_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo714"><tt>\r
+IB_INVALID_PORT_NUM</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo715"><tt>\r
+IB_LID_MCAST_END</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo716"><tt>\r
+IB_LID_MCAST_START</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo717"><tt>\r
+IB_LID_PERMISSIVE</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo718"><tt>\r
+IB_LID_UCAST_END</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo719"><tt>\r
+IB_LID_UCAST_START</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo720"><tt>\r
+ib_link_states_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo147"><tt>\r
+ib_listen_info_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo721"><tt>\r
+IB_MAD_ATTR_CLASS_PORT_INFO</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo722"><tt>\r
+IB_MAD_ATTR_DIAG_CODE</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo723"><tt>\r
+IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo724"><tt>\r
+IB_MAD_ATTR_GUID_INFO</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo725"><tt>\r
+IB_MAD_ATTR_INFORM_INFO</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo726"><tt>\r
+IB_MAD_ATTR_IO_UNIT_INFO</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo727"><tt>\r
+IB_MAD_ATTR_IOC_PROFILE</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo728"><tt>\r
+IB_MAD_ATTR_LED_INFO</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo729"><tt>\r
+IB_MAD_ATTR_LFT_RECORD</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo730"><tt>\r
+IB_MAD_ATTR_LIN_FWD_TBL</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo731"><tt>\r
+IB_MAD_ATTR_LINK_RECORD</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo732"><tt>\r
+IB_MAD_ATTR_MCAST_FWD_TBL</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo733"><tt>\r
+IB_MAD_ATTR_MCMEMBER_RECORD</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo734"><tt>\r
+IB_MAD_ATTR_MULTIPATH_RECORD</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo735"><tt>\r
+IB_MAD_ATTR_NODE_DESC</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo736"><tt>\r
+IB_MAD_ATTR_NODE_INFO</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo737"><tt>\r
+IB_MAD_ATTR_NODE_RECORD</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo738"><tt>\r
+IB_MAD_ATTR_NOTICE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo739"><tt>\r
+IB_MAD_ATTR_P_KEY_TABLE</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo740"><tt>\r
+IB_MAD_ATTR_PATH_RECORD</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo741"><tt>\r
+IB_MAD_ATTR_PKEYTBL_RECORD</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo742"><tt>\r
+IB_MAD_ATTR_PORT_CNTRS</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo743"><tt>\r
+IB_MAD_ATTR_PORT_INFO</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo744"><tt>\r
+IB_MAD_ATTR_PORT_SMPL_CTRL</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo745"><tt>\r
+IB_MAD_ATTR_PORT_SMPL_RSLT</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo746"><tt>\r
+IB_MAD_ATTR_PORTINFO_RECORD</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo747"><tt>\r
+IB_MAD_ATTR_PREPARE_TO_TEST</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo748"><tt>\r
+IB_MAD_ATTR_RND_FWD_TBL</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo749"><tt>\r
+IB_MAD_ATTR_SERVICE_ENTRIES</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo750"><tt>\r
+IB_MAD_ATTR_SERVICE_RECORD</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo751"><tt>\r
+IB_MAD_ATTR_SLVL_RECORD</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo752"><tt>\r
+IB_MAD_ATTR_SLVL_TABLE</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo753"><tt>\r
+IB_MAD_ATTR_SM_INFO</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo754"><tt>\r
+IB_MAD_ATTR_SMINFO_RECORD</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo755"><tt>\r
+IB_MAD_ATTR_SVC_ASSOCIATION_RECORD</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo756"><tt>\r
+IB_MAD_ATTR_SWITCH_INFO</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo757"><tt>\r
+IB_MAD_ATTR_TEST_DEVICE_LOOP</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo758"><tt>\r
+IB_MAD_ATTR_TEST_DEVICE_ONCE</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo759"><tt>\r
+IB_MAD_ATTR_TRACE_RECORD</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo760"><tt>\r
+IB_MAD_ATTR_VENDOR_DIAG</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo761"><tt>\r
+IB_MAD_ATTR_VL_ARBITRATION</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo762"><tt>\r
+IB_MAD_ATTR_VLARB_RECORD</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo763"><tt>\r
+IB_MAD_METHOD_GET</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo764"><tt>\r
+IB_MAD_METHOD_GET_RESP</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo765"><tt>\r
+IB_MAD_METHOD_GETTABLE</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo766"><tt>\r
+IB_MAD_METHOD_GETTABLE_RESP</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo767"><tt>\r
+IB_MAD_METHOD_REPORT</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo768"><tt>\r
+IB_MAD_METHOD_REPORT_RESP</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo769"><tt>\r
+IB_MAD_METHOD_RESP_MASK</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo770"><tt>\r
+IB_MAD_METHOD_SEND</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo771"><tt>\r
+IB_MAD_METHOD_SET</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo772"><tt>\r
+IB_MAD_METHOD_TRAP</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo773"><tt>\r
+IB_MAD_METHOD_TRAP_REPRESS</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo774"><tt>\r
+IB_MAD_STATUS_BUSY</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo775"><tt>\r
+IB_MAD_STATUS_INVALID_FIELD</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo776"><tt>\r
+IB_MAD_STATUS_REDIRECT</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo777"><tt>\r
+IB_MAD_STATUS_UNSUP_CLASS_VER</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo778"><tt>\r
+IB_MAD_STATUS_UNSUP_METHOD</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo779"><tt>\r
+IB_MAD_STATUS_UNSUP_METHOD_ATTR</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo152"><tt>\r
+ib_mad_svc_type_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo780"><tt>\r
+IB_MAX_METHOD</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo781"><tt>\r
+IB_MCAST_BLOCK_ID_MASK_HO</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo782"><tt>\r
+IB_MCAST_BLOCK_SIZE</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo783"><tt>\r
+IB_MCAST_MASK_SIZE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo784"><tt>\r
+IB_MCAST_MAX_BLOCK_ID</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo785"><tt>\r
+IB_MCAST_POSITION_MASK_HO</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo786"><tt>\r
+IB_MCAST_POSITION_MAX</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo787"><tt>\r
+IB_MCAST_POSITION_SHIFT</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo788"><tt>\r
+IB_MCLASS_BM</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo789"><tt>\r
+IB_MCLASS_COMM_MGMT</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo790"><tt>\r
+IB_MCLASS_DEV_MGMT</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo791"><tt>\r
+IB_MCLASS_PERF</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo792"><tt>\r
+IB_MCLASS_SNMP</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo793"><tt>\r
+IB_MCLASS_SUBN_ADM</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo794"><tt>\r
+IB_MCLASS_SUBN_DIR</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo795"><tt>\r
+IB_MCLASS_SUBN_LID</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo796"><tt>\r
+IB_MCLASS_VENDOR_HIGH_RANGE_MAX</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo797"><tt>\r
+IB_MCLASS_VENDOR_HIGH_RANGE_MIN</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo798"><tt>\r
+IB_MCLASS_VENDOR_LOW_RANGE_MAX</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo799"><tt>\r
+IB_MCLASS_VENDOR_LOW_RANGE_MIN</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo161"><tt>\r
+ib_mr_mod_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo800"><tt>\r
+IB_MTU_TYPE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo893"><tt>\r
+ib_net16_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo894"><tt>\r
+ib_net32_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo895"><tt>\r
+ib_net64_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo801"><tt>\r
+IB_NODE_NUM_PORTS_MAX</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo802"><tt>\r
+IB_NODE_TYPE_CA</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo803"><tt>\r
+IB_NODE_TYPE_ROUTER</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo804"><tt>\r
+IB_NODE_TYPE_SWITCH</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo805"><tt>\r
+IB_NOTICE_NODE_TYPE_CA</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo806"><tt>\r
+IB_NOTICE_NODE_TYPE_ROUTER</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo807"><tt>\r
+IB_NOTICE_NODE_TYPE_SUBN_MGMT</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo808"><tt>\r
+IB_NOTICE_NODE_TYPE_SWITCH</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo809"><tt>\r
+IB_PATH_REC_BASE_MASK</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo810"><tt>\r
+IB_PATH_REC_SELECTOR_MASK</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo811"><tt>\r
+IB_PATH_SELECTOR_TYPE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo165"><tt>\r
+ib_pd_type_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo812"><tt>\r
+IB_PKEY_BASE_MASK</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo813"><tt>\r
+IB_PKEY_ENTRIES_MAX</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo814"><tt>\r
+IB_PKEY_MAX_BLOCKS</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo815"><tt>\r
+IB_PKEY_TYPE_MASK</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo190"><tt>\r
+ib_pnp_class_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo191"><tt>\r
+ib_pnp_event_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo816"><tt>\r
+IB_QP1_WELL_KNOWN_Q_KEY</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo208"><tt>\r
+ib_qp_opts_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo209"><tt>\r
+ib_qp_state_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo210"><tt>\r
+ib_qp_type_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo221"><tt>\r
+ib_query_type_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo224"><tt>\r
+ib_recv_opt_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo238"><tt>\r
+ib_rej_status_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo248"><tt>\r
+ib_send_opt_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo817"><tt>\r
+IB_SMINFO_ATTR_MOD_ACKNOWLEDGE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo818"><tt>\r
+IB_SMINFO_ATTR_MOD_DISABLE</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo819"><tt>\r
+IB_SMINFO_ATTR_MOD_DISCOVER</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo820"><tt>\r
+IB_SMINFO_ATTR_MOD_HANDOVER</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo821"><tt>\r
+IB_SMINFO_ATTR_MOD_STANDBY</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo822"><tt>\r
+IB_SMINFO_STATE_DISCOVERING</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo823"><tt>\r
+IB_SMINFO_STATE_INIT</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo824"><tt>\r
+IB_SMINFO_STATE_MASTER</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo825"><tt>\r
+IB_SMINFO_STATE_NOTACTIVE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo826"><tt>\r
+IB_SMINFO_STATE_STANDBY</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo827"><tt>\r
+IB_SMP_DIRECTION</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo828"><tt>\r
+IB_SMP_STATUS_MASK</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo829"><tt>\r
+IB_SUBNET_PATH_HOPS_MAX</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo259"><tt>\r
+ib_wc_status_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo261"><tt>\r
+ib_wc_type_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo262"><tt>\r
+ib_wr_type_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo357"><tt>\r
+IOCTL_CODE</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo830"><tt>\r
+Join States</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo831"><tt>\r
+MAD_BLOCK_GRH_SIZE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo832"><tt>\r
+MAD_BLOCK_SIZE</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo833"><tt>\r
+MAD_RMPP_DATA_SIZE</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo834"><tt>\r
+MAD_RMPP_HDR_SIZE</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_math_h.html#robo417"><tt>\r
+MAX</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_math_h.html#robo418"><tt>\r
+MIN</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_types_h.html#robo264"><tt>\r
+Object States</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_types_h.html#robo507"><tt>\r
+offsetof</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_types_h.html#robo265"><tt>\r
+Parameter Keywords</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_types_h.html#robo508"><tt>\r
+PARENT_STRUCT</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo483"><tt>\r
+PERF_DECLARE</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo484"><tt>\r
+PERF_DECLARE_START</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_math_h.html#robo419"><tt>\r
+ROUNDUP</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_types_h.html#robo680"><tt>\r
+UNUSED_PARAM</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td></td>\r
+<td></td>\r
+<td></td>\r
+</tr>\r
+</table>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/robo_functions.html b/trunk/docs/robo_functions.html
new file mode 100644 (file)
index 0000000..641def1
--- /dev/null
@@ -0,0 +1,1806 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="./robodoc.css" type="text/css">\r
+<title>Functions</title>\r
+<!-- Source: ./inc/ -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<p>\r
+[<a href="./robo_sourcefiles.html#top">Sourcefiles</a>]\r
+[<a href="./masterindex.html#top">Index</a>]\r
+[<a href="./robo_definitions.html#top">Definitions</a>]\r
+[<a href="#top">Functions</a>]\r
+[<a href="./robo_modules.html#top">Modules</a>]\r
+[<a href="./robo_strutures.html#top">Structures</a>]\r
+</p>\r
+<h1>Functions</h1>\r
+<table cellspacing="3">\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1109"><tt>\r
+ci_allocate_pd</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1110"><tt>\r
+ci_async_event_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1111"><tt>\r
+ci_attach_mcast</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1112"><tt>\r
+ci_bind_mw</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1113"><tt>\r
+ci_close_ca</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1114"><tt>\r
+ci_completion_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1115"><tt>\r
+ci_create_av</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1116"><tt>\r
+ci_create_cq</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1117"><tt>\r
+ci_create_mw</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1118"><tt>\r
+ci_create_qp</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1119"><tt>\r
+ci_create_spl_qp</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1120"><tt>\r
+ci_deallocate_pd</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1121"><tt>\r
+ci_deregister_mr</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1122"><tt>\r
+ci_destroy_av</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1123"><tt>\r
+ci_destroy_cq</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1124"><tt>\r
+ci_destroy_mw</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1125"><tt>\r
+ci_destroy_qp</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1126"><tt>\r
+ci_detach_mcast</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1127"><tt>\r
+ci_enable_cq_notify</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1128"><tt>\r
+ci_enable_ncomp_cq_notify</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1130"><tt>\r
+ci_local_mad</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1131"><tt>\r
+ci_modify_av</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1132"><tt>\r
+ci_modify_ca</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1133"><tt>\r
+ci_modify_mr</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1134"><tt>\r
+ci_modify_pmr</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1135"><tt>\r
+ci_modify_qp</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1136"><tt>\r
+ci_open_ca</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1137"><tt>\r
+ci_peek_cq</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1138"><tt>\r
+ci_poll_cq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1139"><tt>\r
+ci_post_recv</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1140"><tt>\r
+ci_post_send</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1141"><tt>\r
+ci_query_av</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1142"><tt>\r
+ci_query_ca</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1143"><tt>\r
+ci_query_cq</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1144"><tt>\r
+ci_query_mr</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1145"><tt>\r
+ci_query_mw</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1146"><tt>\r
+ci_query_qp</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1147"><tt>\r
+ci_register_mr</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1148"><tt>\r
+ci_register_pmr</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1149"><tt>\r
+ci_register_smr</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1150"><tt>\r
+ci_resize_cq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1151"><tt>\r
+ci_um_close_ca_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1152"><tt>\r
+ci_um_open_ca</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1154"><tt>\r
+ci_vendor_call</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo485"><tt>\r
+cl_alloc_relations</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_async_proc_h.html#robo266"><tt>\r
+cl_async_proc_construct</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_async_proc_h.html#robo267"><tt>\r
+cl_async_proc_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_async_proc_h.html#robo268"><tt>\r
+cl_async_proc_init</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_async_proc_h.html#robo270"><tt>\r
+cl_async_proc_queue</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_atomic_h.html#robo273"><tt>\r
+cl_atomic_add</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_atomic_h.html#robo274"><tt>\r
+cl_atomic_comp_xchg</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_atomic_h.html#robo275"><tt>\r
+cl_atomic_dec</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_atomic_h.html#robo276"><tt>\r
+cl_atomic_inc</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_atomic_h.html#robo277"><tt>\r
+cl_atomic_sub</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_atomic_h.html#robo278"><tt>\r
+cl_atomic_xchg</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_debug_h.html#robo306"><tt>\r
+cl_break</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo420"><tt>\r
+cl_check_for_read</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo421"><tt>\r
+cl_check_for_write</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo422"><tt>\r
+cl_copy_from_user</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo423"><tt>\r
+cl_copy_to_user</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_comppool_h.html#robo292"><tt>\r
+cl_cpool_construct</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo293"><tt>\r
+cl_cpool_count</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_comppool_h.html#robo294"><tt>\r
+cl_cpool_destroy</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo295"><tt>\r
+cl_cpool_get</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_comppool_h.html#robo296"><tt>\r
+cl_cpool_grow</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo297"><tt>\r
+cl_cpool_init</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_comppool_h.html#robo298"><tt>\r
+cl_cpool_put</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_debug_h.html#robo307"><tt>\r
+cl_dbg_out</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo486"><tt>\r
+cl_do_remove</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo487"><tt>\r
+cl_do_sync_pnp</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_event_h.html#robo316"><tt>\r
+cl_event_construct</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_event_h.html#robo317"><tt>\r
+cl_event_destroy</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_event_h.html#robo318"><tt>\r
+cl_event_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_event_h.html#robo319"><tt>\r
+cl_event_reset</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_event_h.html#robo320"><tt>\r
+cl_event_signal</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_event_h.html#robo321"><tt>\r
+cl_event_wait_on</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo323"><tt>\r
+cl_fmap_apply_func</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo324"><tt>\r
+cl_fmap_count</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo325"><tt>\r
+cl_fmap_delta</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo326"><tt>\r
+cl_fmap_end</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo327"><tt>\r
+cl_fmap_get</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo328"><tt>\r
+cl_fmap_head</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo329"><tt>\r
+cl_fmap_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo330"><tt>\r
+cl_fmap_insert</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo332"><tt>\r
+cl_fmap_key</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo333"><tt>\r
+cl_fmap_merge</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo334"><tt>\r
+cl_fmap_next</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo335"><tt>\r
+cl_fmap_prev</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo336"><tt>\r
+cl_fmap_remove</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo337"><tt>\r
+cl_fmap_remove_all</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo338"><tt>\r
+cl_fmap_remove_item</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo340"><tt>\r
+cl_fmap_tail</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo424"><tt>\r
+cl_free</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/complib/cl_bus_ifc_h.html#robo488"><tt>\r
+cl_fwd_query_ifc</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo425"><tt>\r
+cl_get_pagesize</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo426"><tt>\r
+cl_get_physaddr</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_timer_h.html#robo668"><tt>\r
+cl_get_tick_count</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo669"><tt>\r
+cl_get_tick_freq</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_timer_h.html#robo670"><tt>\r
+cl_get_time_stamp</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo671"><tt>\r
+cl_get_time_stamp_sec</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_timer_h.html#robo672"><tt>\r
+cl_get_time_stamp_usec</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo280"><tt>\r
+cl_hton16</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo281"><tt>\r
+cl_hton32</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo284"><tt>\r
+cl_hton64</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo489"><tt>\r
+cl_init_pnp_po_ext</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo344"><tt>\r
+cl_ioctl_cmd</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo345"><tt>\r
+cl_ioctl_complete</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo346"><tt>\r
+cl_ioctl_ctl_code</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo348"><tt>\r
+cl_ioctl_in_buf</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo349"><tt>\r
+cl_ioctl_in_size</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo350"><tt>\r
+cl_ioctl_out_buf</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo351"><tt>\r
+cl_ioctl_out_size</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo352"><tt>\r
+cl_ioctl_process</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo353"><tt>\r
+cl_ioctl_request</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_ioctl_h.html#robo354"><tt>\r
+cl_ioctl_result</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo355"><tt>\r
+cl_ioctl_type</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo500"><tt>\r
+cl_irp_complete</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo501"><tt>\r
+cl_irp_ignore</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo502"><tt>\r
+cl_irp_skip</tt></a></td>\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo503"><tt>\r
+cl_irp_succeed</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo504"><tt>\r
+cl_irp_unsupported</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_irqlock_h.html#robo358"><tt>\r
+cl_irqlock_acquire</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_irqlock_h.html#robo359"><tt>\r
+cl_irqlock_construct</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_irqlock_h.html#robo360"><tt>\r
+cl_irqlock_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_irqlock_h.html#robo361"><tt>\r
+cl_irqlock_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_irqlock_h.html#robo362"><tt>\r
+cl_irqlock_release</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_thread_h.html#robo663"><tt>\r
+cl_is_blockable</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo300"><tt>\r
+cl_is_cpool_inited</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo341"><tt>\r
+cl_is_fmap_empty</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo552"><tt>\r
+cl_is_item_in_qlist</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo363"><tt>\r
+cl_is_list_empty</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo364"><tt>\r
+cl_is_list_inited</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo396"><tt>\r
+cl_is_map_empty</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo322"><tt>\r
+cl_is_map_inited</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo365"><tt>\r
+cl_is_object_in_list</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_pool_h.html#robo528"><tt>\r
+cl_is_pool_inited</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qcomppool_h.html#robo539"><tt>\r
+cl_is_qcpool_inited</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo553"><tt>\r
+cl_is_qlist_empty</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo592"><tt>\r
+cl_is_qmap_empty</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo615"><tt>\r
+cl_is_qpool_inited</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo627"><tt>\r
+cl_is_rbmap_empty</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_syscallback_h.html#robo653"><tt>\r
+cl_is_sys_callback_inited</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo366"><tt>\r
+cl_list_apply_func</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo367"><tt>\r
+cl_list_construct</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo368"><tt>\r
+cl_list_count</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo369"><tt>\r
+cl_list_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo370"><tt>\r
+cl_list_end</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo371"><tt>\r
+cl_list_find_from_head</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo372"><tt>\r
+cl_list_find_from_tail</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo373"><tt>\r
+cl_list_head</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo374"><tt>\r
+cl_list_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo375"><tt>\r
+cl_list_insert_array_head</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo376"><tt>\r
+cl_list_insert_array_tail</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo377"><tt>\r
+cl_list_insert_head</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo378"><tt>\r
+cl_list_insert_next</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo379"><tt>\r
+cl_list_insert_prev</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo380"><tt>\r
+cl_list_insert_tail</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo382"><tt>\r
+cl_list_next</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo383"><tt>\r
+cl_list_obj</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo384"><tt>\r
+cl_list_prev</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo385"><tt>\r
+cl_list_remove_all</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo386"><tt>\r
+cl_list_remove_head</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo387"><tt>\r
+cl_list_remove_item</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo388"><tt>\r
+cl_list_remove_object</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_list_h.html#robo389"><tt>\r
+cl_list_remove_tail</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo391"><tt>\r
+cl_list_tail</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_log_h.html#robo394"><tt>\r
+cl_log_event</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo427"><tt>\r
+cl_malloc</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo397"><tt>\r
+cl_map_construct</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo398"><tt>\r
+cl_map_count</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo399"><tt>\r
+cl_map_delta</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo400"><tt>\r
+cl_map_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo401"><tt>\r
+cl_map_end</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo402"><tt>\r
+cl_map_get</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo403"><tt>\r
+cl_map_head</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo404"><tt>\r
+cl_map_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo405"><tt>\r
+cl_map_insert</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo407"><tt>\r
+cl_map_key</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo408"><tt>\r
+cl_map_merge</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo409"><tt>\r
+cl_map_next</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo410"><tt>\r
+cl_map_obj</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo411"><tt>\r
+cl_map_prev</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo412"><tt>\r
+cl_map_remove</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo413"><tt>\r
+cl_map_remove_all</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_map_h.html#robo414"><tt>\r
+cl_map_remove_item</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo416"><tt>\r
+cl_map_tail</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo428"><tt>\r
+cl_mem_display</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo429"><tt>\r
+cl_memclr</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo430"><tt>\r
+cl_memcmp</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo431"><tt>\r
+cl_memcpy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo432"><tt>\r
+cl_memset</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_debug_h.html#robo310"><tt>\r
+cl_msg_out</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_mutex_h.html#robo436"><tt>\r
+cl_mutex_acquire</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_mutex_h.html#robo437"><tt>\r
+cl_mutex_construct</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_mutex_h.html#robo438"><tt>\r
+cl_mutex_destroy</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_mutex_h.html#robo439"><tt>\r
+cl_mutex_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_mutex_h.html#robo440"><tt>\r
+cl_mutex_release</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo285"><tt>\r
+cl_ntoh</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo287"><tt>\r
+cl_ntoh16</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_byteswap_h.html#robo288"><tt>\r
+cl_ntoh32</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo291"><tt>\r
+cl_ntoh64</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo443"><tt>\r
+cl_obj_construct</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo444"><tt>\r
+cl_obj_deinit</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo445"><tt>\r
+cl_obj_deref</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo446"><tt>\r
+cl_obj_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo447"><tt>\r
+cl_obj_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo448"><tt>\r
+cl_obj_insert_rel</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo449"><tt>\r
+cl_obj_insert_rel_parent_locked</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo450"><tt>\r
+cl_obj_lock</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo451"><tt>\r
+cl_obj_mgr_create</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo452"><tt>\r
+cl_obj_mgr_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo454"><tt>\r
+cl_obj_ref</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo456"><tt>\r
+cl_obj_remove_rel</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo457"><tt>\r
+cl_obj_reset</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo459"><tt>\r
+cl_obj_type</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo460"><tt>\r
+cl_obj_unlock</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo433"><tt>\r
+cl_palloc</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_types_h.html#robo315"><tt>\r
+cl_panic</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo472"><tt>\r
+cl_perf_construct</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo473"><tt>\r
+cl_perf_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo474"><tt>\r
+cl_perf_display</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo476"><tt>\r
+cl_perf_init</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_perf_h.html#robo478"><tt>\r
+cl_perf_reset</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_passivelock_h.html#robo464"><tt>\r
+cl_plock_acquire</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_passivelock_h.html#robo465"><tt>\r
+cl_plock_construct</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_passivelock_h.html#robo466"><tt>\r
+cl_plock_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_passivelock_h.html#robo467"><tt>\r
+cl_plock_excl_acquire</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_passivelock_h.html#robo468"><tt>\r
+cl_plock_init</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_passivelock_h.html#robo469"><tt>\r
+cl_plock_release</tt></a></td>\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo505"><tt>\r
+cl_pnp</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo531"><tt>\r
+cl_pool_construct</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_pool_h.html#robo532"><tt>\r
+cl_pool_count</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo533"><tt>\r
+cl_pool_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_pool_h.html#robo534"><tt>\r
+cl_pool_get</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo535"><tt>\r
+cl_pool_grow</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_pool_h.html#robo536"><tt>\r
+cl_pool_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo537"><tt>\r
+cl_pool_put</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo506"><tt>\r
+cl_power</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_thread_h.html#robo665"><tt>\r
+cl_proc_count</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo511"><tt>\r
+cl_ptr_vector_apply_func</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo512"><tt>\r
+cl_ptr_vector_at</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo513"><tt>\r
+cl_ptr_vector_construct</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo514"><tt>\r
+cl_ptr_vector_destroy</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo515"><tt>\r
+cl_ptr_vector_find_from_end</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo516"><tt>\r
+cl_ptr_vector_find_from_start</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo517"><tt>\r
+cl_ptr_vector_get</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo518"><tt>\r
+cl_ptr_vector_get_capacity</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo519"><tt>\r
+cl_ptr_vector_get_size</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo520"><tt>\r
+cl_ptr_vector_init</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo521"><tt>\r
+cl_ptr_vector_insert</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo522"><tt>\r
+cl_ptr_vector_remove</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo523"><tt>\r
+cl_ptr_vector_set</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo524"><tt>\r
+cl_ptr_vector_set_capacity</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo525"><tt>\r
+cl_ptr_vector_set_min_size</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_ptr_vector_h.html#robo526"><tt>\r
+cl_ptr_vector_set_size</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_memory_h.html#robo434"><tt>\r
+cl_pzalloc</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qcomppool_h.html#robo543"><tt>\r
+cl_qcpool_construct</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo544"><tt>\r
+cl_qcpool_count</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qcomppool_h.html#robo545"><tt>\r
+cl_qcpool_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo546"><tt>\r
+cl_qcpool_get</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qcomppool_h.html#robo547"><tt>\r
+cl_qcpool_grow</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo548"><tt>\r
+cl_qcpool_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qcomppool_h.html#robo549"><tt>\r
+cl_qcpool_put</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo550"><tt>\r
+cl_qcpool_put_list</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo558"><tt>\r
+cl_qlist_apply_func</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo559"><tt>\r
+cl_qlist_count</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo560"><tt>\r
+cl_qlist_end</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo561"><tt>\r
+cl_qlist_find_from_head</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo562"><tt>\r
+cl_qlist_find_from_tail</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo563"><tt>\r
+cl_qlist_find_next</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo564"><tt>\r
+cl_qlist_find_prev</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo565"><tt>\r
+cl_qlist_head</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo566"><tt>\r
+cl_qlist_init</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo567"><tt>\r
+cl_qlist_insert_array_head</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo568"><tt>\r
+cl_qlist_insert_array_tail</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo569"><tt>\r
+cl_qlist_insert_head</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo570"><tt>\r
+cl_qlist_insert_list_head</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo571"><tt>\r
+cl_qlist_insert_list_tail</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo572"><tt>\r
+cl_qlist_insert_next</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo573"><tt>\r
+cl_qlist_insert_prev</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo574"><tt>\r
+cl_qlist_insert_tail</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo575"><tt>\r
+cl_qlist_move_items</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo576"><tt>\r
+cl_qlist_next</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo577"><tt>\r
+cl_qlist_obj</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo578"><tt>\r
+cl_qlist_prev</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo579"><tt>\r
+cl_qlist_remove_all</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo580"><tt>\r
+cl_qlist_remove_head</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo581"><tt>\r
+cl_qlist_remove_item</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo582"><tt>\r
+cl_qlist_remove_tail</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlist_h.html#robo583"><tt>\r
+cl_qlist_set_obj</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo585"><tt>\r
+cl_qlist_tail</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qlockpool_h.html#robo586"><tt>\r
+cl_qlock_pool_construct</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlockpool_h.html#robo587"><tt>\r
+cl_qlock_pool_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlockpool_h.html#robo588"><tt>\r
+cl_qlock_pool_get</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlockpool_h.html#robo589"><tt>\r
+cl_qlock_pool_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlockpool_h.html#robo590"><tt>\r
+cl_qlock_pool_put</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo596"><tt>\r
+cl_qmap_apply_func</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo597"><tt>\r
+cl_qmap_count</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo598"><tt>\r
+cl_qmap_delta</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo599"><tt>\r
+cl_qmap_end</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo600"><tt>\r
+cl_qmap_get</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo601"><tt>\r
+cl_qmap_head</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo602"><tt>\r
+cl_qmap_init</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo603"><tt>\r
+cl_qmap_insert</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo604"><tt>\r
+cl_qmap_key</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo605"><tt>\r
+cl_qmap_merge</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo606"><tt>\r
+cl_qmap_next</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo607"><tt>\r
+cl_qmap_obj</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo608"><tt>\r
+cl_qmap_prev</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo609"><tt>\r
+cl_qmap_remove</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo610"><tt>\r
+cl_qmap_remove_all</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo611"><tt>\r
+cl_qmap_remove_item</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo612"><tt>\r
+cl_qmap_set_obj</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo614"><tt>\r
+cl_qmap_tail</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qpool_h.html#robo618"><tt>\r
+cl_qpool_construct</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo619"><tt>\r
+cl_qpool_count</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qpool_h.html#robo620"><tt>\r
+cl_qpool_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo621"><tt>\r
+cl_qpool_get</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qpool_h.html#robo622"><tt>\r
+cl_qpool_grow</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo623"><tt>\r
+cl_qpool_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qpool_h.html#robo624"><tt>\r
+cl_qpool_put</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo625"><tt>\r
+cl_qpool_put_list</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo628"><tt>\r
+cl_rbmap_count</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_rbmap_h.html#robo629"><tt>\r
+cl_rbmap_end</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo630"><tt>\r
+cl_rbmap_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_rbmap_h.html#robo631"><tt>\r
+cl_rbmap_insert</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo633"><tt>\r
+cl_rbmap_left</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_rbmap_h.html#robo634"><tt>\r
+cl_rbmap_remove_item</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo635"><tt>\r
+cl_rbmap_reset</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_rbmap_h.html#robo636"><tt>\r
+cl_rbmap_right</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo637"><tt>\r
+cl_rbmap_root</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo462"><tt>\r
+cl_rel_alloc</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo463"><tt>\r
+cl_rel_free</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_reqmgr_h.html#robo641"><tt>\r
+cl_req_mgr_construct</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_reqmgr_h.html#robo642"><tt>\r
+cl_req_mgr_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_reqmgr_h.html#robo643"><tt>\r
+cl_req_mgr_get</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_reqmgr_h.html#robo644"><tt>\r
+cl_req_mgr_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_reqmgr_h.html#robo645"><tt>\r
+cl_req_mgr_resume</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo496"><tt>\r
+cl_rollback_pnp_state</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./kernel/complib/cl_pnp_po_h.html#robo497"><tt>\r
+cl_set_pnp_state</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_spinlock_h.html#robo648"><tt>\r
+cl_spinlock_acquire</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_spinlock_h.html#robo649"><tt>\r
+cl_spinlock_construct</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_spinlock_h.html#robo650"><tt>\r
+cl_spinlock_destroy</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_spinlock_h.html#robo651"><tt>\r
+cl_spinlock_init</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_spinlock_h.html#robo652"><tt>\r
+cl_spinlock_release</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_syscallback_h.html#robo655"><tt>\r
+cl_sys_callback_get</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_syscallback_h.html#robo656"><tt>\r
+cl_sys_callback_put</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_syscallback_h.html#robo657"><tt>\r
+cl_sys_callback_queue</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_threadpool_h.html#robo658"><tt>\r
+cl_thread_pool_construct</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_threadpool_h.html#robo659"><tt>\r
+cl_thread_pool_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_threadpool_h.html#robo660"><tt>\r
+cl_thread_pool_init</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_threadpool_h.html#robo661"><tt>\r
+cl_thread_pool_signal</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_thread_h.html#robo666"><tt>\r
+cl_thread_stall</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_thread_h.html#robo667"><tt>\r
+cl_thread_suspend</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_timer_h.html#robo674"><tt>\r
+cl_timer_construct</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo675"><tt>\r
+cl_timer_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_timer_h.html#robo676"><tt>\r
+cl_timer_init</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo677"><tt>\r
+cl_timer_start</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_timer_h.html#robo678"><tt>\r
+cl_timer_stop</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo679"><tt>\r
+cl_timer_trim</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo685"><tt>\r
+cl_vector_apply_func</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo686"><tt>\r
+cl_vector_at</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo687"><tt>\r
+cl_vector_construct</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo688"><tt>\r
+cl_vector_destroy</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo689"><tt>\r
+cl_vector_find_from_end</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo690"><tt>\r
+cl_vector_find_from_start</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo691"><tt>\r
+cl_vector_get</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo692"><tt>\r
+cl_vector_get_capacity</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo693"><tt>\r
+cl_vector_get_ptr</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo694"><tt>\r
+cl_vector_get_size</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo695"><tt>\r
+cl_vector_init</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo696"><tt>\r
+cl_vector_set</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo697"><tt>\r
+cl_vector_set_capacity</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo698"><tt>\r
+cl_vector_set_min_size</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo699"><tt>\r
+cl_vector_set_size</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_waitobj_h.html#robo701"><tt>\r
+cl_waitobj_create</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_waitobj_h.html#robo702"><tt>\r
+cl_waitobj_deref</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_waitobj_h.html#robo703"><tt>\r
+cl_waitobj_destroy</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_waitobj_h.html#robo705"><tt>\r
+cl_waitobj_ref</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_waitobj_h.html#robo706"><tt>\r
+cl_waitobj_reset</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_waitobj_h.html#robo707"><tt>\r
+cl_waitobj_signal</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_waitobj_h.html#robo708"><tt>\r
+cl_waitobj_wait_on</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo435"><tt>\r
+cl_zalloc</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo46"><tt>\r
+ib_add_svc_entry</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo48"><tt>\r
+ib_alloc_pd</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo58"><tt>\r
+ib_bind_mw</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo62"><tt>\r
+ib_cancel_mad</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo63"><tt>\r
+ib_cancel_query</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo65"><tt>\r
+ib_ci_call</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo836"><tt>\r
+ib_class_is_vendor_specific</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo837"><tt>\r
+ib_class_is_vendor_specific_high</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo838"><tt>\r
+ib_class_is_vendor_specific_low</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo67"><tt>\r
+ib_close_al</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo68"><tt>\r
+ib_close_ca</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo69"><tt>\r
+ib_cm_apr</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo72"><tt>\r
+ib_cm_cancel</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo74"><tt>\r
+ib_cm_drep</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo77"><tt>\r
+ib_cm_dreq</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo81"><tt>\r
+ib_cm_handoff</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo82"><tt>\r
+ib_cm_lap</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo85"><tt>\r
+ib_cm_listen</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo87"><tt>\r
+ib_cm_mra</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo90"><tt>\r
+ib_cm_rej</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo93"><tt>\r
+ib_cm_rep</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo96"><tt>\r
+ib_cm_req</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo99"><tt>\r
+ib_cm_rtu</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo102"><tt>\r
+ib_copy_ca_attr</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo104"><tt>\r
+ib_create_av</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo105"><tt>\r
+ib_create_cq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo106"><tt>\r
+ib_create_ioc</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo107"><tt>\r
+ib_create_mad_pool</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo108"><tt>\r
+ib_create_mw</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo109"><tt>\r
+ib_create_qp</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo110"><tt>\r
+ib_dealloc_pd</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo111"><tt>\r
+ib_dereg_mad_pool</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo112"><tt>\r
+ib_dereg_mr</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo113"><tt>\r
+ib_dereg_pnp</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo114"><tt>\r
+ib_dereg_svc</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1156"><tt>\r
+ib_deregister_ca</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo115"><tt>\r
+ib_destroy_av</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo116"><tt>\r
+ib_destroy_cq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo117"><tt>\r
+ib_destroy_ioc</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo118"><tt>\r
+ib_destroy_mad_pool</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo119"><tt>\r
+ib_destroy_mw</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo120"><tt>\r
+ib_destroy_qp</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo978"><tt>\r
+ib_dm_get_slot_lo_hi</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo979"><tt>\r
+ib_dm_set_slot_lo_hi</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo125"><tt>\r
+ib_force_apm</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo842"><tt>\r
+ib_get_async_event_str</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo126"><tt>\r
+ib_get_ca_by_gid</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo127"><tt>\r
+ib_get_ca_guids</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo843"><tt>\r
+ib_get_err_str</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo128"><tt>\r
+ib_get_guid</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo129"><tt>\r
+ib_get_mad</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo130"><tt>\r
+ib_get_mad_buf</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo844"><tt>\r
+ib_get_node_type_str</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo131"><tt>\r
+ib_get_port_by_gid</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo845"><tt>\r
+ib_get_port_state_from_str</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo846"><tt>\r
+ib_get_port_state_str</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo132"><tt>\r
+ib_get_query_node_rec</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo133"><tt>\r
+ib_get_query_path_rec</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo134"><tt>\r
+ib_get_query_portinfo_rec</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo135"><tt>\r
+ib_get_query_result</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo136"><tt>\r
+ib_get_query_svc_rec</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo137"><tt>\r
+ib_get_spl_qp</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo847"><tt>\r
+ib_get_wc_status_str</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo848"><tt>\r
+ib_get_wc_type_str</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo849"><tt>\r
+ib_get_wr_type_str</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo850"><tt>\r
+ib_gid_get_guid</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo851"><tt>\r
+ib_gid_get_subnet_prefix</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo852"><tt>\r
+ib_gid_is_link_local</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo853"><tt>\r
+ib_gid_is_site_local</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo855"><tt>\r
+ib_gid_set_default</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo857"><tt>\r
+ib_grh_get_ver_class_flow</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo858"><tt>\r
+ib_grh_set_ver_class_flow</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo861"><tt>\r
+ib_inform_get_dev_id</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo862"><tt>\r
+ib_inform_get_prod_type</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo863"><tt>\r
+ib_inform_get_qpn</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo864"><tt>\r
+ib_inform_get_resp_time_val</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo865"><tt>\r
+ib_inform_get_trap_num</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo866"><tt>\r
+ib_inform_get_vend_id</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo868"><tt>\r
+ib_inform_set_dev_id</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo869"><tt>\r
+ib_inform_set_prod_type</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo870"><tt>\r
+ib_inform_set_qpn</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo871"><tt>\r
+ib_inform_set_resp_time_val</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo872"><tt>\r
+ib_inform_set_trap_num</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo873"><tt>\r
+ib_inform_set_vend_id</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo140"><tt>\r
+ib_init_dgrm_svc</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo875"><tt>\r
+ib_iou_info_diag_dev_id</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo876"><tt>\r
+ib_iou_info_option_rom</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo142"><tt>\r
+ib_join_mcast</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo144"><tt>\r
+ib_leave_mcast</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo149"><tt>\r
+ib_local_mad</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo879"><tt>\r
+ib_mad_init_new</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo880"><tt>\r
+ib_mad_init_response</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo881"><tt>\r
+ib_mad_is_response</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo883"><tt>\r
+ib_member_get_scope</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo884"><tt>\r
+ib_member_get_scope_state</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo885"><tt>\r
+ib_member_get_sl_flow_hop</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo886"><tt>\r
+ib_member_get_state</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo888"><tt>\r
+ib_member_set_join_state</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo889"><tt>\r
+ib_member_set_scope</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo890"><tt>\r
+ib_member_set_scope_state</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo891"><tt>\r
+ib_member_set_sl_flow_hop</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo892"><tt>\r
+ib_member_set_state</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo155"><tt>\r
+ib_modify_av</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo156"><tt>\r
+ib_modify_ca</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo157"><tt>\r
+ib_modify_cq</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo158"><tt>\r
+ib_modify_qp</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo896"><tt>\r
+ib_node_info_get_local_port_num</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo897"><tt>\r
+ib_node_info_get_vendor_id</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo899"><tt>\r
+ib_notice_get_count</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo900"><tt>\r
+ib_notice_get_dev_id</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo901"><tt>\r
+ib_notice_get_generic</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo902"><tt>\r
+ib_notice_get_prod_type</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo903"><tt>\r
+ib_notice_get_toggle</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo904"><tt>\r
+ib_notice_get_trap_num</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo905"><tt>\r
+ib_notice_get_type</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo906"><tt>\r
+ib_notice_get_vend_id</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo907"><tt>\r
+ib_notice_set_count</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo908"><tt>\r
+ib_notice_set_dev_id</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo909"><tt>\r
+ib_notice_set_generic</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo910"><tt>\r
+ib_notice_set_prod_type</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo911"><tt>\r
+ib_notice_set_toggle</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo912"><tt>\r
+ib_notice_set_trap_num</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo913"><tt>\r
+ib_notice_set_type</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo914"><tt>\r
+ib_notice_set_vend_id</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo163"><tt>\r
+ib_open_al</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo164"><tt>\r
+ib_open_ca</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo915"><tt>\r
+ib_path_get_ipd</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo916"><tt>\r
+ib_path_rec_flow_lbl</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo917"><tt>\r
+ib_path_rec_hop_limit</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo918"><tt>\r
+ib_path_rec_init_local</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo919"><tt>\r
+ib_path_rec_mtu</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo920"><tt>\r
+ib_path_rec_mtu_sel</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo921"><tt>\r
+ib_path_rec_pkt_life</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo922"><tt>\r
+ib_path_rec_pkt_life_sel</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo923"><tt>\r
+ib_path_rec_rate</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo924"><tt>\r
+ib_path_rec_rate_sel</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo925"><tt>\r
+ib_path_rec_set_hop_flow_raw</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo926"><tt>\r
+ib_path_rec_sl</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo166"><tt>\r
+ib_peek_cq</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo167"><tt>\r
+ib_pfn_cm_apr_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo168"><tt>\r
+ib_pfn_cm_drep_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo169"><tt>\r
+ib_pfn_cm_dreq_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo170"><tt>\r
+ib_pfn_cm_lap_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo171"><tt>\r
+ib_pfn_cm_mra_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo172"><tt>\r
+ib_pfn_cm_rej_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo173"><tt>\r
+ib_pfn_cm_rep_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo174"><tt>\r
+ib_pfn_cm_req_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo175"><tt>\r
+ib_pfn_cm_rtu_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo176"><tt>\r
+ib_pfn_comp_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo177"><tt>\r
+ib_pfn_destroy_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo178"><tt>\r
+ib_pfn_event_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo179"><tt>\r
+ib_pfn_listen_err_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo180"><tt>\r
+ib_pfn_mad_comp_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo181"><tt>\r
+ib_pfn_mcast_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo182"><tt>\r
+ib_pfn_pnp_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo183"><tt>\r
+ib_pfn_query_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo184"><tt>\r
+ib_pfn_reg_svc_cb_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo185"><tt>\r
+ib_pfn_report_cb_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo186"><tt>\r
+ib_pfn_sub_cb_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo928"><tt>\r
+ib_pkey_get_base</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo929"><tt>\r
+ib_pkey_is_full_member</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo198"><tt>\r
+ib_poll_cq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo931"><tt>\r
+ib_port_info_compute_rate</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo932"><tt>\r
+ib_port_info_get_link_speed_active</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo933"><tt>\r
+ib_port_info_get_link_speed_sup</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo934"><tt>\r
+ib_port_info_get_lmc</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo935"><tt>\r
+ib_port_info_get_mpb</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo936"><tt>\r
+ib_port_info_get_mtu_cap</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo937"><tt>\r
+ib_port_info_get_neighbor_mtu</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo938"><tt>\r
+ib_port_info_get_op_vls</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo939"><tt>\r
+ib_port_info_get_port_state</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo940"><tt>\r
+ib_port_info_get_vl_cap</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo941"><tt>\r
+ib_port_info_set_link_speed_sup</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo942"><tt>\r
+ib_port_info_set_lmc</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo943"><tt>\r
+ib_port_info_set_mpb</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo944"><tt>\r
+ib_port_info_set_neighbor_mtu</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo945"><tt>\r
+ib_port_info_set_op_vls</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo946"><tt>\r
+ib_port_info_set_port_state</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo947"><tt>\r
+ib_port_info_set_state_no_change</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo948"><tt>\r
+ib_port_info_set_timeout</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo202"><tt>\r
+ib_post_recv</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo203"><tt>\r
+ib_post_send</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo204"><tt>\r
+ib_put_mad</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo211"><tt>\r
+ib_query</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo212"><tt>\r
+ib_query_av</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo213"><tt>\r
+ib_query_ca</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo214"><tt>\r
+ib_query_ca_by_guid</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo215"><tt>\r
+ib_query_cq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo216"><tt>\r
+ib_query_mr</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo217"><tt>\r
+ib_query_mw</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo218"><tt>\r
+ib_query_qp</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo222"><tt>\r
+ib_rearm_cq</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo223"><tt>\r
+ib_rearm_n_cq</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo226"><tt>\r
+ib_reg_ioc</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo227"><tt>\r
+ib_reg_mad_pool</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo228"><tt>\r
+ib_reg_mad_svc</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo229"><tt>\r
+ib_reg_mem</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo230"><tt>\r
+ib_reg_phys</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo231"><tt>\r
+ib_reg_pnp</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo232"><tt>\r
+ib_reg_shared</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo233"><tt>\r
+ib_reg_shmid</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo234"><tt>\r
+ib_reg_svc</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1158"><tt>\r
+ib_register_ca</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo239"><tt>\r
+ib_reject_ioc</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo240"><tt>\r
+ib_remove_svc_entry</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo244"><tt>\r
+ib_rereg_mem</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo245"><tt>\r
+ib_rereg_phys</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo950"><tt>\r
+ib_rmpp_is_flag_set</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo952"><tt>\r
+ib_sa_mad_get_payload_ptr</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo247"><tt>\r
+ib_send_mad</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo954"><tt>\r
+ib_slvl_table_get_vl</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo956"><tt>\r
+ib_slvl_table_set_vl</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo959"><tt>\r
+ib_sminfo_get_priority</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo960"><tt>\r
+ib_sminfo_get_state</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo961"><tt>\r
+ib_smp_get_payload_ptr</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo962"><tt>\r
+ib_smp_get_status</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo963"><tt>\r
+ib_smp_init_new</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo964"><tt>\r
+ib_smp_is_d</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo965"><tt>\r
+ib_smp_is_response</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo255"><tt>\r
+ib_subscribe</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo969"><tt>\r
+ib_switch_info_clear_state_change</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo970"><tt>\r
+ib_switch_info_get_state_change</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo256"><tt>\r
+ib_sync_destroy</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo257"><tt>\r
+ib_unsubscribe</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo972"><tt>\r
+ib_vl_arb_element_get_vl</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo973"><tt>\r
+ib_vl_arb_element_set_vl</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo977"><tt>\r
+ioc_at_slot</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1051"><tt>\r
+unsupported functions</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1052"><tt>\r
+uvp_bind_mw</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1053"><tt>\r
+uvp_get_interface</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1055"><tt>\r
+uvp_peek_cq</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1056"><tt>\r
+uvp_poll_cq</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1057"><tt>\r
+uvp_post_allocate_pd_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1058"><tt>\r
+uvp_post_attach_mcast_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1059"><tt>\r
+uvp_post_ci_call</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1060"><tt>\r
+uvp_post_close_ca_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1061"><tt>\r
+uvp_post_create_av_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1062"><tt>\r
+uvp_post_create_cq_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1063"><tt>\r
+uvp_post_create_mw_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1064"><tt>\r
+uvp_post_create_qp_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1065"><tt>\r
+uvp_post_deallocate_pd_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1066"><tt>\r
+uvp_post_destroy_av_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1067"><tt>\r
+uvp_post_destroy_cq_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1068"><tt>\r
+uvp_post_destroy_mw_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1069"><tt>\r
+uvp_post_destroy_qp_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1070"><tt>\r
+uvp_post_detach_mcast_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1071"><tt>\r
+uvp_post_modify_av_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1072"><tt>\r
+uvp_post_modify_ca_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1073"><tt>\r
+uvp_post_modify_qp_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1074"><tt>\r
+uvp_post_open_ca_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1075"><tt>\r
+uvp_post_query_av_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1076"><tt>\r
+uvp_post_query_ca_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1077"><tt>\r
+uvp_post_query_cq_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1078"><tt>\r
+uvp_post_query_mw_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1079"><tt>\r
+uvp_post_query_qp_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1080"><tt>\r
+uvp_post_recv</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1081"><tt>\r
+uvp_post_resize_cq_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1082"><tt>\r
+uvp_post_send</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1083"><tt>\r
+uvp_pre_allocate_pd</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1084"><tt>\r
+uvp_pre_attach_mcast</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1085"><tt>\r
+uvp_pre_ci_call</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1086"><tt>\r
+uvp_pre_close_ca_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1087"><tt>\r
+uvp_pre_create_av</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1088"><tt>\r
+uvp_pre_create_cq</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1089"><tt>\r
+uvp_pre_create_mw</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1090"><tt>\r
+uvp_pre_create_qp</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1091"><tt>\r
+uvp_pre_deallocate_pd</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1092"><tt>\r
+uvp_pre_destroy_av</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1093"><tt>\r
+uvp_pre_destroy_cq</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1094"><tt>\r
+uvp_pre_destroy_mw</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1095"><tt>\r
+uvp_pre_destroy_qp</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1096"><tt>\r
+uvp_pre_detach_mcast</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1097"><tt>\r
+uvp_pre_modify_av</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1098"><tt>\r
+uvp_pre_modify_ca</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1099"><tt>\r
+uvp_pre_modify_qp</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1100"><tt>\r
+uvp_pre_open_ca_t</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1101"><tt>\r
+uvp_pre_query_av</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1102"><tt>\r
+uvp_pre_query_ca</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1103"><tt>\r
+uvp_pre_query_cq</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1104"><tt>\r
+uvp_pre_query_mw</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1105"><tt>\r
+uvp_pre_query_qp</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1106"><tt>\r
+uvp_pre_resize_cq</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo1107"><tt>\r
+uvp_rearm_cq</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1108"><tt>\r
+uvp_rearm_n_cq</tt></a></td>\r
+<td></td>\r
+<td></td>\r
+</tr>\r
+</table>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/robo_modules.html b/trunk/docs/robo_modules.html
new file mode 100644 (file)
index 0000000..0b8b6bf
--- /dev/null
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="./robodoc.css" type="text/css">\r
+<title>Modules</title>\r
+<!-- Source: ./inc/ -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<p>\r
+[<a href="./robo_sourcefiles.html#top">Sourcefiles</a>]\r
+[<a href="./masterindex.html#top">Index</a>]\r
+[<a href="./robo_definitions.html#top">Definitions</a>]\r
+[<a href="./robo_functions.html#top">Functions</a>]\r
+[<a href="#top">Modules</a>]\r
+[<a href="./robo_strutures.html#top">Structures</a>]\r
+</p>\r
+<h1>Modules</h1>\r
+<table cellspacing="3">\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_async_proc_h.html#robo6"><tt>\r
+Asynchronous Processor</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_atomic_h.html#robo7"><tt>\r
+Atomic Operations</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_byteswap_h.html#robo8"><tt>\r
+Byte Swapping</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo9"><tt>\r
+Composite Pool</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo40"><tt>\r
+Constants</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_debug_h.html#robo10"><tt>\r
+Debug Output</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_event_h.html#robo11"><tt>\r
+Event</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo12"><tt>\r
+Flexi Map</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/iba/ib_al_ifc_h.html#robo0"><tt>\r
+ib_al_ifc.h</tt></a></td>\r
+<td  class="even"><a href="./kernel/iba/ib_ci_ifc_h.html#robo1"><tt>\r
+ib_ci_ifc.h</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./kernel/iba/ioc_ifc_h.html#robo2"><tt>\r
+ioc_ifc.h</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ioctl_h.html#robo13"><tt>\r
+IOCTL Object</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/iba/iou_ifc_h.html#robo3"><tt>\r
+iou_ifc.h</tt></a></td>\r
+<td  class="even"><a href="./kernel/iba/ipoib_ifc_h.html#robo4"><tt>\r
+ipoib_ifc.h</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_irqlock_h.html#robo14"><tt>\r
+Irqlock</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo15"><tt>\r
+List</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_log_h.html#robo16"><tt>\r
+Log Provider</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo17"><tt>\r
+Map</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_memory_h.html#robo42"><tt>\r
+Memory Management</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_mutex_h.html#robo5"><tt>\r
+Mutex</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo18"><tt>\r
+Object</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo38"><tt>\r
+Overview</tt></a></td>\r
+<td  class="uneven"><a href="./complib/comp_lib_h.html#robo19"><tt>\r
+Overview</tt></a></td>\r
+<td  class="even"><a href="./user/iba/ib_uvp_h.html#robo43"><tt>\r
+Overview user-mode Verbs</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_passivelock_h.html#robo20"><tt>\r
+Passive Lock</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_perf_h.html#robo21"><tt>\r
+Performance Counters</tt></a></td>\r
+<td  class="uneven"><a href="./kernel/complib/cl_pnp_po_h.html#robo22"><tt>\r
+Plug and Play</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo23"><tt>\r
+Pointer Vector</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo24"><tt>\r
+Pool</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo25"><tt>\r
+Quick Composite Pool</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo26"><tt>\r
+Quick List</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlockpool_h.html#robo27"><tt>\r
+Quick Locking Pool</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo28"><tt>\r
+Quick Map</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qpool_h.html#robo29"><tt>\r
+Quick Pool</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo30"><tt>\r
+RB Map</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_reqmgr_h.html#robo31"><tt>\r
+Request Manager</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_spinlock_h.html#robo32"><tt>\r
+Spinlock</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_syscallback_h.html#robo33"><tt>\r
+System Callback</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_threadpool_h.html#robo34"><tt>\r
+Thread Pool</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_timer_h.html#robo35"><tt>\r
+Timer</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo41"><tt>\r
+Type Definitions</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_vector_h.html#robo36"><tt>\r
+Vector</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo39"><tt>\r
+Verbs</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_waitobj_h.html#robo37"><tt>\r
+Wait Object</tt></a></td>\r
+<td></td>\r
+</tr>\r
+</table>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/robo_sourcefiles.html b/trunk/docs/robo_sourcefiles.html
new file mode 100644 (file)
index 0000000..5fb258b
--- /dev/null
@@ -0,0 +1,211 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="./robodoc.css" type="text/css">\r
+<title>Sourcefiles</title>\r
+<!-- Source: ./inc/ -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<p>\r
+[<a href="#top">Sourcefiles</a>]\r
+[<a href="./masterindex.html#top">Index</a>]\r
+[<a href="./robo_definitions.html#top">Definitions</a>]\r
+[<a href="./robo_functions.html#top">Functions</a>]\r
+[<a href="./robo_modules.html#top">Modules</a>]\r
+[<a href="./robo_strutures.html#top">Structures</a>]\r
+</p>\r
+<ul>\r
+<li>\r
+./inc/<ul>\r
+<li>\r
+./inc/complib/<ul>\r
+<li>\r
+<a href="./complib/cl_async_proc_h.html#robo_top_of_doc"><tt>\r
+cl_async_proc.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_atomic_h.html#robo_top_of_doc"><tt>\r
+cl_atomic.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_byteswap_h.html#robo_top_of_doc"><tt>\r
+cl_byteswap.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_comppool_h.html#robo_top_of_doc"><tt>\r
+cl_comppool.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_debug_h.html#robo_top_of_doc"><tt>\r
+cl_debug.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_event_h.html#robo_top_of_doc"><tt>\r
+cl_event.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_fleximap_h.html#robo_top_of_doc"><tt>\r
+cl_fleximap.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_ioctl_h.html#robo_top_of_doc"><tt>\r
+cl_ioctl.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_irqlock_h.html#robo_top_of_doc"><tt>\r
+cl_irqlock.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_list_h.html#robo_top_of_doc"><tt>\r
+cl_list.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_log_h.html#robo_top_of_doc"><tt>\r
+cl_log.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_map_h.html#robo_top_of_doc"><tt>\r
+cl_map.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_math_h.html#robo_top_of_doc"><tt>\r
+cl_math.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_memory_h.html#robo_top_of_doc"><tt>\r
+cl_memory.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_mutex_h.html#robo_top_of_doc"><tt>\r
+cl_mutex.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_obj_h.html#robo_top_of_doc"><tt>\r
+cl_obj.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_passivelock_h.html#robo_top_of_doc"><tt>\r
+cl_passivelock.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_perf_h.html#robo_top_of_doc"><tt>\r
+cl_perf.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_pool_h.html#robo_top_of_doc"><tt>\r
+cl_pool.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_ptr_vector_h.html#robo_top_of_doc"><tt>\r
+cl_ptr_vector.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_qcomppool_h.html#robo_top_of_doc"><tt>\r
+cl_qcomppool.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_qlist_h.html#robo_top_of_doc"><tt>\r
+cl_qlist.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_qlockpool_h.html#robo_top_of_doc"><tt>\r
+cl_qlockpool.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_qmap_h.html#robo_top_of_doc"><tt>\r
+cl_qmap.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_qpool_h.html#robo_top_of_doc"><tt>\r
+cl_qpool.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_rbmap_h.html#robo_top_of_doc"><tt>\r
+cl_rbmap.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_reqmgr_h.html#robo_top_of_doc"><tt>\r
+cl_reqmgr.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_spinlock_h.html#robo_top_of_doc"><tt>\r
+cl_spinlock.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_syscallback_h.html#robo_top_of_doc"><tt>\r
+cl_syscallback.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_thread_h.html#robo_top_of_doc"><tt>\r
+cl_thread.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_threadpool_h.html#robo_top_of_doc"><tt>\r
+cl_threadpool.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_timer_h.html#robo_top_of_doc"><tt>\r
+cl_timer.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_types_h.html#robo_top_of_doc"><tt>\r
+cl_types.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_vector_h.html#robo_top_of_doc"><tt>\r
+cl_vector.h</tt></a></li>\r
+<li>\r
+<a href="./complib/cl_waitobj_h.html#robo_top_of_doc"><tt>\r
+cl_waitobj.h</tt></a></li>\r
+<li>\r
+<a href="./complib/comp_lib_h.html#robo_top_of_doc"><tt>\r
+comp_lib.h</tt></a></li>\r
+</ul>\r
+</li>\r
+<li>\r
+./inc/iba/<ul>\r
+<li>\r
+<a href="./iba/ib_al_h.html#robo_top_of_doc"><tt>\r
+ib_al.h</tt></a></li>\r
+<li>\r
+<a href="./iba/ib_al_ioctl_h.html#robo_top_of_doc"><tt>\r
+ib_al_ioctl.h</tt></a></li>\r
+<li>\r
+<a href="./iba/ib_ci_h.html#robo_top_of_doc"><tt>\r
+ib_ci.h</tt></a></li>\r
+<li>\r
+<a href="./iba/ib_types_h.html#robo_top_of_doc"><tt>\r
+ib_types.h</tt></a></li>\r
+</ul>\r
+</li>\r
+<li>\r
+./inc/kernel/<ul>\r
+<li>\r
+./inc/kernel/complib/<ul>\r
+<li>\r
+<a href="./kernel/complib/cl_bus_ifc_h.html#robo_top_of_doc"><tt>\r
+cl_bus_ifc.h</tt></a></li>\r
+<li>\r
+<a href="./kernel/complib/cl_pnp_po_h.html#robo_top_of_doc"><tt>\r
+cl_pnp_po.h</tt></a></li>\r
+</ul>\r
+</li>\r
+<li>\r
+./inc/kernel/iba/<ul>\r
+<li>\r
+<a href="./kernel/iba/ib_al_ifc_h.html#robo_top_of_doc"><tt>\r
+ib_al_ifc.h</tt></a></li>\r
+<li>\r
+<a href="./kernel/iba/ib_ci_ifc_h.html#robo_top_of_doc"><tt>\r
+ib_ci_ifc.h</tt></a></li>\r
+<li>\r
+<a href="./kernel/iba/ioc_ifc_h.html#robo_top_of_doc"><tt>\r
+ioc_ifc.h</tt></a></li>\r
+<li>\r
+<a href="./kernel/iba/iou_ifc_h.html#robo_top_of_doc"><tt>\r
+iou_ifc.h</tt></a></li>\r
+<li>\r
+<a href="./kernel/iba/ipoib_ifc_h.html#robo_top_of_doc"><tt>\r
+ipoib_ifc.h</tt></a></li>\r
+</ul>\r
+</li>\r
+</ul>\r
+</li>\r
+<li>\r
+./inc/mthca/<ul>\r
+</ul>\r
+</li>\r
+<li>\r
+./inc/user/<ul>\r
+<li>\r
+./inc/user/complib/<ul>\r
+</ul>\r
+</li>\r
+<li>\r
+./inc/user/iba/<ul>\r
+<li>\r
+<a href="./user/iba/ib_uvp_h.html#robo_top_of_doc"><tt>\r
+ib_uvp.h</tt></a></li>\r
+</ul>\r
+</li>\r
+<li>\r
+./inc/user/wsd/<ul>\r
+</ul>\r
+</li>\r
+</ul>\r
+</li>\r
+</ul>\r
+</li>\r
+</ul>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/robo_strutures.html b/trunk/docs/robo_strutures.html
new file mode 100644 (file)
index 0000000..872c429
--- /dev/null
@@ -0,0 +1,553 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="./robodoc.css" type="text/css">\r
+<title>Structures</title>\r
+<!-- Source: ./inc/ -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:25\r
+<br />\r
+<p>\r
+[<a href="./robo_sourcefiles.html#top">Sourcefiles</a>]\r
+[<a href="./masterindex.html#top">Index</a>]\r
+[<a href="./robo_definitions.html#top">Definitions</a>]\r
+[<a href="./robo_functions.html#top">Functions</a>]\r
+[<a href="./robo_modules.html#top">Modules</a>]\r
+[<a href="#top">Structures</a>]\r
+</p>\r
+<h1>Structures</h1>\r
+<table cellspacing="3">\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_ci_h.html#robo1129"><tt>\r
+ci_interface_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_ci_h.html#robo1153"><tt>\r
+ci_umv_buf_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_async_proc_h.html#robo269"><tt>\r
+cl_async_proc_item_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_async_proc_h.html#robo271"><tt>\r
+cl_async_proc_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_comppool_h.html#robo299"><tt>\r
+cl_cpool_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_fleximap_h.html#robo331"><tt>\r
+cl_fmap_item_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_fleximap_h.html#robo339"><tt>\r
+cl_fmap_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo554"><tt>\r
+cl_list_item_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo555"><tt>\r
+cl_list_obj_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_list_h.html#robo390"><tt>\r
+cl_list_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo593"><tt>\r
+cl_map_item_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qmap_h.html#robo594"><tt>\r
+cl_map_obj_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_map_h.html#robo415"><tt>\r
+cl_map_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo453"><tt>\r
+cl_obj_mgr_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_obj_h.html#robo455"><tt>\r
+cl_obj_rel_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_obj_h.html#robo458"><tt>\r
+cl_obj_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_passivelock_h.html#robo470"><tt>\r
+cl_plock_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo542"><tt>\r
+cl_pool_item_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_pool_h.html#robo538"><tt>\r
+cl_pool_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_ptr_vector_h.html#robo527"><tt>\r
+cl_ptr_vector_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_qcomppool_h.html#robo551"><tt>\r
+cl_qcpool_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qlist_h.html#robo584"><tt>\r
+cl_qlist_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_qlockpool_h.html#robo591"><tt>\r
+cl_qlock_pool_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_qmap_h.html#robo613"><tt>\r
+cl_qmap_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./complib/cl_qpool_h.html#robo626"><tt>\r
+cl_qpool_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_rbmap_h.html#robo632"><tt>\r
+cl_rbmap_item_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_rbmap_h.html#robo638"><tt>\r
+cl_rbmap_t</tt></a></td>\r
+<td  class="even"><a href="./complib/cl_reqmgr_h.html#robo646"><tt>\r
+cl_req_mgr_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./complib/cl_threadpool_h.html#robo662"><tt>\r
+cl_thread_pool_t</tt></a></td>\r
+<td  class="uneven"><a href="./complib/cl_vector_h.html#robo700"><tt>\r
+cl_vector_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo51"><tt>\r
+ib_apr_info_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo52"><tt>\r
+ib_apr_pdata_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo54"><tt>\r
+ib_ari_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo55"><tt>\r
+ib_async_event_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo57"><tt>\r
+ib_av_attr_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo59"><tt>\r
+ib_bind_wr_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo60"><tt>\r
+ib_ca_attr_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo64"><tt>\r
+ib_cep_listen_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo66"><tt>\r
+ib_ci_op_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo709"><tt>\r
+IB_CLASS_CAP_GETSET</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo710"><tt>\r
+IB_CLASS_CAP_TRAP</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo839"><tt>\r
+ib_class_port_info_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo711"><tt>\r
+IB_CLASS_RESP_TIME_MASK</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo70"><tt>\r
+ib_cm_apr_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo71"><tt>\r
+ib_cm_apr_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo75"><tt>\r
+ib_cm_drep_rec_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo76"><tt>\r
+ib_cm_drep_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo78"><tt>\r
+ib_cm_dreq_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo79"><tt>\r
+ib_cm_dreq_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo83"><tt>\r
+ib_cm_lap_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo84"><tt>\r
+ib_cm_lap_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo86"><tt>\r
+ib_cm_listen_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo88"><tt>\r
+ib_cm_mra_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo89"><tt>\r
+ib_cm_mra_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo91"><tt>\r
+ib_cm_rej_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo92"><tt>\r
+ib_cm_rej_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo94"><tt>\r
+ib_cm_rep_rec_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo95"><tt>\r
+ib_cm_rep_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo97"><tt>\r
+ib_cm_req_rec_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo98"><tt>\r
+ib_cm_req_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo100"><tt>\r
+ib_cm_rtu_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo101"><tt>\r
+ib_cm_rtu_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo103"><tt>\r
+ib_cq_create_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo122"><tt>\r
+ib_dgrm_info_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo840"><tt>\r
+ib_dm_mad_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo123"><tt>\r
+ib_drep_pdata_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo124"><tt>\r
+ib_dreq_pdata_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo1157"><tt>\r
+ib_event_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo841"><tt>\r
+ib_field32_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo138"><tt>\r
+ib_gid_pair_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo859"><tt>\r
+ib_grh_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo860"><tt>\r
+ib_guid_info_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo139"><tt>\r
+ib_guid_pair_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo867"><tt>\r
+ib_inform_info_record_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo874"><tt>\r
+ib_ioc_profile_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo877"><tt>\r
+ib_iou_info_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo143"><tt>\r
+ib_lap_pdata_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo878"><tt>\r
+ib_lft_record_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo145"><tt>\r
+ib_lid_pair_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo146"><tt>\r
+ib_listen_err_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo148"><tt>\r
+ib_local_ds_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo150"><tt>\r
+ib_mad_element_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo151"><tt>\r
+ib_mad_svc_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo882"><tt>\r
+ib_mad_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo153"><tt>\r
+ib_mcast_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo154"><tt>\r
+ib_mcast_req_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo887"><tt>\r
+ib_member_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo159"><tt>\r
+ib_mr_attr_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo160"><tt>\r
+ib_mr_create_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo162"><tt>\r
+ib_mra_pdata_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo898"><tt>\r
+ib_node_info_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo927"><tt>\r
+ib_path_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo187"><tt>\r
+ib_phys_create_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo188"><tt>\r
+ib_phys_range_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo930"><tt>\r
+ib_pkey_table_info_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo189"><tt>\r
+ib_pnp_ca_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo192"><tt>\r
+ib_pnp_ioc_path_rec_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo193"><tt>\r
+ib_pnp_ioc_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo194"><tt>\r
+ib_pnp_iou_rec_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo195"><tt>\r
+ib_pnp_port_rec_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo196"><tt>\r
+ib_pnp_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo197"><tt>\r
+ib_pnp_req_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo199"><tt>\r
+ib_port_attr_mod_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo200"><tt>\r
+ib_port_attr_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo201"><tt>\r
+ib_port_cap_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo949"><tt>\r
+ib_port_info_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo205"><tt>\r
+ib_qp_attr_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo206"><tt>\r
+ib_qp_create_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo207"><tt>\r
+ib_qp_mod_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo219"><tt>\r
+ib_query_rec_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo220"><tt>\r
+ib_query_req_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo225"><tt>\r
+ib_recv_wr_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo235"><tt>\r
+ib_reg_svc_rec_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo236"><tt>\r
+ib_reg_svc_req_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo237"><tt>\r
+ib_rej_pdata_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo241"><tt>\r
+ib_rep_pdata_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo242"><tt>\r
+ib_report_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo243"><tt>\r
+ib_req_pdata_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo951"><tt>\r
+ib_rmpp_mad_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo246"><tt>\r
+ib_rtu_pdata_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo953"><tt>\r
+ib_sa_mad_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo249"><tt>\r
+ib_send_wr_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo250"><tt>\r
+ib_shmid_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo251"><tt>\r
+ib_sidr_rep_pdata_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo252"><tt>\r
+ib_sidr_req_pdata_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo955"><tt>\r
+ib_slvl_table_record_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo957"><tt>\r
+ib_slvl_table_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo958"><tt>\r
+ib_sm_info_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo966"><tt>\r
+ib_smp_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo253"><tt>\r
+ib_sub_rec_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_h.html#robo254"><tt>\r
+ib_sub_req_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo967"><tt>\r
+ib_svc_entries_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo968"><tt>\r
+ib_svc_entry_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo971"><tt>\r
+ib_switch_info_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_h.html#robo258"><tt>\r
+ib_user_query_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo974"><tt>\r
+ib_vl_arb_element_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo975"><tt>\r
+ib_vl_arb_table_record_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_types_h.html#robo976"><tt>\r
+ib_vl_arb_table_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_types_h.html#robo260"><tt>\r
+ib_wc_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo980"><tt>\r
+ual_alloc_pd_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo981"><tt>\r
+ual_attach_mcast_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo982"><tt>\r
+ual_bind_file_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo983"><tt>\r
+ual_bind_mw_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo984"><tt>\r
+ual_cancel_mad_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo985"><tt>\r
+ual_cancel_sa_req_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo986"><tt>\r
+ual_cep_apr_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo987"><tt>\r
+ual_cep_drep_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo988"><tt>\r
+ual_cep_dreq_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo989"><tt>\r
+ual_cep_get_rtr_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo990"><tt>\r
+ual_cep_get_rts_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo991"><tt>\r
+ual_cep_get_timewait_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo992"><tt>\r
+ual_cep_handoff_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo993"><tt>\r
+ual_cep_lap_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo994"><tt>\r
+ual_cep_listen_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo995"><tt>\r
+ual_cep_mra_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo996"><tt>\r
+ual_cep_poll_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo997"><tt>\r
+ual_cep_rej_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo998"><tt>\r
+ual_cep_rep_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo999"><tt>\r
+ual_cep_rtu_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1000"><tt>\r
+ual_ci_call_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1001"><tt>\r
+ual_close_ca_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1002"><tt>\r
+ual_cm_req_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1003"><tt>\r
+ual_create_av_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1004"><tt>\r
+ual_create_cep_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1005"><tt>\r
+ual_create_cq_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1006"><tt>\r
+ual_create_mw_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1007"><tt>\r
+ual_create_qp_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1008"><tt>\r
+ual_dealloc_pd_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1009"><tt>\r
+ual_dereg_mad_pool_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1010"><tt>\r
+ual_dereg_mad_svc_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1011"><tt>\r
+ual_dereg_mr_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1012"><tt>\r
+ual_dereg_pnp_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1013"><tt>\r
+ual_destroy_av_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1014"><tt>\r
+ual_destroy_cq_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1015"><tt>\r
+ual_destroy_mw_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1016"><tt>\r
+ual_destroy_qp_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1017"><tt>\r
+ual_detach_mcast_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1018"><tt>\r
+ual_force_apm_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1019"><tt>\r
+ual_get_uvp_name_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1020"><tt>\r
+ual_mad_recv_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1021"><tt>\r
+ual_modify_av_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1022"><tt>\r
+ual_modify_ca_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1023"><tt>\r
+ual_modify_cq_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1024"><tt>\r
+ual_modify_qp_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1025"><tt>\r
+ual_open_ca_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1026"><tt>\r
+ual_peek_cq_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1027"><tt>\r
+ual_poll_cq_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1028"><tt>\r
+ual_poll_pnp_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1029"><tt>\r
+ual_post_recv_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1030"><tt>\r
+ual_post_send_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1031"><tt>\r
+ual_query_av_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1032"><tt>\r
+ual_query_ca_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1033"><tt>\r
+ual_query_cq_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1034"><tt>\r
+ual_query_mr_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1035"><tt>\r
+ual_query_mw_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1036"><tt>\r
+ual_query_qp_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1037"><tt>\r
+ual_rearm_cq_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1038"><tt>\r
+ual_rearm_n_cq_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1039"><tt>\r
+ual_rearm_pnp_ioctl_in_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1040"><tt>\r
+ual_rearm_pnp_ioctl_out_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1041"><tt>\r
+ual_reg_mad_pool_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1042"><tt>\r
+ual_reg_mad_svc_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1043"><tt>\r
+ual_reg_mem_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1044"><tt>\r
+ual_reg_pnp_ioctl_in_t</tt></a></td>\r
+</tr>\r
+<tr  class="uneven">\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1045"><tt>\r
+ual_reg_shared_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1046"><tt>\r
+ual_reg_shmid_ioctl_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1047"><tt>\r
+ual_rereg_mem_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1048"><tt>\r
+ual_send_mad_ioctl_t</tt></a></td>\r
+</tr>\r
+<tr  class="even">\r
+<td  class="uneven"><a href="./iba/ib_al_ioctl_h.html#robo1049"><tt>\r
+ual_send_sa_req_t</tt></a></td>\r
+<td  class="even"><a href="./iba/ib_al_ioctl_h.html#robo1050"><tt>\r
+ual_spl_qp_ioctl_t</tt></a></td>\r
+<td  class="uneven"><a href="./user/iba/ib_uvp_h.html#robo1054"><tt>\r
+uvp_interface_t</tt></a></td>\r
+<td></td>\r
+</tr>\r
+</table>\r
+</body>\r
+</html>\r
diff --git a/trunk/docs/robodoc.css b/trunk/docs/robodoc.css
new file mode 100644 (file)
index 0000000..44ae2c5
--- /dev/null
@@ -0,0 +1,36 @@
+body\r
+{\r
+    background-color: #ffffff;\r
+    color: #000000;\r
+    font-family: 'Lucida Grande', Verdana, \r
+                     Geneva, Lucida, Arial, \r
+                     Helvetica, sans-serif;\r
+    font-size: 10pt;\r
+    margin: 2% 5%;\r
+}\r
+h1, h2, h3, h4, h5, h6, h7\r
+{\r
+    background-color: #dddddd;\r
+    color: #000000;\r
+    text-align: right;\r
+    font-size: 11pt;\r
+}\r
+td.even, td.uneven\r
+{\r
+    color: #000000;\r
+    font-size: 10pt;\r
+}\r
+td.even\r
+{\r
+    background-color: #eeeeee;\r
+}\r
+span.SOURCE\r
+{\r
+    white-space: pre;\r
+}\r
+pre\r
+{\r
+    background-color: #ffffff;\r
+    color: #000000;\r
+    font-size: 10pt;\r
+}\r
diff --git a/trunk/docs/user/iba/ib_uvp_h.html b/trunk/docs/user/iba/ib_uvp_h.html
new file mode 100644 (file)
index 0000000..ce9a91a
--- /dev/null
@@ -0,0 +1,2858 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\r
+<html>\r
+<head>\r
+<link rel="stylesheet" href="../../robodoc.css" type="text/css">\r
+<title>./inc_doc/user/iba/ib_uvp_h.html</title>\r
+<!-- Source: ./inc/user/iba/ib_uvp.h -->\r
+<!-- Generated with ROBODoc Version 4.99.22 (Mar  6 2006) -->\r
+</head>\r
+<body bgcolor="#FFFFFF">\r
+<a name="robo_top_of_doc">Generated from ./inc/user/iba/ib_uvp.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.22 on Sun Apr 16 2006 17:39:19\r
+<br />\r
+<hr />\r
+\r
+<h2><a name="robo43">[Modules]<a name="UAL5fUVP5fInterface2fOverview20user2dmode20Verbs">\r
+UAL_UVP_Interface/Overview user-mode Verbs</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_modules.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       User-mode <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> -- User-mode <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> implements the HCA specific\r
+       user-mode functions to plug in to the Usermode Access Layer\r
+       Architecture (UAL)\r
+</pre>\r
+</span><p><strong>COPYRIGHT</strong></p>\r
+<span class="COPYRIGHT"><pre>       Copyright© 2001 Intel Corporation - All Rights Reserved.\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       The user-mode <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Interface defines the mechanism for a HCA vendor\r
+       to plug into the User-mode Access Layer (UAL) architecture.\r
+       Access Layer API is what is exposed to the user-mode applications.\r
+       The     interface described here is not <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> API. In this interface model,\r
+       UAL provides a generic mechanism to exchange vendor specific info\r
+       in the implementation of verbs within the UAL architecture. UAL provides\r
+       the support for callback processing. For instance, AL provides a\r
+       QP error callback when a qp incurs error. Such asynchronous events are\r
+       handled with the support of UAL and not by the vendor interface described\r
+       here.\r
+\r
+       For verbs related AL APIs, UAL packages the parameters in an IOCTL\r
+       and sends it to the kernel AL. In the UAL design, this is broken down\r
+       into 3 steps.\r
+\r
+       a. Pre-ioctl step\r
+               A vendor specified pre-ioctl function is called with relevant input\r
+               parameters including a private buffer template (<a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>)\r
+               for the vendor to communicate with the corresponding HCA driver.\r
+               For calls that does not go to the HCA driver (for e.g. <a href="../../iba/ib_al_h.html#robo164">ib_open_ca</a>())\r
+               no private buffer will be passed.\r
+       b. Sending IOCTL to kernel AL\r
+               Following step (a), UAL prepares an IOCTL with the relevant parameters\r
+               including the vendor's private buffer. UAL/user-mode proxy does not\r
+               interpret the contents of the private buffer.\r
+               UAL sends the IOCTL to the user-mode proxy in kernel. The proxy\r
+               interfaces with kernel AL to act on behalf the user. AL passes the\r
+               parameters to the <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver and the results are returned\r
+               back to UAL.\r
+       c. Post-ioctl step.\r
+               Following the return from IOCTL in step (b), UAL calls a\r
+               vendor-specified post-ioctl function with relevant parameters.\r
+               UAL will call the post-ioctl function whether or not step (b)\r
+               succeeded. The ioctl itself could have successfully returned but\r
+               a vendor-specific status in <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a> may indicate a failure.\r
+               UAL also passes the ioctl status to the vendor library so that\r
+               the appropriate action can be taken in the post call.\r
+\r
+       Use of <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a> and pre/post return values\r
+\r
+               1. ci_umv_buf is provided by UAL as a unique buffer template for\r
+               a given verbs call. Vendor could keep any info relevant to\r
+               the specific verbs call in this buffer. This buffer is sufficient\r
+               for uniquely identifying which call it is intended for. For instance,\r
+               the umv buffer set up by vendor in a <a href="#robo1090">uvp_pre_create_qp</a>() could later\r
+               tell the <a href="#robo1064">uvp_post_create_qp_t</a>() which QP it is intended for.\r
+\r
+               2. The success of pre/post-ioctl step to UAL means IB_SUCCESS.\r
+               Any value other than IB_SUCCESS is treated as failure.\r
+\r
+               3. The Vendor could exchange a status in <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>. However, this\r
+               interface does not enumerate the status in <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>.\r
+               However, the vendor could check the status in <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>\r
+               returned from the pre-ioctl     step and act accordingly.\r
+</pre>\r
+</span><p><strong>AUTHOR</strong></p>\r
+<span class="AUTHOR"><pre>       Intel Corporation\r
+</pre>\r
+</span><p><strong>CREATION DATE</strong></p>\r
+<span class="CREATION_DATE"><pre>       XX.XX.XX\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       1. For user mode verbs that require a kernel transition, handles passed\r
+       to kernel are validated in the  user-mode proxy running in kernel.\r
+       Those <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> that are entirely done in user mode that would affect\r
+       speed path do not perform consistency checks. So invalid pointers\r
+       would lead to application crash with core dumps.\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1051">[Functions]<a name="user2dmode20Verbs2funsupported20functions">\r
+user-mode Verbs/unsupported functions</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       1. Register physical memory region with HCA (<a href="../../iba/ib_ci_h.html#robo1148">ci_register_pmr</a>)\r
+       2. Modify physical memory region with HCA (<a href="../../iba/ib_ci_h.html#robo1134">ci_modify_pmr</a>)\r
+       3. Create Special QP    (<a href="../../iba/ib_ci_h.html#robo1119">ci_create_spl_qp</a>)\r
+       4. Local Mad (<a href="../../iba/ib_ci_h.html#robo1130">ci_local_mad</a>)\r
+\r
+       For all these functions, the vendor does NOT provide support\r
+       and UAL will return IB_UNSUPPORTED to the caller of Access Layer.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"></span>\r
+<hr />\r
+\r
+<h2><a name="robo1052">[Functions]<a name="user2dmode20Verbs2fuvp5fbind5fmw">\r
+user-mode Verbs/uvp_bind_mw</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_bind_mw</strong> -- Bind a memory window to a memory region.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_bind_mw</strong>) (\r
+        IN              const   ib_mw_handle_t                          h_uvp_mw,\r
+        IN              const   ib_qp_handle_t                          h_uvp_qp,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo59">ib_bind_wr_t</a>                            *p_mw_bind,\r
+                OUT                     net32_t* const                          p_rkey );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine posts a request to bind a memory window to a registered\r
+       memory region. If the queue pair was created with selectable signaling,\r
+       once the operation is completed successfully then a completion queue entry\r
+       is generated indicating the bind operation has completed. The IB_POST_FENCE\r
+       option could be specified to cause the requestor to wait until outstanding\r
+       RDMA operations can be completed.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_mw\r
+               [in] Vendor's Handle (in user-mode library) to memory window\r
+               that needs to be bound to a memory region.\r
+       h_uvp_qp\r
+               [in] Vendor's QP Handle (in user-mode library) to which\r
+               this bind request is to be posted.\r
+       p_mw_bind\r
+               [in] Input parameters for this bind request, consisting of virtual\r
+               addr range of bind request etc. On successful completion, the new R_KEY\r
+               is returned.\r
+       p_rkey\r
+               [out] Current R_KEY associated with this mw_handle\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The memory bind operation was posted successfully.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete the request.\r
+               No more WQE's to post this request\r
+               No more free WQE's to post this request\r
+       IB_INVALID_MW_HANDLE\r
+               memw_handle supplied is an invalid memory window handle.\r
+       IB_INVALID_PERMISSION\r
+               Invalid access rights specified in request\r
+       IB_INVALID_SERVICE_TYPE\r
+               Invalid service type for this qp_handle.\r
+       IB_INVALID_PARAMETER\r
+               Address or length parameter specified is invalid.\r
+       IB_INVALID_RKEY\r
+               R_KEY specified is invalid for the memory region being bound.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1089">uvp_pre_create_mw</a>, <a href="#robo1063">uvp_post_create_mw_t</a>, <a href="#robo1104">uvp_pre_query_mw</a>,\r
+       <a href="#robo1078">uvp_post_query_mw_t</a>, <a href="#robo1094">uvp_pre_destroy_mw</a>, <a href="#robo1068">uvp_post_destroy_mw_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1053">[Functions]<a name="user2dmode20Verbs2fuvp5fget5finterface">\r
+user-mode Verbs/uvp_get_interface</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_get_interface</strong> -- Get the Vendor's supported <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> calls\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *uvp_get_interface_t)(\r
+        IN      OUT                     <a href="#robo1054">uvp_interface_t</a>*        const   p_uvp );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine is called by UAL to get the functions supported by\r
+       a vendor's library. Upon discovering a new CA, UAL will look for\r
+       the appropriate vendor library, load the library and query using\r
+       this function to get the supported interfaces.\r
+\r
+       If the vendor does not support an interface function, it should be\r
+       set to NULL in the interface structure returned.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       p_uvp\r
+               [in out] Pointer to the <a href="#robo1054">uvp_interface_t</a> structure that has the function\r
+               vector to support verbs functionality.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The registration is successful.\r
+       IB_INSUFFICIENT_MEMORY\r
+               Insufficient memory to satisfy request\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1054">uvp_interface_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1054">[Structures]<a name="user2dmode20Verbs2fuvp5finterface5ft">\r
+user-mode Verbs/uvp_interface_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_strutures.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_interface_t</strong> -- Interface holding supported Vendor APIs\r
+</pre>\r
+</span><p><strong>PURPOSE</strong></p>\r
+<span class="PURPOSE"><pre>       The following structure is supplied by a Vendor library\r
+       providing verbs functionality.\r
+</pre>\r
+</span><p><strong>SOURCE</strong></p>\r
+<span class="SOURCE"><pre>typedef struct _uvp_interface\r
+{\r
+        <a href="../../iba/ib_types_h.html#robo895">ib_net64_t</a>                                      guid;\r
+        /*\r
+         * Version of the header file this interface export can handle\r
+         */\r
+        uint32_t                                        version;\r
+\r
+        /*\r
+         * HCA Access <a href="../../iba/ib_ci_h.html#robo39">Verbs</a>\r
+         */\r
+        <a href="#robo1100">uvp_pre_open_ca_t</a>                       pre_open_ca;\r
+        <a href="#robo1074">uvp_post_open_ca_t</a>                      post_open_ca;\r
+\r
+        <a href="#robo1102">uvp_pre_query_ca</a>                        pre_query_ca;\r
+        <a href="#robo1076">uvp_post_query_ca_t</a>                     post_query_ca;\r
+\r
+        <a href="#robo1098">uvp_pre_modify_ca</a>                       pre_modify_ca;\r
+        <a href="#robo1072">uvp_post_modify_ca_t</a>            post_modify_ca;\r
+\r
+        <a href="#robo1086">uvp_pre_close_ca_t</a>                      pre_close_ca;\r
+        <a href="#robo1060">uvp_post_close_ca_t</a>                     post_close_ca;\r
+\r
+        <a href="#robo1085">uvp_pre_ci_call</a>                         pre_ci_call;\r
+        <a href="#robo1059">uvp_post_ci_call</a>                        post_ci_call;\r
+\r
+\r
+        /*\r
+         * Protection Domain\r
+         */\r
+        <a href="#robo1083">uvp_pre_allocate_pd</a>                     pre_allocate_pd;\r
+        <a href="#robo1057">uvp_post_allocate_pd_t</a>          post_allocate_pd;\r
+        <a href="#robo1091">uvp_pre_deallocate_pd</a>           pre_deallocate_pd;\r
+        <a href="#robo1065">uvp_post_deallocate_pd_t</a>        post_deallocate_pd;\r
+\r
+        /*\r
+         * Address <a href="../../complib/cl_vector_h.html#robo36">Vector</a> Management <a href="../../iba/ib_ci_h.html#robo39">Verbs</a>\r
+         */\r
+\r
+        <a href="#robo1087">uvp_pre_create_av</a>                       pre_create_av;\r
+        <a href="#robo1061">uvp_post_create_av_t</a>            post_create_av;\r
+\r
+        <a href="#robo1101">uvp_pre_query_av</a>                        pre_query_av;\r
+        <a href="#robo1075">uvp_post_query_av_t</a>                     post_query_av;\r
+\r
+        <a href="#robo1097">uvp_pre_modify_av</a>                       pre_modify_av;\r
+        <a href="#robo1071">uvp_post_modify_av_t</a>            post_modify_av;\r
+        <a href="#robo1092">uvp_pre_destroy_av</a>                      pre_destroy_av;\r
+        <a href="#robo1066">uvp_post_destroy_av_t</a>           post_destroy_av;\r
+\r
+        /*\r
+         * QP Management <a href="../../iba/ib_ci_h.html#robo39">Verbs</a>\r
+         */\r
+        <a href="#robo1090">uvp_pre_create_qp</a>                       pre_create_qp;\r
+        <a href="#robo1064">uvp_post_create_qp_t</a>            post_create_qp;\r
+\r
+        /* No support for create_spl_qp, UAL will return error */\r
+\r
+        <a href="#robo1099">uvp_pre_modify_qp</a>                       pre_modify_qp;\r
+        <a href="#robo1073">uvp_post_modify_qp_t</a>            post_modify_qp;\r
+\r
+        <a href="#robo1105">uvp_pre_query_qp</a>                        pre_query_qp;\r
+        <a href="#robo1079">uvp_post_query_qp_t</a>                     post_query_qp;\r
+\r
+        <a href="#robo1095">uvp_pre_destroy_qp</a>                      pre_destroy_qp;\r
+        <a href="#robo1069">uvp_post_destroy_qp_t</a>           post_destroy_qp;\r
+\r
+        /*\r
+         * Completion Queue Management <a href="../../iba/ib_ci_h.html#robo39">Verbs</a>\r
+         */\r
+        <a href="#robo1088">uvp_pre_create_cq</a>                       pre_create_cq;\r
+        <a href="#robo1062">uvp_post_create_cq_t</a>            post_create_cq;\r
+\r
+        <a href="#robo1103">uvp_pre_query_cq</a>                        pre_query_cq;\r
+        <a href="#robo1077">uvp_post_query_cq_t</a>                     post_query_cq;\r
+\r
+        <a href="#robo1106">uvp_pre_resize_cq</a>                       pre_resize_cq;\r
+        <a href="#robo1081">uvp_post_resize_cq_t</a>            post_resize_cq;\r
+\r
+        <a href="#robo1093">uvp_pre_destroy_cq</a>                      pre_destroy_cq;\r
+        <a href="#robo1067">uvp_post_destroy_cq_t</a>           post_destroy_cq;\r
+\r
+        /*\r
+         * Memory Window <a href="../../iba/ib_ci_h.html#robo39">Verbs</a>\r
+         */\r
+        <a href="#robo1089">uvp_pre_create_mw</a>                       pre_create_mw;\r
+        <a href="#robo1063">uvp_post_create_mw_t</a>            post_create_mw;\r
+        <a href="#robo1104">uvp_pre_query_mw</a>                        pre_query_mw;\r
+        <a href="#robo1078">uvp_post_query_mw_t</a>                     post_query_mw;\r
+        <a href="#robo1094">uvp_pre_destroy_mw</a>                      pre_destroy_mw;\r
+        <a href="#robo1068">uvp_post_destroy_mw_t</a>           post_destroy_mw;\r
+\r
+        /* No pre/post functions for bind */\r
+        <a href="#robo1052">uvp_bind_mw</a>                                     bind_mw;\r
+\r
+        /*\r
+         * Work Request Processing <a href="../../iba/ib_ci_h.html#robo39">Verbs</a>\r
+         * Should the types be same as <a href="../../iba/ib_ci_h.html#robo39">Verbs</a>?\r
+         */\r
+        <a href="#robo1082">uvp_post_send</a>                           post_send;\r
+        <a href="#robo1080">uvp_post_recv</a>                           post_recv;\r
+\r
+        /*\r
+         * Completion Processing and\r
+         * Completion Notification Request <a href="../../iba/ib_ci_h.html#robo39">Verbs</a>.\r
+         * Should the types be same as <a href="../../iba/ib_ci_h.html#robo39">Verbs</a>?\r
+         */\r
+        <a href="#robo1055">uvp_peek_cq</a>                                     peek_cq;\r
+        <a href="#robo1056">uvp_poll_cq</a>                                     poll_cq;\r
+        <a href="#robo1107">uvp_rearm_cq</a>                            rearm_cq;\r
+        <a href="#robo1108">uvp_rearm_n_cq</a>                          rearm_n_cq;\r
+\r
+        /*\r
+         * Multicast Support <a href="../../iba/ib_ci_h.html#robo39">Verbs</a>\r
+         */\r
+        <a href="#robo1084">uvp_pre_attach_mcast</a>            pre_attach_mcast;\r
+        <a href="#robo1058">uvp_post_attach_mcast_t</a>         post_attach_mcast;\r
+        <a href="#robo1096">uvp_pre_detach_mcast</a>            pre_detach_mcast;\r
+        <a href="#robo1070">uvp_post_detach_mcast_t</a>         post_detach_mcast;\r
+\r
+} <strong>uvp_interface_t</strong>;\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1055">[Functions]<a name="user2dmode20Verbs2fuvp5fpeek5fcq">\r
+user-mode Verbs/uvp_peek_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_peek_cq</strong>\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       Returns the number of entries currently on the completion queue.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_peek_cq</strong>) (\r
+        IN              const   void*           __ptr64                 h_cq,\r
+                OUT                     uint32_t* const                         p_n_cqes );\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Type-cast as appropriate for user/kernel mode, this is the\r
+               CQ handle for the completion queue being peeked.\r
+\r
+       p_n_cqes\r
+               [out] Upon successful completion of this call, contains the number\r
+               of completion queue entries currently on the completion queue.\r
+\r
+ RETURN VALUES\r
+       IB_SUCCESS\r
+               The peek operation completed successfully.\r
+\r
+       IB_INVALID_CQ_HANDLE\r
+               The completion queue handle was invalid.\r
+\r
+       IB_INVALID_PARAMETER\r
+               A reference to the completion queue entry count was not provided.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel and User mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1088">uvp_pre_create_cq</a>, <a href="#robo1062">uvp_post_create_cq_t</a>, <a href="#robo1056">uvp_poll_cq</a>, <a href="#robo1107">uvp_rearm_cq</a>,\r
+       <a href="#robo1108">uvp_rearm_n_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1056">[Functions]<a name="user2dmode20Verbs2fuvp5fpoll5fcq">\r
+user-mode Verbs/uvp_poll_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_poll_cq</strong> -- Retrieve a work completion record from a completion queue\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_poll_cq</strong>) (\r
+        IN              const   void*           __ptr64                 h_cq,\r
+        IN      OUT                     <a href="../../iba/ib_types_h.html#robo260">ib_wc_t</a>**       const                   pp_free_wclist,\r
+                OUT                     <a href="../../iba/ib_types_h.html#robo260">ib_wc_t</a>**       const                   pp_done_wclist );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine retrieves a work completion entry from the specified\r
+       completion queue. The contents of the data returned in a work completion\r
+       is specified in <a href="../../iba/ib_types_h.html#robo260">ib_wc_t</a>.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Type-cast as appropriate for user/kernel mode, this is\r
+               the CQ handle for the completion queue being polled.\r
+       pp_free_wclist\r
+               [in out] A list of work request structures provided by the consumer\r
+               for the channel interface to return completed Completion Queue\r
+               entries.  If not all the entries are consumed, this list holds the\r
+               list of un-utilized completion entries provided back to the consumer.\r
+       pp_done_wclist\r
+               [out] A list of work completions retrieved from the completion queue\r
+               and successfully processed.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               Poll completed successfully. If on completion the wc_free list is\r
+               empty, then there are potentially more entries and the consumer must\r
+               be ready to retrieve entries further.\r
+       IB_INVALID_CQ_HANDLE\r
+               The cq_handle supplied is not valid.\r
+       IB_NOT_FOUND\r
+               There are no more entries found in the specified CQ.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel &amp; User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1088">uvp_pre_create_cq</a>, <a href="#robo1062">uvp_post_create_cq_t</a>, <a href="#robo1107">uvp_rearm_cq</a>,\r
+       <a href="#robo1108">uvp_rearm_n_cq</a>, <a href="#robo1082">uvp_post_send</a>, <a href="#robo1080">uvp_post_recv</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1057">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fallocate5fpd5ft">\r
+user-mode Verbs/uvp_post_allocate_pd_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_allocate_pd_t</strong> -- Post-ioctl function to allocate PD\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_allocate_pd_t</strong>) (\r
+        IN                              ib_ca_handle_t                          h_uvp_ca,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+                OUT                     ib_pd_handle_t                          *ph_uvp_pd,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_allocate_pd_t</strong>() is implemented by vendor. It is the post-ioctl\r
+       routine for the AL call <a href="../../iba/ib_al_h.html#robo48">ib_alloc_pd</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_ca\r
+               [in] Vendor's user-mode library CA handle.\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       ph_uvp_pd\r
+               [out] The vendor library handle to the newly created protection domain.\r
+       p_umv_buf\r
+               [in] This contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1083">uvp_pre_allocate_pd</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1083">uvp_pre_allocate_pd</a>, <a href="#robo1091">uvp_pre_deallocate_pd</a>, <a href="#robo1065">uvp_post_deallocate_pd_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1058">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fattach5fmcast5ft">\r
+user-mode Verbs/uvp_post_attach_mcast_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_attach_mcast_t</strong> -- Post-ioctl function to Attach a queue pair\r
+                                                        to a multicast group\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_attach_mcast_t</strong>) (\r
+        IN              const   ib_qp_handle_t                          h_uvp_qp,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+                OUT                     ib_mcast_handle_t                       *ph_mcast,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_attach_mcast_t</strong>() is the post-ioctl routine implemented by vendor\r
+       to attach a queue pair to a multicast group.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_qp\r
+               [in] Vendor's Queue pair handle (in user-mode library)\r
+               which needs to be added to\r
+               the multicast group on the adapter.\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       ph_mcast\r
+               [out] Vendor's Multicast handle (in user-mode library)\r
+               holding the association of this queue pair to the multicast group.\r
+       p_umv_buf\r
+               [in out] On input, it contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1084">uvp_pre_attach_mcast</a>)\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel &amp; User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1090">uvp_pre_create_qp</a>, <a href="#robo1064">uvp_post_create_qp_t</a>, <a href="#robo1084">uvp_pre_attach_mcast</a>,\r
+       <a href="#robo1096">uvp_pre_detach_mcast</a>, <a href="#robo1070">uvp_post_detach_mcast_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1059">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fci5fcall">\r
+user-mode Verbs/uvp_post_ci_call</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_ci_call</strong> -- Post-ioctl function to <a href="../../iba/ib_al_h.html#robo65">ib_ci_call</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_ci_call</strong>) (\r
+        IN              const   ib_ca_handle_t                          h_uvp_ca,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+        IN              const   void* __ptr64 *         const   handle_array    OPTIONAL,\r
+        IN                              uint32_t                                        num_handles,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo66">ib_ci_op_t</a>*                     const   p_ci_op,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf);\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_ci_call</strong>() is implemented by vendor. It is the pre-ioctl\r
+       routine for <a href="../../iba/ib_al_h.html#robo65">ib_ci_call</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_ca\r
+               [in] Vendor's user-mode library handle to the CA\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       handle_array\r
+               [in] An array of uvp handles.  For valid types, refer to <a href="../../iba/ib_ci_h.html#robo_top_of_doc">ib_ci.h</a> or\r
+               <a href="../../iba/ib_al_h.html#robo_top_of_doc">ib_al.h</a>.  This is an optional parameter.\r
+       num_handles\r
+               [in] The number of handles in the array.\r
+       p_ci_op\r
+               [in] The operation that is requested by the client.  For more info,\r
+               refer <a href="../../iba/ib_types_h.html#robo_top_of_doc">ib_types.h</a>\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1085">uvp_pre_ci_call</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1060">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fclose5fca5ft">\r
+user-mode Verbs/uvp_post_close_ca_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_close_ca_t</strong> -- Post-ioctl operation for user-mode <a href="../../iba/ib_al_h.html#robo68">ib_close_ca</a>().\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_post_close_ca_t</strong>) (\r
+        IN                              ib_ca_handle_t                          h_uvp_ca,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_close_ca_t</strong>() is implemented by vendor. It is the post-ioctl routine\r
+       for the AL call <a href="../../iba/ib_al_h.html#robo68">ib_close_ca</a>().\r
+       UAL calls this function in the context of the asynchronous callback\r
+       from AL notifying the successful destruction of CA.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_ca\r
+               [in] Vendor's user-mode library handle to the open instance of the CA\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The post-ioctl for <a href="../../iba/ib_al_h.html#robo68">ib_close_ca</a>() successfully completed.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1100">uvp_pre_open_ca_t</a>, <a href="#robo1074">uvp_post_open_ca_t</a>, <a href="#robo1102">uvp_pre_query_ca</a>, <a href="#robo1076">uvp_post_query_ca_t</a>,\r
+       <a href="#robo1098">uvp_pre_modify_ca</a>,      <a href="#robo1072">uvp_post_modify_ca_t</a>, <a href="#robo1086">uvp_pre_close_ca_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1061">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fcreate5fav5ft">\r
+user-mode Verbs/uvp_post_create_av_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_create_av_t</strong> -- Post-ioctl function to create AV\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_create_av_t</strong>) (\r
+        IN              const   ib_pd_handle_t                          h_uvp_pd,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+                OUT                     ib_av_handle_t                          *ph_uvp_av,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_create_av_t</strong>() is implemented by vendor. It is the post-ioctl routine\r
+       for <a href="../../iba/ib_al_h.html#robo104">ib_create_av</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_pd\r
+               [in] Vendor's user-mode library handle to the Protection domain\r
+               to which this AV is associated\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       ph_uvp_av\r
+               [out] Vendor's address vector handle.\r
+       p_umv_buf\r
+               [in] On input, it contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1087">uvp_pre_create_av</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1087">uvp_pre_create_av</a>, <a href="#robo1101">uvp_pre_query_av</a>, <a href="#robo1075">uvp_post_query_av_t</a>, <a href="#robo1097">uvp_pre_modify_av</a>,\r
+       <a href="#robo1071">uvp_post_modify_av_t</a>, <a href="#robo1092">uvp_pre_destroy_av</a>, <a href="#robo1066">uvp_post_destroy_av_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1062">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fcreate5fcq5ft">\r
+user-mode Verbs/uvp_post_create_cq_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_create_cq_t</strong> -- Post-ioctl function to Create a completion queue (CQ)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_create_cq_t</strong>) (\r
+        IN              const   ib_ca_handle_t                          h_uvp_ca,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+        IN              const   uint32_t                                        size,\r
+                OUT                     ib_cq_handle_t                          *ph_uvp_cq,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_create_cq_t</strong>() is implemented by vendor to create CQ.\r
+       It is the post-ioctl routine for <a href="../../iba/ib_al_h.html#robo105">ib_create_cq</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_pd\r
+               [in] Vendor's handle to an existing protection domain (in user-mode\r
+               library)\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       size\r
+               [in] size of the CQ that was created by the provider.\r
+               If VPD created the CQ in kernel, this is the value as set by\r
+               VPD. If UVP creates the CQ in user-mode, then uvp already knows\r
+               the size of the CQ in the pre-ioctl.\r
+       ph_uvp_cq\r
+               [out] Vendor's Handle to the newly created CQ (in user-mode library).\r
+       p_umv_buf\r
+               [in out] On input, it contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1088">uvp_pre_create_cq</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1088">uvp_pre_create_cq</a>, <a href="#robo1106">uvp_pre_resize_cq</a>, <a href="#robo1081">uvp_post_resize_cq_t</a>,\r
+       <a href="#robo1103">uvp_pre_query_cq</a>, <a href="#robo1077">uvp_post_query_cq_t</a>, <a href="#robo1093">uvp_pre_destroy_cq</a>,\r
+       <a href="#robo1067">uvp_post_destroy_cq_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1063">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fcreate5fmw5ft">\r
+user-mode Verbs/uvp_post_create_mw_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_create_mw_t</strong> -- Post-ioctl function to create a memory window\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_create_mw_t</strong>) (\r
+        IN              const   ib_pd_handle_t                          h_uvp_pd,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+        IN                              net32_t                                         rkey,\r
+                OUT                     ib_mw_handle_t                          *ph_uvp_mw,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_create_mw_t</strong>() is implemented by vendor. It is the post-ioctl routine\r
+       for <a href="../../iba/ib_al_h.html#robo108">ib_create_mw</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_pd\r
+               [in] Vendor's Protection domain handle (in user-mode library)\r
+               to use for this memory window\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       p_rkey\r
+               [in] Remote access key that can be exchanged with a remote node to\r
+               perform RDMA transactions on this memory window.\r
+       ph_uvp_mw\r
+               [out] Vendor's Handle (in user-mode library) to the newly created\r
+               memory window.\r
+       p_umv_buf\r
+               [in out] On input, it contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1089">uvp_pre_create_mw</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return an error.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1089">uvp_pre_create_mw</a>, <a href="#robo1104">uvp_pre_query_mw</a>, <a href="#robo1078">uvp_post_query_mw_t</a>,\r
+       <a href="#robo1052">uvp_bind_mw</a>, <a href="#robo1094">uvp_pre_destroy_mw</a>, <a href="#robo1068">uvp_post_destroy_mw_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1064">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fcreate5fqp5ft">\r
+user-mode Verbs/uvp_post_create_qp_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_create_qp_t</strong> -- Post-ioctl function to Create a Queue Pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_create_qp_t</strong>) (\r
+        IN              const   ib_pd_handle_t                          h_uvp_pd,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+                OUT                     ib_qp_handle_t                          *ph_uvp_qp,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_create_qp_t</strong>() is implemented by vendor. It is the post-ioctl routine\r
+       for <a href="../../iba/ib_al_h.html#robo109">ib_create_qp</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_pd\r
+               [in] Vendor's Protection domain handle in user-mode library.\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       ph_uvp_qp\r
+               [out] Vendor's QP handle for the newly created QP (in user-mode\r
+               library).\r
+       p_umv_buf\r
+               [in out] On input, it contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1090">uvp_pre_create_qp</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1090">uvp_pre_create_qp</a>, <a href="#robo1105">uvp_pre_query_qp</a>, <a href="#robo1079">uvp_post_query_qp_t</a>, <a href="#robo1099">uvp_pre_modify_qp</a>,\r
+       <a href="#robo1073">uvp_post_modify_qp_t</a>, <a href="#robo1095">uvp_pre_destroy_qp</a>, <a href="#robo1069">uvp_post_destroy_qp_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1065">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fdeallocate5fpd5ft">\r
+user-mode Verbs/uvp_post_deallocate_pd_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_deallocate_pd_t</strong> -- Post-ioctl function to deallocate PD\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_deallocate_pd_t</strong>) (\r
+        IN              const   ib_pd_handle_t                          h_uvp_pd,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_deallocate_pd_t</strong>() is implemented by the vendor. It is the\r
+       post-ioctl routine for the AL call <a href="../../iba/ib_al_h.html#robo110">ib_dealloc_pd</a>().\r
+\r
+       When all the resouces associated with a PD are destroyed,\r
+       UAL invokes this post-ioctl routine to deallocate PD. Since the\r
+       completion of the resource deallocation (e.g QP/CQ) is asynchronous,\r
+       this function is called from a UAL asynchronous callback\r
+       processing thread.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_pd\r
+               [in] Vendor's user-mode library PD handle.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1083">uvp_pre_allocate_pd</a>, <a href="#robo1057">uvp_post_allocate_pd_t</a>, <a href="#robo1091">uvp_pre_deallocate_pd</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1066">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fdestroy5fav5ft">\r
+user-mode Verbs/uvp_post_destroy_av_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_destroy_av_t</strong> -- Post-ioctl function to destroy AV\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_destroy_av_t</strong>) (\r
+        IN              const   ib_av_handle_t                          h_uvp_av,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_destroy_av_t</strong>() is implemented by vendor. It is the post-ioctl\r
+       routine for <a href="../../iba/ib_al_h.html#robo115">ib_destroy_av</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_av\r
+               [in] Vendor's AV handle in user-mode library.\r
+       p_umv_buf\r
+               [in out]\r
+               On input, it contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1092">uvp_pre_destroy_av</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1087">uvp_pre_create_av</a>, <a href="#robo1061">uvp_post_create_av_t</a>, <a href="#robo1101">uvp_pre_query_av</a>, <a href="#robo1075">uvp_post_query_av_t</a>,\r
+       <a href="#robo1097">uvp_pre_modify_av</a>, <a href="#robo1071">uvp_post_modify_av_t</a>, <a href="#robo1092">uvp_pre_destroy_av</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1067">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fdestroy5fcq5ft">\r
+user-mode Verbs/uvp_post_destroy_cq_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_destroy_cq_t</strong> -- Post-ioctl function to Destroy a CQ.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_destroy_cq_t</strong>) (\r
+        IN              const   ib_cq_handle_t                          h_uvp_cq,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_destroy_cq_t</strong>() is implemented by vendor to destroy CQ.\r
+       It is the post-ioctl routine for <a href="../../iba/ib_al_h.html#robo116">ib_destroy_cq</a>().\r
+       UAL invokes this post-ioctl routine to destroy CQ when it receives\r
+       asynchronous notification from the user-mode proxy.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_cq\r
+               [in] Vendor's Handle to the cq (in user-mode library)\r
+               that needs to be destroyed.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1088">uvp_pre_create_cq</a>, <a href="#robo1062">uvp_post_create_cq_t</a>, <a href="#robo1106">uvp_pre_resize_cq</a>,\r
+       <a href="#robo1081">uvp_post_resize_cq_t</a>, <a href="#robo1103">uvp_pre_query_cq</a>, <a href="#robo1077">uvp_post_query_cq_t</a>,\r
+       <a href="#robo1093">uvp_pre_destroy_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1068">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fdestroy5fmw5ft">\r
+user-mode Verbs/uvp_post_destroy_mw_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_destroy_mw_t</strong> -- Post-ioctl function to destroy a memory window\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_destroy_mw_t</strong>) (\r
+        IN              const   ib_mw_handle_t                          h_uvp_mw,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_destroy_mw_t</strong>() is implemented by vendor. It is the post-ioctl\r
+       routine to destroy a memory window.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_mw\r
+               [in] Vendor's handle to the memory window\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               Destroy operation successful.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1089">uvp_pre_create_mw</a>, <a href="#robo1063">uvp_post_create_mw_t</a>, <a href="#robo1104">uvp_pre_query_mw</a>,\r
+       <a href="#robo1078">uvp_post_query_mw_t</a>, <a href="#robo1052">uvp_bind_mw</a>, <a href="#robo1094">uvp_pre_destroy_mw</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1069">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fdestroy5fqp5ft">\r
+user-mode Verbs/uvp_post_destroy_qp_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_destroy_qp_t</strong> -- Post-ioctl function to Destroy a Queue Pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_destroy_qp_t</strong>) (\r
+        IN              const   ib_qp_handle_t                          h_uvp_qp,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_destroy_qp_t</strong>() is implemented by vendor. It is the post-ioctl\r
+       routine for <a href="../../iba/ib_al_h.html#robo120">ib_destroy_qp</a>().\r
+       UAL invokes this post-ioctl routine to destroy QP when it receives\r
+       asynchronous notification from the user-mode proxy in kernel.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_qp\r
+               [in] Vendor's Handle to the qp (in user-mode library)\r
+               that needs to be destroyed.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The post-ioctl call is successful.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1090">uvp_pre_create_qp</a>, <a href="#robo1064">uvp_post_create_qp_t</a>, <a href="#robo1105">uvp_pre_query_qp</a>, <a href="#robo1079">uvp_post_query_qp_t</a>,\r
+       <a href="#robo1099">uvp_pre_modify_qp</a>, <a href="#robo1073">uvp_post_modify_qp_t</a>, <a href="#robo1095">uvp_pre_destroy_qp</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1070">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fdetach5fmcast5ft">\r
+user-mode Verbs/uvp_post_detach_mcast_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_detach_mcast_t</strong> -- Post-ioctl function to detach a queue pair\r
+                                                        from a multicast group\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_detach_mcast_t</strong>) (\r
+        IN                              ib_mcast_handle_t                       h_uvp_mcast,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_detach_mcast_t</strong>() is the post-ioctl routine implemented by vendor\r
+       to attach a queue pair to a multicast group.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_mcast\r
+               [out] Vendor's Multicast handle holding the association of this\r
+               queue pair to the multicast group.\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel &amp; User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1090">uvp_pre_create_qp</a>, <a href="#robo1064">uvp_post_create_qp_t</a>, <a href="#robo1084">uvp_pre_attach_mcast</a>,\r
+       <a href="#robo1058">uvp_post_attach_mcast_t</a>, <a href="#robo1096">uvp_pre_detach_mcast</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1071">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fmodify5fav5ft">\r
+user-mode Verbs/uvp_post_modify_av_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_modify_av_t</strong> -- Post-ioctl function to modify AV\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_modify_av_t</strong>) (\r
+        IN              const   ib_av_handle_t                          h_uvp_av,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_modify_av_t</strong>() is implemented by vendor to modify the attributes\r
+       of AV. It is the post-ioctl routine for <a href="../../iba/ib_al_h.html#robo155">ib_modify_av</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_av\r
+               [in] Vendor's av handle in user-mode library.\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       p_umv_buf\r
+               [in out] On input, it contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1097">uvp_pre_modify_av</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1087">uvp_pre_create_av</a>, <a href="#robo1061">uvp_post_create_av_t</a>, <a href="#robo1101">uvp_pre_query_av</a>, <a href="#robo1075">uvp_post_query_av_t</a>,\r
+       <a href="#robo1097">uvp_pre_modify_av</a>, <a href="#robo1092">uvp_pre_destroy_av</a>, <a href="#robo1066">uvp_post_destroy_av_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1072">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fmodify5fca5ft">\r
+user-mode Verbs/uvp_post_modify_ca_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_modify_ca_t</strong> -- Post-ioctl operation for user-mode <a href="../../iba/ib_al_h.html#robo156">ib_modify_ca</a>()\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_modify_ca_t</strong>) (\r
+        IN                              ib_ca_handle_t                          h_uvp_ca,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_modify_ca_t</strong>() is implemented by vendor. It is the post-ioctl routine\r
+       for the AL call <a href="../../iba/ib_al_h.html#robo156">ib_modify_ca</a>() in user-mode.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_ca\r
+               [in] Vendor's user-mode library handle to the open instance of the CA\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1100">uvp_pre_open_ca_t</a>, <a href="#robo1074">uvp_post_open_ca_t</a>, <a href="#robo1102">uvp_pre_query_ca</a>, <a href="#robo1076">uvp_post_query_ca_t</a>,\r
+       <a href="#robo1098">uvp_pre_modify_ca</a>,      <a href="#robo1086">uvp_pre_close_ca_t</a>, <a href="#robo1060">uvp_post_close_ca_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1073">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fmodify5fqp5ft">\r
+user-mode Verbs/uvp_post_modify_qp_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_modify_qp_t</strong> -- Post-ioctl function to Modify attributes of\r
+                                                 the specified QP.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_modify_qp_t</strong>) (\r
+        IN              const   ib_qp_handle_t                          h_uvp_qp,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_modify_qp_t</strong>() is implemented by vendor to modify the qp attributes.\r
+       It is the post-ioctl routine for <a href="../../iba/ib_al_h.html#robo158">ib_modify_qp</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_qp\r
+               [in] Vendor's qp Handle to the queue pair (in user-mode library)\r
+               whose state is modified.\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       p_umv_buf\r
+               [in out] On input, it contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1099">uvp_pre_modify_qp</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1090">uvp_pre_create_qp</a>, <a href="#robo1064">uvp_post_create_qp_t</a>, <a href="#robo1105">uvp_pre_query_qp</a>, <a href="#robo1079">uvp_post_query_qp_t</a>,\r
+       <a href="#robo1099">uvp_pre_modify_qp</a>, <a href="#robo1095">uvp_pre_destroy_qp</a>, <a href="#robo1069">uvp_post_destroy_qp_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1074">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fopen5fca5ft">\r
+user-mode Verbs/uvp_post_open_ca_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_open_ca_t</strong> -- Post-ioctl operation for user-mode <a href="../../iba/ib_al_h.html#robo164">ib_open_ca</a>()\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_post_open_ca_t</strong>) (\r
+        IN              const   <a href="../../iba/ib_types_h.html#robo895">ib_net64_t</a>                                      ca_guid,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+                OUT                     ib_ca_handle_t                          *ph_uvp_ca,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_open_ca_t</strong>() is implemented by vendor. It is the post-ioctl routine\r
+       for the AL call <a href="../../iba/ib_al_h.html#robo164">ib_open_ca</a>() in user-mode.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       ca_guid\r
+               [in] The HCA adapter's EUI64 identifier.\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       ph_uvp_ca\r
+               [out] Pointer to vendor's handle to the newly opened instance of\r
+               the CA.\r
+       p_umv_buf\r
+               [in] This contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (uvp_pre_open_ca).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The HCA is return handle is valid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to satisfy request.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1100">uvp_pre_open_ca_t</a>, <a href="#robo1102">uvp_pre_query_ca</a>, <a href="#robo1076">uvp_post_query_ca_t</a>, <a href="#robo1098">uvp_pre_modify_ca</a>,\r
+       <a href="#robo1072">uvp_post_modify_ca_t</a>,   <a href="#robo1086">uvp_pre_close_ca_t</a>, <a href="#robo1060">uvp_post_close_ca_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1075">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fquery5fav5ft">\r
+user-mode Verbs/uvp_post_query_av_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       Vendor-specific post-ioctl operation for user-mode <a href="../../iba/ib_al_h.html#robo213">ib_query_ca</a>()\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_query_av_t</strong>) (\r
+        IN              const   ib_av_handle_t                          h_uvp_av,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+        IN      OUT                     <a href="../../iba/ib_types_h.html#robo57">ib_av_attr_t</a>                            *p_addr_vector,\r
+        IN      OUT                     ib_pd_handle_t                          *ph_pd,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_query_av_t</strong>() is implemented by vendor. It is the post-ioctl routine\r
+       for the AL call <a href="../../iba/ib_al_h.html#robo212">ib_query_av</a>() in user-mode.\r
+       UAL provides the results of the query to the vendor library in this\r
+       post-ioctl routine.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_av\r
+               [in] Vendor's handle to the address vector in user-mode library\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       p_addr_vector\r
+               [in out] AV attribute (as returned by the ioctl).\r
+       ph_pd\r
+               [out] The vendor library PD handle associated with this AV.\r
+       p_umv_buf\r
+               [in]\r
+               On input, it contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1101">uvp_pre_query_av</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1087">uvp_pre_create_av</a>, <a href="#robo1061">uvp_post_create_av_t</a>, <a href="#robo1101">uvp_pre_query_av</a>, <a href="#robo1097">uvp_pre_modify_av</a>,\r
+       <a href="#robo1071">uvp_post_modify_av_t</a>, <a href="#robo1092">uvp_pre_destroy_av</a>, <a href="#robo1066">uvp_post_destroy_av_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1076">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fquery5fca5ft">\r
+user-mode Verbs/uvp_post_query_ca_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_query_ca_t</strong> -- Post-ioctl operation for user-mode <a href="../../iba/ib_al_h.html#robo213">ib_query_ca</a>()\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_query_ca_t</strong>) (\r
+        IN                              ib_ca_handle_t                          h_uvp_ca,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo60">ib_ca_attr_t</a>                            *p_ca_attr,\r
+        IN                              size_t                                          byte_count,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_query_ca_t</strong>() is implemented by vendor. It is the post-ioctl routine\r
+       for the AL call <a href="../../iba/ib_al_h.html#robo213">ib_query_ca</a>() in user-mode. UAL provides the results\r
+       of querying the CA attributes to the vendor's post-ioctl routine.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_ca\r
+               [in] Vendor's user-mode library handle to the open instance of the CA\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       p_ca_attr\r
+               [in] CA attribute of this Host Channel adapter (as returned by\r
+               from ioctl to kernel AL).\r
+       byte_count\r
+               [in] Number of bytes in ca_attr buffer.\r
+       p_umv_buf\r
+               [in ] This contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1102">uvp_pre_query_ca</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1100">uvp_pre_open_ca_t</a>, <a href="#robo1074">uvp_post_open_ca_t</a>, <a href="#robo1102">uvp_pre_query_ca</a>, <a href="#robo1098">uvp_pre_modify_ca</a>,\r
+       <a href="#robo1072">uvp_post_modify_ca_t</a>,   <a href="#robo1086">uvp_pre_close_ca_t</a>, <a href="#robo1060">uvp_post_close_ca_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1077">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fquery5fcq5ft">\r
+user-mode Verbs/uvp_post_query_cq_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_query_cq_t</strong> -- Post-ioctl to Query the number of entries\r
+                                                configured for the CQ.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_query_cq_t</strong>) (\r
+        IN              const   ib_cq_handle_t                          h_uvp_cq,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+        IN              const   uint32_t                                        size,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_query_cq_t</strong>() is implemented by vendor to query CQ.\r
+       It is the post-ioctl routine for <a href="../../iba/ib_al_h.html#robo215">ib_query_cq</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_cq\r
+               [in] Vendor's Handle to the already created CQ (in user-mode library).\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       size\r
+               [in] The size of the CQ retuned by the IOCTL.\r
+       p_umv_buf\r
+               [in out] On input, it contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1103">uvp_pre_query_cq</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1088">uvp_pre_create_cq</a>, <a href="#robo1062">uvp_post_create_cq_t</a>, <a href="#robo1106">uvp_pre_resize_cq</a>,\r
+       <a href="#robo1081">uvp_post_resize_cq_t</a>, <a href="#robo1103">uvp_pre_query_cq</a>, <a href="#robo1093">uvp_pre_destroy_cq</a>,\r
+       <a href="#robo1067">uvp_post_destroy_cq_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1078">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fquery5fmw5ft">\r
+user-mode Verbs/uvp_post_query_mw_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_query_mw_t</strong> -- Post-ioctl to Query a memory window\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_query_mw_t</strong>) (\r
+        IN              const   ib_mw_handle_t                          h_uvp_mw,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+        IN                              net32_t                                         rkey,\r
+                OUT                     ib_pd_handle_t                          *ph_pd,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_query_mw_t</strong> is implemented by vendor. It is the post-ioctl routine\r
+       for <a href="../../iba/ib_al_h.html#robo217">ib_query_mw</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_mw\r
+               [in] Vendor's  Memory window handle (in user-mode library)\r
+               whose attributes are being retrieved.\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       rkey\r
+               [in] Current R_KEY associated with this mw_handle\r
+       ph_pd\r
+               [in] Protection domain handle associated with this mw_handle\r
+       p_umv_buf\r
+               [in out] On input, it contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1104">uvp_pre_query_mw</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The query operation completed successfully.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1089">uvp_pre_create_mw</a>, <a href="#robo1063">uvp_post_create_mw_t</a>, <a href="#robo1104">uvp_pre_query_mw</a>,\r
+       <a href="#robo1052">uvp_bind_mw</a>, <a href="#robo1094">uvp_pre_destroy_mw</a>, <a href="#robo1068">uvp_post_destroy_mw_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1079">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fquery5fqp5ft">\r
+user-mode Verbs/uvp_post_query_qp_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_query_qp_t</strong> -- Post-ioctl operation for user-mode <a href="../../iba/ib_al_h.html#robo218">ib_query_qp</a>()\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_query_qp_t</strong>) (\r
+        IN                              ib_qp_handle_t                          h_uvp_qp,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo205">ib_qp_attr_t</a>                            *p_query_attr,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_query_qp_t</strong>() is implemented by vendor. It is the post-ioctl routine\r
+       for <a href="../../iba/ib_al_h.html#robo218">ib_query_qp</a>().\r
+       UAL provides the results of the query to the vendor library in this\r
+       post-ioctl routine.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_qp\r
+               [in] Vendor's handle to the QP (in user-mode library).\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       p_query_attr\r
+               [in] QP attribute as returned by the ioctl.\r
+       p_umv_buf\r
+               [in out] On input, it contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1105">uvp_pre_query_qp</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1090">uvp_pre_create_qp</a>, <a href="#robo1064">uvp_post_create_qp_t</a>, <a href="#robo1105">uvp_pre_query_qp</a>, <a href="#robo1099">uvp_pre_modify_qp</a>,\r
+       <a href="#robo1073">uvp_post_modify_qp_t</a>, <a href="#robo1095">uvp_pre_destroy_qp</a>, <a href="#robo1069">uvp_post_destroy_qp_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1080">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5frecv">\r
+user-mode Verbs/uvp_post_recv</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_recv</strong> -- Post a work request to the receive queue of a queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_post_recv</strong>) (\r
+        IN              const   void* __ptr64                           h_qp,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo225">ib_recv_wr_t</a>*   const           p_recv_wr,\r
+                OUT                     <a href="../../iba/ib_types_h.html#robo225">ib_recv_wr_t</a>**                          pp_recv_failure );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine allows to queue a work request to the receive side of a\r
+       queue pair. The work_req holds necessary data to satisfy an incoming\r
+       receive message. If an attempt is made to queue more work requests than\r
+       what is available, an error is returned.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] Type-cast as appropriate for user/kernel mode, this is\r
+               the Queue pair handle to which the receive work request is being\r
+               posted.\r
+       p_recv_wr\r
+               [in] <a href="../../complib/cl_list_h.html#robo15">List</a> of recv work requests that needs to be posted.\r
+       pp_recv_failure\r
+               [out] The work requests that failed.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Any unsuccessful status indicates the status of the first failed request.\r
+\r
+       IB_SUCCESS\r
+               The work request was successfully queued to the receive side of the QP.\r
+       IB_INVALID_QP_HANDLE\r
+               qp_handle supplied is not valid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               The qp has exceeded its receive queue depth than what is has been\r
+               configured.\r
+       IB_INVALID_WR_TYPE\r
+               Invalid work request type found in the request.\r
+       IB_INVALID_QP_STATE\r
+               QP was in reset or init state.\r
+               (TBD: there may be an errata that allows posting in init state)\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel &amp; User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1082">uvp_post_send</a>, <a href="#robo1056">uvp_poll_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1081">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fresize5fcq5ft">\r
+user-mode Verbs/uvp_post_resize_cq_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_resize_cq_t</strong> -- Post-ioctl function to resize a CQ.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef void\r
+(AL_API *<strong>uvp_post_resize_cq_t</strong>) (\r
+        IN              const   ib_cq_handle_t                          h_uvp_cq,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>                         ioctl_status,\r
+        IN              const   uint32_t                                        size,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_post_resize_cq_t</strong>() is implemented by vendor to resize the CQ.\r
+       It is the post-ioctl routine for ib_resize_cq().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_cq\r
+               [in] Vendor's Handle to the already created CQ (in user-mode library).\r
+       ioctl_status\r
+               [in] The ioctl status of the AL API.\r
+       size\r
+               [in] size of the CQ that was created by the provider.\r
+               If VPD resized the CQ in kernel, this is the value as set by\r
+               VPD. If UVP resizes the CQ in user-mode, then uvp already knows\r
+               the size of the CQ in the pre-ioctl.\r
+       p_umv_buf\r
+               [in out] On input, it contains any vendor-specific private information\r
+               exchanged with the vendor's <a href="../../iba/ib_ci_h.html#robo39">Verbs</a> Provider Driver (<a href="#robo1106">uvp_pre_resize_cq</a>).\r
+               Vendor is expected to check vendor-specific status in\r
+               umv_buf as appropriate.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       This function does not return a value.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1088">uvp_pre_create_cq</a>, <a href="#robo1062">uvp_post_create_cq_t</a>, <a href="#robo1106">uvp_pre_resize_cq</a>,\r
+       <a href="#robo1103">uvp_pre_query_cq</a>, <a href="#robo1077">uvp_post_query_cq_t</a>, <a href="#robo1093">uvp_pre_destroy_cq</a>,\r
+       <a href="#robo1067">uvp_post_destroy_cq_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1082">[Functions]<a name="user2dmode20Verbs2fuvp5fpost5fsend">\r
+user-mode Verbs/uvp_post_send</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_post_send</strong> -- Post a work request to the send side of a queue pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_post_send</strong>) (\r
+        IN              const   void*           __ptr64                 h_qp,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo249">ib_send_wr_t</a>*   const           p_send_wr,\r
+                OUT                     <a href="../../iba/ib_types_h.html#robo249">ib_send_wr_t</a>**                          pp_send_failure );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine posts a work request to the send side of the queue pair.\r
+       The different types of work request that can be posted are explained in\r
+       the ib_wr_t structure. For exact details on ordering rules please consult\r
+       the Volume 1, of the InfiniBand Specifications. If there is more\r
+       outstanding requests posted that what the queue is configured for, an\r
+       immediate error is returned.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_qp\r
+               [in] Type-cast as appropriate for user/kernel mode, this is\r
+               the Queue pair handle to which the receive work request is being\r
+               posted.\r
+       p_send_wr\r
+               [in] <a href="../../complib/cl_list_h.html#robo15">List</a> of work requests that needs to be send.\r
+       pp_send_failure\r
+               [out] The work requests that failed.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       Any unsuccessful status indicates the status of the first failed request.\r
+\r
+       IB_SUCCESS\r
+               All the work requests are completed successfully\r
+       IB_INVALID_QP_HANDLE\r
+               The qp_handle supplied is invalid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete the request.\r
+               There are no more work elements in the channel interface to\r
+               process this request, and the total outstanding work request has\r
+               been exceeded.\r
+       IB_INVALID_WR_TYPE\r
+               The work request type was not valid.\r
+       IB_INVALID_QP_STATE\r
+               The queue pair is either in Reset, Init, RTR or Error state.\r
+       IB_INVALID_MAX_SGE\r
+               The work request has too many scatter gather elements than what the\r
+               QP is configured.\r
+       IB_UNSUPPORTED\r
+               Atomics or Reliable datagram request is not supported by this HCA.\r
+       IB_INVALID_ADDR_HANDLE\r
+               Address handle supplied in the work request is invalid.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel &amp; User mode.\r
+</pre>\r
+</span><p><strong>NOTES</strong></p>\r
+<span class="NOTES"><pre>       Please refer to Table 81 and Table 82 for allowed operation types\r
+       on different types of queue pairs, and the different modifiers\r
+       acceptable for the work request for different QP service types.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1080">uvp_post_recv</a>, <a href="#robo1056">uvp_poll_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1083">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fallocate5fpd">\r
+user-mode Verbs/uvp_pre_allocate_pd</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_allocate_pd</strong> -- Pre-ioctl function to allocate PD\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_allocate_pd</strong>) (\r
+        IN                              ib_ca_handle_t                          h_uvp_ca,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_allocate_pd</strong>() is implemented by vendor. It is the pre-ioctl routine\r
+       for the AL call <a href="../../iba/ib_al_h.html#robo48">ib_alloc_pd</a>() in user-mode.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_ca\r
+               [in] Vendor's user-mode library handle to the open instance of the CA\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl call is successful.\r
+       IB_INVALID_CA_HANDLE\r
+               CA handle is invalid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources in Vendor library to complete the call\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1057">uvp_post_allocate_pd_t</a>, <a href="#robo1091">uvp_pre_deallocate_pd</a>, <a href="#robo1065">uvp_post_deallocate_pd_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1084">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fattach5fmcast">\r
+user-mode Verbs/uvp_pre_attach_mcast</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_attach_mcast</strong> -- Pre-ioctl function to Attach a queue pair\r
+                                                       to a multicast group\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_attach_mcast</strong>) (\r
+        IN              const   ib_qp_handle_t                          h_uvp_qp,\r
+        IN              const   <a href="../../iba/ib_types_h.html#robo856">ib_gid_t</a>                                        *p_mcast_gid,\r
+        IN              const   uint16_t                                        mcast_lid,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_attach_mcast</strong>() is the pre-ioctl routine implemented by vendor\r
+       to attach a queue pair to a multicast group.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_qp\r
+               [in] Vendor's Queue pair handle (in user-mode library)\r
+               which needs to be added to the multicast group on the adapter.\r
+       mcast_lid\r
+               [in] The multicast group LID value.\r
+       p_mcast_gid\r
+               [in] IPv6 address associated with this multicast group.\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The queue pair handle was successfully added to the multicast\r
+               group.\r
+       IB_INVALID_QP_HANDLE\r
+               qp_handle supplied is invalid.\r
+       IB_INVALID_SERVICE_TYPE\r
+               Queue pair handle supplied is not of unreliable datagram type.\r
+       IB_INVALID_GID\r
+               The supplied addr is not a valid multicast ipv6 address.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete the request.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1090">uvp_pre_create_qp</a>, <a href="#robo1064">uvp_post_create_qp_t</a>, <a href="#robo1058">uvp_post_attach_mcast_t</a>,\r
+       <a href="#robo1096">uvp_pre_detach_mcast</a>, <a href="#robo1070">uvp_post_detach_mcast_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1085">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fci5fcall">\r
+user-mode Verbs/uvp_pre_ci_call</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_ci_call</strong> -- Pre-ioctl function to <a href="../../iba/ib_al_h.html#robo65">ib_ci_call</a>\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_ci_call</strong>) (\r
+        IN              const   ib_ca_handle_t                          h_uvp_ca,\r
+        IN              const   void* __ptr64 *         const   handle_array    OPTIONAL,\r
+        IN                              uint32_t                                        num_handles,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo66">ib_ci_op_t</a>*                     const   p_ci_op,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf);\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_ci_call</strong>() is implemented by vendor. It is the pre-ioctl\r
+       routine for <a href="../../iba/ib_al_h.html#robo65">ib_ci_call</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_ca\r
+               [in] Vendor's user-mode library handle to the CA\r
+       handle_array\r
+               [in] An array of uvp handles.  For valid types, refer to <a href="../../iba/ib_ci_h.html#robo_top_of_doc">ib_ci.h</a> or\r
+               <a href="../../iba/ib_al_h.html#robo_top_of_doc">ib_al.h</a>.  This is an optional parameter.\r
+       num_handles\r
+               [in] The number of handles in the array.\r
+       p_ci_op\r
+               [in] The operation that is requested by the client.  For more info,\r
+               refer <a href="../../iba/ib_types_h.html#robo_top_of_doc">ib_types.h</a>\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl is successful.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources in Vendor library to complete the call\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1059">uvp_post_ci_call</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1086">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fclose5fca5ft">\r
+user-mode Verbs/uvp_pre_close_ca_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_close_ca_t</strong> -- Pre-ioctl operation for user-mode <a href="../../iba/ib_al_h.html#robo68">ib_close_ca</a>().\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_close_ca_t</strong>) (\r
+        IN                              ib_ca_handle_t                          h_uvp_ca );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_close_ca_t</strong>() is implemented by vendor. It is the pre-ioctl routine\r
+       for the AL call <a href="../../iba/ib_al_h.html#robo68">ib_close_ca</a>() in user-mode.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_ca\r
+               [in] Vendor's user-mode library handle to the open instance of the CA\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               Successfully completed the pre-ioctl.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1100">uvp_pre_open_ca_t</a>, <a href="#robo1074">uvp_post_open_ca_t</a>, <a href="#robo1102">uvp_pre_query_ca</a>, <a href="#robo1076">uvp_post_query_ca_t</a>,\r
+       <a href="#robo1098">uvp_pre_modify_ca</a>,      <a href="#robo1072">uvp_post_modify_ca_t</a>, <a href="#robo1060">uvp_post_close_ca_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1087">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fcreate5fav">\r
+user-mode Verbs/uvp_pre_create_av</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_create_av</strong> -- Pre-ioctl function to create AV\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_create_av</strong>) (\r
+        IN              const   ib_pd_handle_t                          h_uvp_pd,\r
+        IN              const   <a href="../../iba/ib_types_h.html#robo57">ib_av_attr_t</a>                            *p_addr_vector,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf);\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_create_av</strong>() is implemented by vendor. It is the pre-ioctl\r
+       routine for <a href="../../iba/ib_al_h.html#robo104">ib_create_av</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_pd\r
+               [in] Vendor's user-mode library handle to the Protection domain\r
+               to which this AV is associated.\r
+       p_addr_vector\r
+               [in] Parameters to create the address vector.\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl is successful.\r
+       IB_INVALID_SETTING\r
+               Values in the vector is not valid\r
+       IB_INVALID_PD_HANDLE\r
+               The PD handle is invalid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources in Vendor library to complete the call\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1061">uvp_post_create_av_t</a>, <a href="#robo1101">uvp_pre_query_av</a>, <a href="#robo1075">uvp_post_query_av_t</a>, <a href="#robo1097">uvp_pre_modify_av</a>,\r
+       <a href="#robo1071">uvp_post_modify_av_t</a>, <a href="#robo1092">uvp_pre_destroy_av</a>, <a href="#robo1066">uvp_post_destroy_av_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1088">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fcreate5fcq">\r
+user-mode Verbs/uvp_pre_create_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_create_cq</strong> -- Pre-ioctl function to Create a completion queue (CQ)\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_create_cq</strong>) (\r
+        IN              const   ib_ca_handle_t                          h_uvp_ca,\r
+        IN      OUT                     uint32_t*                       const   p_size,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_create_cq</strong>() is implemented by vendor. It is the pre-ioctl routine\r
+       for <a href="../../iba/ib_al_h.html#robo105">ib_create_cq</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_pd\r
+               [in] Vendor's handle to an existing protection domain (in user-mode\r
+               library)\r
+       p_size\r
+               [in out] Points to a variable containing the number of CQ entries\r
+               requested by the consumer.\r
+               On return,  points to the size of the CQ that was created\r
+               by the provider.\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The operation was successful.\r
+       IB_INVALID_PD_HANDLE\r
+               The h_uvp_pd passed is invalid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete request.\r
+       IB_INVALID_CQ_SIZE\r
+               Requested CQ Size is not supported.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1062">uvp_post_create_cq_t</a>, <a href="#robo1106">uvp_pre_resize_cq</a>, <a href="#robo1081">uvp_post_resize_cq_t</a>,\r
+       <a href="#robo1103">uvp_pre_query_cq</a>, <a href="#robo1077">uvp_post_query_cq_t</a>, <a href="#robo1093">uvp_pre_destroy_cq</a>,\r
+       <a href="#robo1067">uvp_post_destroy_cq_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1089">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fcreate5fmw">\r
+user-mode Verbs/uvp_pre_create_mw</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_create_mw</strong> -- Pre-ioctl function to create a memory window\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_create_mw</strong>) (\r
+        IN              const   ib_pd_handle_t                          h_uvp_pd,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_create_mw</strong>() is implemented by vendor. It is the pre-ioctl routine\r
+       for <a href="../../iba/ib_al_h.html#robo108">ib_create_mw</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_pd\r
+               [in] Vendor's Protection domain handle (in user-mode library)\r
+               to use for this memory window\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The memory window allocation completed successfully.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Not enough resources to complete the request.\r
+       IB_INVALID_PD_HANDLE\r
+               pd_handle supplied is invalid.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1063">uvp_post_create_mw_t</a>, <a href="#robo1104">uvp_pre_query_mw</a>, <a href="#robo1078">uvp_post_query_mw_t</a>,\r
+       <a href="#robo1052">uvp_bind_mw</a>, <a href="#robo1094">uvp_pre_destroy_mw</a>, <a href="#robo1068">uvp_post_destroy_mw_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1090">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fcreate5fqp">\r
+user-mode Verbs/uvp_pre_create_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_create_qp</strong> -- Pre-ioctl function to Create a Queue Pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_create_qp</strong>) (\r
+        IN              const   ib_pd_handle_t                          h_uvp_pd,\r
+        IN              const   <a href="../../iba/ib_types_h.html#robo206">ib_qp_create_t</a>                          *p_create_attr,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_create_qp</strong>() is implemented by vendor. It is the pre-ioctl routine\r
+       for <a href="../../iba/ib_al_h.html#robo109">ib_create_qp</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_pd\r
+               [in] Vendor's Protection domain handle in user-mode library.\r
+       p_create_attr\r
+               [in] Initial attributes with which the qp must be created.\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl call is successful.\r
+       IB_INVALID_PD_HANDLE\r
+               The PD handle is invalid.\r
+       IB_INVALID_CQ_HANDLE\r
+               The send or receive completion queue to associate with the queue pair\r
+               is invalid.\r
+       IB_UNSUPPORTED\r
+               The specified queue pair type was not supported by the channel adapter.\r
+       IB_INVALID_MAX_WRS\r
+               The requested maximum send or receive work request depth could not be\r
+               supported.\r
+       IB_INVALID_MAX_SGE\r
+               The requested maximum number of scatter-gather entries for the send or\r
+               receive queue could not be supported.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources in Vendor library to complete the call.\r
+       IB_INVALID_PARAMETER\r
+               At least one parameter is invalid.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1064">uvp_post_create_qp_t</a>, <a href="#robo1105">uvp_pre_query_qp</a>, <a href="#robo1079">uvp_post_query_qp_t</a>, <a href="#robo1099">uvp_pre_modify_qp</a>,\r
+       <a href="#robo1073">uvp_post_modify_qp_t</a>, <a href="#robo1095">uvp_pre_destroy_qp</a>, <a href="#robo1069">uvp_post_destroy_qp_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1091">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fdeallocate5fpd">\r
+user-mode Verbs/uvp_pre_deallocate_pd</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_deallocate_pd</strong> -- Pre-ioctl function to deallocate PD\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_deallocate_pd</strong>) (\r
+        IN              const   ib_pd_handle_t                          h_uvp_pd );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_deallocate_pd</strong>() is implemented by vendor. It is the pre-ioctl\r
+       routine for the AL call ib_deallocate_pd().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_pd\r
+               [in] Vendor's user-mode library PD handle.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl call is successful.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1083">uvp_pre_allocate_pd</a>, <a href="#robo1057">uvp_post_allocate_pd_t</a>, <a href="#robo1065">uvp_post_deallocate_pd_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1092">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fdestroy5fav">\r
+user-mode Verbs/uvp_pre_destroy_av</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_destroy_av</strong> -- Pre-ioctl function to destroy AV\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_destroy_av</strong>) (\r
+        IN              const   ib_av_handle_t                          h_uvp_av );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_destroy_av</strong>() is implemented by vendor to destroy the AV.\r
+       It is the pre-ioctl routine for <a href="../../iba/ib_al_h.html#robo115">ib_destroy_av</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_av\r
+               [in] Vendor's AV handle in user-mode library.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl is successful.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1087">uvp_pre_create_av</a>, <a href="#robo1061">uvp_post_create_av_t</a>, <a href="#robo1101">uvp_pre_query_av</a>, <a href="#robo1075">uvp_post_query_av_t</a>,\r
+       <a href="#robo1097">uvp_pre_modify_av</a>, <a href="#robo1071">uvp_post_modify_av_t</a>, <a href="#robo1066">uvp_post_destroy_av_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1093">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fdestroy5fcq">\r
+user-mode Verbs/uvp_pre_destroy_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_destroy_cq</strong> -- Pre-ioctl function to Destroy a CQ.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_destroy_cq</strong>) (\r
+        IN              const   ib_cq_handle_t                          h_uvp_cq );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_destroy_cq</strong>() is implemented by vendor to destroy CQ.\r
+       It is the pre-ioctl routine for <a href="../../iba/ib_al_h.html#robo116">ib_destroy_cq</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_cq\r
+               [in] Vendor's Handle to the cq (in user-mode library)\r
+               that needs to be destroyed.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl call is successful.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1088">uvp_pre_create_cq</a>, <a href="#robo1062">uvp_post_create_cq_t</a>, <a href="#robo1106">uvp_pre_resize_cq</a>,\r
+       <a href="#robo1081">uvp_post_resize_cq_t</a>, <a href="#robo1103">uvp_pre_query_cq</a>, <a href="#robo1077">uvp_post_query_cq_t</a>,\r
+       <a href="#robo1067">uvp_post_destroy_cq_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1094">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fdestroy5fmw">\r
+user-mode Verbs/uvp_pre_destroy_mw</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_destroy_mw</strong> -- Pre-ioctl function to destroy a memory window\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_destroy_mw</strong>) (\r
+        IN              const   ib_mw_handle_t                          h_uvp_mw );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_destroy_mw</strong>() is implemented by vendor. It is the pre-ioctl routine\r
+       for <a href="../../iba/ib_al_h.html#robo119">ib_destroy_mw</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_mw\r
+               [in] Vendor's handle (in user-mode library) to the memory window\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               Pre-ioctl succeeded.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1089">uvp_pre_create_mw</a>, <a href="#robo1063">uvp_post_create_mw_t</a>, <a href="#robo1104">uvp_pre_query_mw</a>,\r
+       <a href="#robo1078">uvp_post_query_mw_t</a>, <a href="#robo1052">uvp_bind_mw</a>, <a href="#robo1068">uvp_post_destroy_mw_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1095">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fdestroy5fqp">\r
+user-mode Verbs/uvp_pre_destroy_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_destroy_qp</strong> -- Pre-ioctl function to Destroy a Queue Pair.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_destroy_qp</strong>) (\r
+        IN              const   ib_qp_handle_t                          h_uvp_qp );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_destroy_qp</strong>() is the pre-ioctl routine implemented by vendor\r
+       to destroy QP.\r
+       UAL invokes this pre-ioctl routine to destroy QP.\r
+       The vendor is expected to perform any preliminary steps in preparation\r
+       for destroying the QP and perform any book-keeping.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_qp\r
+               [in] Vendor's Handle to the qp (in user-mode library)\r
+               that needs to be destroyed.\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl call is successful.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1090">uvp_pre_create_qp</a>, <a href="#robo1064">uvp_post_create_qp_t</a>, <a href="#robo1105">uvp_pre_query_qp</a>, <a href="#robo1079">uvp_post_query_qp_t</a>,\r
+       <a href="#robo1099">uvp_pre_modify_qp</a>, <a href="#robo1073">uvp_post_modify_qp_t</a>, <a href="#robo1069">uvp_post_destroy_qp_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1096">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fdetach5fmcast">\r
+user-mode Verbs/uvp_pre_detach_mcast</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_detach_mcast</strong> -- Pre-ioctl function to detach a queue pair\r
+                                                       to a multicast group\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_detach_mcast</strong>) (\r
+        IN                              ib_mcast_handle_t                       h_uvp_mcast );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <a href="#robo1084">uvp_pre_attach_mcast</a>() is the pre-ioctl routine implemented by vendor\r
+       to attach a queue pair to a multicast group.\r
+       Upon return from the pre-ioctl function, UAL packages up the UMV buffer\r
+       in an IOCTL and passes it on to the user-mode proxy. UAL passes the\r
+       info to the user-mode proxy stating that it no longer wishes to receive\r
+       callback for mcast join for the caller.  Note that UAL takes care of\r
+       handling callbcak.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_mcast\r
+               [in] Vendor's Multicast handle (in user-mode library)\r
+               holding the association of this queue pair to the multicast group.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The queue pair handle was successfully added to the multicast\r
+               group.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel &amp; User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1090">uvp_pre_create_qp</a>, <a href="#robo1064">uvp_post_create_qp_t</a>, <a href="#robo1084">uvp_pre_attach_mcast</a>,\r
+       <a href="#robo1058">uvp_post_attach_mcast_t</a>, <a href="#robo1070">uvp_post_detach_mcast_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1097">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fmodify5fav">\r
+user-mode Verbs/uvp_pre_modify_av</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_modify_av</strong> -- Pre-ioctl function to modify AV\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_modify_av</strong>) (\r
+        IN              const   ib_av_handle_t                          h_uvp_av,\r
+        IN              const   <a href="../../iba/ib_types_h.html#robo57">ib_av_attr_t</a>                            *p_addr_vector,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_modify_av</strong>() is implemented by vendor. It is the pre-ioctl routine\r
+       for <a href="../../iba/ib_al_h.html#robo155">ib_modify_av</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_av\r
+               [in] Vendor's AV handle in user-mode library.\r
+       p_addr_vector\r
+               [in] Parameters to modify the address vector handle\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl is successful.\r
+       IB_INVALID_SETTING\r
+               Values in the vector is not valid.\r
+       IB_INVALID_AV_HANDLE\r
+               The AV handle is invalid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources in Vendor library to complete the call.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1087">uvp_pre_create_av</a>, <a href="#robo1061">uvp_post_create_av_t</a>, <a href="#robo1101">uvp_pre_query_av</a>, <a href="#robo1075">uvp_post_query_av_t</a>,\r
+       <a href="#robo1071">uvp_post_modify_av_t</a>, <a href="#robo1092">uvp_pre_destroy_av</a>, <a href="#robo1066">uvp_post_destroy_av_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1098">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fmodify5fca">\r
+user-mode Verbs/uvp_pre_modify_ca</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_modify_ca</strong> -- Pre-ioctl operation for user-mode <a href="../../iba/ib_al_h.html#robo156">ib_modify_ca</a>()\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_modify_ca</strong>) (\r
+        IN                              ib_ca_handle_t                          h_uvp_ca,\r
+        IN                              uint8_t                                         port_num,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo61">ib_ca_mod_t</a>                                     ca_mod,\r
+        IN              const   <a href="../../iba/ib_types_h.html#robo199">ib_port_attr_mod_t</a>* const       p_port_attr_mod );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_modify_ca</strong>() is implemented by vendor. It is the pre-ioctl routine\r
+       for the AL call <a href="../../iba/ib_al_h.html#robo156">ib_modify_ca</a>() in user-mode.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_ca\r
+               [in] Vendor's user-mode library handle to the open instance of the CA\r
+       port_num\r
+               [in] An index to the port that is being modified.  The port_num matches\r
+               the index of the port as returned through the <a href="../../iba/ib_al_h.html#robo213">ib_query_ca</a> call.\r
+       ca_mod\r
+               [in] A mask of the attributes and counters to modify.\r
+       p_port_attr_mod\r
+               [in] A list of the specific port attribute information to modify.  For\r
+               the access layer to modify an attribute, its corresponding bit must be\r
+               set in the ca_mod parameter.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl function succeeded.\r
+       IB_INVALID_CA_HANDLE\r
+               CA handle is invalid.\r
+       IB_INVALID_PARAMETER\r
+               One or more parameters is invalid.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1100">uvp_pre_open_ca_t</a>, <a href="#robo1074">uvp_post_open_ca_t</a>, <a href="#robo1102">uvp_pre_query_ca</a>, <a href="#robo1076">uvp_post_query_ca_t</a>,\r
+       <a href="#robo1072">uvp_post_modify_ca_t</a>,   <a href="#robo1086">uvp_pre_close_ca_t</a>, <a href="#robo1060">uvp_post_close_ca_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1099">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fmodify5fqp">\r
+user-mode Verbs/uvp_pre_modify_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_modify_qp</strong> -- Pre-ioctl function to Modify attributes of the\r
+                                                specified QP.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>*/\r
+\r
+typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_modify_qp</strong>) (\r
+        IN              const   ib_qp_handle_t                          h_uvp_qp,\r
+        IN              const   <a href="../../iba/ib_types_h.html#robo207">ib_qp_mod_t</a>                                     *p_modify_attr,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_modify_qp</strong>() is implemented by vendor to modify the attributes of a\r
+       QP. It is the pre-ioctl routine for <a href="../../iba/ib_al_h.html#robo158">ib_modify_qp</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_qp\r
+               [in] Vendor's qp Handle to the queue pair (in user-mode library)\r
+               whose state is to be modified.\r
+       p_modify_attr\r
+               [in] Specifies what attributes need to be modified in the qp.\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl call is successful.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete the requested operation.\r
+       IB_INVALID_QP_HANDLE\r
+               Invalid QP handle.\r
+       IB_UNSUPPORTED\r
+               Requested operation is not supported, for e.g. Atomic operations.\r
+       IB_QP_INVALID_STATE\r
+               Invalid state transition request. Current QP state not in allowable\r
+               state.\r
+       IB_INVALID_PKEY\r
+               Pkey specified in modify request not valid entry in P_KEY table. Or\r
+               index is out of range.\r
+       IB_INVALID_PMIG_STATE\r
+               Invalid path migration state specified in the request.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1090">uvp_pre_create_qp</a>, <a href="#robo1064">uvp_post_create_qp_t</a>, <a href="#robo1105">uvp_pre_query_qp</a>, <a href="#robo1079">uvp_post_query_qp_t</a>,\r
+       <a href="#robo1073">uvp_post_modify_qp_t</a>, <a href="#robo1095">uvp_pre_destroy_qp</a>, <a href="#robo1069">uvp_post_destroy_qp_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1100">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fopen5fca5ft">\r
+user-mode Verbs/uvp_pre_open_ca_t</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_open_ca_t</strong> -- Pre-ioctl operation for user-mode <a href="../../iba/ib_al_h.html#robo164">ib_open_ca</a>()\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_open_ca_t</strong>) (\r
+        IN              const   <a href="../../iba/ib_types_h.html#robo895">ib_net64_t</a>                                      ca_guid,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_open_ca_t</strong>() is implemented by vendor. It is the pre-ioctl routine\r
+       for the AL call <a href="../../iba/ib_al_h.html#robo164">ib_open_ca</a>() in user-mode.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       ca_guid\r
+               [in] The HCA adapter's EUI64 identifier. Clients would use other\r
+               enumeration API's to locate all available adapters and their\r
+               guids in a system, e.g. GetCaGuids(), maintained by the IB\r
+               Access Layer.\r
+\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains any vendor-specific\r
+               record to be exchanged with the vendor's HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl function succeeded.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to satisfy request.\r
+       IB_INVALID_PARAMETER\r
+               Invalid GUID.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1074">uvp_post_open_ca_t</a>, <a href="#robo1102">uvp_pre_query_ca</a>, <a href="#robo1076">uvp_post_query_ca_t</a>, <a href="#robo1098">uvp_pre_modify_ca</a>,\r
+       <a href="#robo1072">uvp_post_modify_ca_t</a>,   <a href="#robo1086">uvp_pre_close_ca_t</a>, <a href="#robo1060">uvp_post_close_ca_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1101">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fquery5fav">\r
+user-mode Verbs/uvp_pre_query_av</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_query_av</strong> -- Pre-ioctl operation for <a href="../../iba/ib_al_h.html#robo213">ib_query_ca</a>()\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_query_av</strong>) (\r
+        IN              const   ib_av_handle_t                          h_uvp_av,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_query_av</strong>() is implemented by vendor. It is the pre-ioctl routine\r
+       for the AL call <a href="../../iba/ib_al_h.html#robo212">ib_query_av</a>() in user-mode.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_av\r
+               [in] Vendor's handle to the address vector in user-mode library\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl function succeeded.\r
+       IB_INVALID_AV_HANDLE\r
+               AV handle was invalid\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources in Vendor library to complete the call.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1087">uvp_pre_create_av</a>, <a href="#robo1061">uvp_post_create_av_t</a>, <a href="#robo1075">uvp_post_query_av_t</a>, <a href="#robo1097">uvp_pre_modify_av</a>,\r
+       <a href="#robo1071">uvp_post_modify_av_t</a>, <a href="#robo1092">uvp_pre_destroy_av</a>, <a href="#robo1066">uvp_post_destroy_av_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1102">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fquery5fca">\r
+user-mode Verbs/uvp_pre_query_ca</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_query_ca</strong> -- Pre-ioctl operation for user-mode <a href="../../iba/ib_al_h.html#robo213">ib_query_ca</a>()\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_query_ca</strong>) (\r
+        IN                              ib_ca_handle_t                          h_uvp_ca,\r
+        IN                              <a href="../../iba/ib_types_h.html#robo60">ib_ca_attr_t</a>                            *p_ca_attr,\r
+        IN                              size_t                                          byte_count,\r
+        IN                              <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_query_ca</strong>() is implemented by vendor. It is the pre-ioctl routine\r
+       for the AL call <a href="../../iba/ib_al_h.html#robo213">ib_query_ca</a>() in user-mode.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_ca\r
+               [in] Vendor's user-mode library handle to the open instance of the CA\r
+       p_ca_attr\r
+               [in] Pointer to the user's CA attribute buffer.\r
+       byte_count\r
+               [in] User-supplied size of the CA attribute buffer.\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains any vendor-specific\r
+               record to be exchanged with the vendor's HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl function succeeded.\r
+       IB_INVALID_CA_HANDLE\r
+               CA handle is invalid\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to satisfy request.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1100">uvp_pre_open_ca_t</a>, <a href="#robo1074">uvp_post_open_ca_t</a>, <a href="#robo1076">uvp_post_query_ca_t</a>, <a href="#robo1098">uvp_pre_modify_ca</a>,\r
+       <a href="#robo1072">uvp_post_modify_ca_t</a>,   <a href="#robo1086">uvp_pre_close_ca_t</a>, <a href="#robo1060">uvp_post_close_ca_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1103">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fquery5fcq">\r
+user-mode Verbs/uvp_pre_query_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_query_cq</strong> -- Pre-ioctl to Query the number of entries\r
+                                               configured for the CQ.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_query_cq</strong>) (\r
+        IN              const   ib_cq_handle_t                          h_uvp_cq,\r
+        IN      OUT                     uint32_t* const                         p_size,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_query_cq</strong>() is implemented by vendor. It is the pre-ioctl routine\r
+       for <a href="../../iba/ib_al_h.html#robo215">ib_query_cq</a>().\r
+       Can we always go to the kernel to query even if it is created\r
+       in vendor library in user-mode?\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_cq\r
+               [in] Vendor's Handle to the already created CQ (in user-mode library).\r
+\r
+       p_size\r
+               [out] Size of the CQ if processing ends in user-mode.\r
+\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The operation was successful.\r
+       IB_INVALID_CQ_HANDLE\r
+               The CQ handle is invalid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources in Vendor library to complete the call.\r
+       IB_VERBS_PROCESSING_DONE\r
+               The UVP fully processed the request.  The post_query_cq handler\r
+               will not be invoked.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1088">uvp_pre_create_cq</a>, <a href="#robo1062">uvp_post_create_cq_t</a>, <a href="#robo1106">uvp_pre_resize_cq</a>,\r
+       <a href="#robo1081">uvp_post_resize_cq_t</a>, <a href="#robo1077">uvp_post_query_cq_t</a>, <a href="#robo1093">uvp_pre_destroy_cq</a>,\r
+       <a href="#robo1067">uvp_post_destroy_cq_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1104">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fquery5fmw">\r
+user-mode Verbs/uvp_pre_query_mw</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_query_mw</strong> -- Pre-ioctl to Query a memory window\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_query_mw</strong>) (\r
+        IN              const   ib_mw_handle_t                          h_uvp_mw,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_query_mw</strong> is implemented by vendor. It is the pre-ioctl routine\r
+       for <a href="../../iba/ib_al_h.html#robo217">ib_query_mw</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_mw\r
+               [in] Vendor's  Memory window handle (in user-mode library)\r
+               whose attributes are being retrieved.\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl call completed successfully.\r
+       IB_INVALID_MW_HANDLE\r
+               mw_handle supplied is an invalid handle.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Not enough resources to complete the request.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1089">uvp_pre_create_mw</a>, <a href="#robo1063">uvp_post_create_mw_t</a>, <a href="#robo1078">uvp_post_query_mw_t</a>,\r
+       <a href="#robo1052">uvp_bind_mw</a>, <a href="#robo1094">uvp_pre_destroy_mw</a>, <a href="#robo1068">uvp_post_destroy_mw_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1105">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fquery5fqp">\r
+user-mode Verbs/uvp_pre_query_qp</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_query_qp</strong> -- Pre-ioctl function to Query the attributes of the QP\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_query_qp</strong>) (\r
+        IN                              ib_qp_handle_t                          h_uvp_qp,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_query_qp</strong>() is implemented by vendor. It is the pre-ioctl routine\r
+       for the AL call <a href="../../iba/ib_al_h.html#robo218">ib_query_qp</a>().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_qp\r
+               [in] Vendor's handle to the QP (in user-mode library).\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The pre-ioctl function succeeded.\r
+       IB_INVALID_QP_HANDLE\r
+               QP handle is invalid\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources in Vendor library to complete the call.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User Mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1090">uvp_pre_create_qp</a>, <a href="#robo1064">uvp_post_create_qp_t</a>, <a href="#robo1079">uvp_post_query_qp_t</a>, <a href="#robo1099">uvp_pre_modify_qp</a>,\r
+       <a href="#robo1073">uvp_post_modify_qp_t</a>, <a href="#robo1095">uvp_pre_destroy_qp</a>, <a href="#robo1069">uvp_post_destroy_qp_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1106">[Functions]<a name="user2dmode20Verbs2fuvp5fpre5fresize5fcq">\r
+user-mode Verbs/uvp_pre_resize_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_pre_resize_cq</strong> -- Pre-ioctl function to resize a CQ.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_pre_resize_cq</strong>) (\r
+        IN              const   ib_cq_handle_t                          h_uvp_cq,\r
+        IN      OUT                     uint32_t*                       const   p_size,\r
+        IN      OUT                     <a href="../../iba/ib_ci_h.html#robo1153">ci_umv_buf_t</a>                            *p_umv_buf );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       <strong>uvp_pre_resize_cq</strong>() is implemented by vendor to resize the CQ.\r
+       It is the pre-ioctl routine for ib_resize_cq().\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_uvp_cq\r
+               [in] Vendor's Handle to the already created CQ (in user-mode library).\r
+       p_size\r
+               [in out] On input, points to a variable containing the number\r
+               of CQ entries requested by the consumer.\r
+               On completion points to the size of the CQ that was resized by\r
+               the provider.\r
+       p_umv_buf\r
+               [in out] On input, UAL provides this buffer template.\r
+               On return from this function, p_umv_buf contains\r
+               any vendor-specific record to be exchanged with the vendor's\r
+               HCA driver.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The operation was successful.\r
+       IB_INVALID_CQ_HANDLE\r
+               The CQ handle is invalid.\r
+       IB_INSUFFICIENT_RESOURCES\r
+               Insufficient resources to complete request.\r
+       IB_INVALID_CQ_SIZE\r
+               Requested CQ Size is not supported.\r
+       IB_OVERFLOW\r
+               The CQ has more entries than the resize request. The CQ is not\r
+               modified, and old entries still exist.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       User mode.\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1088">uvp_pre_create_cq</a>, <a href="#robo1062">uvp_post_create_cq_t</a>, <a href="#robo1081">uvp_post_resize_cq_t</a>,\r
+       <a href="#robo1103">uvp_pre_query_cq</a>, <a href="#robo1077">uvp_post_query_cq_t</a>, <a href="#robo1093">uvp_pre_destroy_cq</a>,\r
+       <a href="#robo1067">uvp_post_destroy_cq_t</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1107">[Functions]<a name="user2dmode20Verbs2fuvp5frearm5fcq">\r
+user-mode Verbs/uvp_rearm_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_rearm_cq</strong> -- Invoke the Completion handler, on next entry added.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_rearm_cq</strong>) (\r
+        IN              const   void*           __ptr64                 h_cq,\r
+        IN              const   boolean_t                                       solicited );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine instructs the channel interface to invoke the completion\r
+       handler when the next completion queue entry is added to this CQ.\r
+       Please refer to Volume 1, of the InfiniBand specification for a complete\r
+       description.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Type-cast as appropriate for user/kernel mode, this is the\r
+               CQ handle for the completion queue being armed.\r
+       solicited\r
+               [in] A boolean flag indicating whether the request is to generate a\r
+               notification on the next entry or on the next solicited entry\r
+               being added to the completion queue.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The notification request was registered successfully.\r
+       IB_INVALID_CQ_HANDLE\r
+               cq_handle supplied is not a valid handle.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel and User mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1088">uvp_pre_create_cq</a>, <a href="#robo1062">uvp_post_create_cq_t</a>, <a href="#robo1055">uvp_peek_cq</a>, <a href="#robo1056">uvp_poll_cq</a>,\r
+       <a href="#robo1108">uvp_rearm_n_cq</a>\r
+</pre>\r
+</span>\r
+<hr />\r
+\r
+<h2><a name="robo1108">[Functions]<a name="user2dmode20Verbs2fuvp5frearm5fn5fcq">\r
+user-mode Verbs/uvp_rearm_n_cq</a></h2>\r
+\r
+<p>[<a href="#robo_top_of_doc">top</a>][<a href="../../robo_functions.html#top">index</a>]</p>\r
+<p><strong>NAME</strong></p>\r
+<span class="NAME"><pre>       <strong>uvp_rearm_n_cq</strong> -- Invoke the Completion handler, when next\r
+       N completions have been added to this CQ.\r
+</pre>\r
+</span><p><strong>SYNOPSIS</strong></p>\r
+<span class="SYNOPSIS"><pre>typedef <a href="../../iba/ib_types_h.html#robo49">ib_api_status_t</a>\r
+(AL_API *<strong>uvp_rearm_n_cq</strong>) (\r
+        IN              const   void*           __ptr64                 h_cq,\r
+        IN              const   uint32_t                                        n_cqes );\r
+</pre>\r
+</span><p><strong>DESCRIPTION</strong></p>\r
+<span class="DESCRIPTION"><pre>       This routine instructs the channel interface to invoke the completion\r
+       handler when the next N completions are added to this CQ.\r
+</pre>\r
+</span><p><strong>PARAMETERS</strong></p>\r
+<span class="PARAMETERS"><pre>       h_cq\r
+               [in] Type-cast as appropriate for user/kernel mode, this is the\r
+               CQ handle for the completion queue being armed.\r
+       n_cqes\r
+               [in] The number of completion queue entries to be added to the\r
+               completion queue before notifying the client.  This value must\r
+               greater than or equal to one and less than or equal to the size\r
+               of the completion queue.\r
+</pre>\r
+</span><p><strong>RETURN VALUE</strong></p>\r
+<span class="RETURN_VALUE"><pre>       IB_SUCCESS\r
+               The notification request was registered successfully.\r
+       IB_INVALID_CQ_HANDLE\r
+               cq_handle supplied is not a valid handle.\r
+       IB_INVALID_PARAMETER\r
+               The requested number of completion queue entries was invalid.\r
+</pre>\r
+</span><p><strong>PORTABILITY</strong></p>\r
+<span class="PORTABILITY"><pre>       Kernel and User mode\r
+</pre>\r
+</span><p><strong>SEE ALSO</strong></p>\r
+<span class="SEE_ALSO"><pre>       <a href="#robo1088">uvp_pre_create_cq</a>, <a href="#robo1062">uvp_post_create_cq_t</a>, <a href="#robo1055">uvp_peek_cq</a>, <a href="#robo1056">uvp_poll_cq</a>,\r
+       <a href="#robo1107">uvp_rearm_cq</a>\r
+</pre>\r
+</span>\r
+</body>\r
+</html>\r