EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: [Merge] lp:~johill-lanl/epics-base/ca-ref-man-maint into lp:epics-base
From: Jeff Hill <[email protected]>
To: [email protected], Ralph Lange <[email protected]>
Date: Wed, 16 Mar 2011 16:23:27 -0000
Jeff Hill has proposed merging lp:~johill-lanl/epics-base/ca-ref-man-maint into lp:epics-base.

Requested reviews:
  Ralph Lange (ralph-lange)

For more details, see:
https://code.launchpad.net/~johill-lanl/epics-base/ca-ref-man-maint/+merge/53647

This syncs the changes in the ca reference manual on the cvs main trunk with the main trunk at launchpad
-- 
https://code.launchpad.net/~johill-lanl/epics-base/ca-ref-man-maint/+merge/53647
Your team EPICS Core Developers is subscribed to branch lp:epics-base.
=== modified file 'src/ca/CAref.html'
--- src/ca/CAref.html	2010-11-24 18:31:47 +0000
+++ src/ca/CAref.html	2011-03-16 16:23:25 +0000
@@ -246,7 +246,7 @@
 
 <h3>Why Reconfigure Channel Access</h3>
 
-<p>Typically reasons to reconfigure EPICS Channel Access:</p>
+<p>Typicall reasons to reconfigure EPICS Channel Access:</p>
 <ul>
   <li>Two independent control systems must share a network without fear of
     interaction</li>
@@ -363,9 +363,8 @@
 servers that host the channels identified. Likewise CA clients efficiently
 discover that CA servers have recently joined the LAN or disconnected from the
 LAN by monitoring periodically broadcasted beacons sent out by the servers.
-Since hardware broadcasting requires special hardware capabilities, we are
-required to provide additional configuration information when EPICS is extended
-to operate over a wide area network (WAN).</p>
+However, additional configuration is required when EPICS is extended to 
+operate over a wide area network (WAN).</p>
 
 <h3><a name="Network">IP Network Administration Background Information</a></h3>
 
@@ -2017,8 +2016,8 @@
 <p>If the subscription update producer in the server produces subscription
 updates faster than the subscription update consumer in the client consumes
 them, then events have to be discarded if the buffering in the server
-isn't allowed to grow to an infinite size. This is a law of nature
-- based on queuing theory of course.</p>
+isn&rsquo;t allowed to grow to an infinite size. This is a law of nature
+&ndash; based on queuing theory of course.</p>
 
 <p>What is done depends on the version of the CA server. All server versions
 place quotas on the maximum number of subscription updates allowed on the
@@ -2040,10 +2039,10 @@
 getting time warped, but also guarantees that intervening events are discarded
 until the slow client catches up.</p>
 
-<p>There is currently no message on the IOC's console when a
-particular client is slow on the uptake. A message of this type used to exist
-many years ago, but it was a source of confusion (and what we will call
-message noise) so it was removed. </p>
+<p>There is currently no message on the IOC&rsquo;s console when a particular
+client is slow on the uptake. A message of this type used to exist many years
+ago, but it was a source of confusion (and what we will call message noise) so
+it was removed. </p>
 
 <p>There is unfortunately no field in the protocol allowing the server to
 indicate that an intervening subscription update was discarded. We should
@@ -2081,7 +2080,7 @@
 returned value is zero as is the UNIX convention. Below are several methods to
 test CA function returns. See <a href="#ca_signal">ca_signal() and SEVCHK</a>
 for more information on this topic.</p>
-<pre>status = ca_XXXX(); 
+<pre><code>status = ca_XXXX(); 
 SEVCHK( status, "ca_XXXX() returned failure status"); 
 
 if ( status &amp; CA_M_SUCCESS ) { 
@@ -2091,7 +2090,7 @@
 if ( status != ECA_NORMAL ) { 
         printf("The requested ca_XXXX() operation didn't complete successfully because \"%s\"\n",
                 ca_message ( status ) ); 
-}</pre>
+}</code></pre>
 
 <h3><a name="Channel">Channel Access Data Types</a></h3>
 
@@ -2251,7 +2250,7 @@
 href="#dbr_size_n">dbr_size_n</a> function can be used to determine the correct
 number of bytes to reserve when there are more than one value field elements in
 a structured CA data type.</p>
-<pre>#include &lt;stdio.h&gt;
+<pre><code>#include &lt;stdio.h&gt;
 #include &lt;stdlib.h&gt;
 
 #include "cadef.h"
@@ -2314,7 +2313,7 @@
     free ( pTD );
 
     return 0;
-}</pre>
+}</code></pre>
 
 <h3><a name="User">User Supplied Callback Functions</a></h3>
 
@@ -2324,16 +2323,16 @@
 asynchronous completion via this mechanism. The <code>event_handler_args
 </code>structure is passed <em>by value</em> to the application supplied
 callback. In this structure the <code>dbr</code> field is a void pointer to any
-data that might be returned. The <code>status</code> field will be
-set to one of the CA error codes in caerr.h and will indicate the status of the
-operation performed in the IOC. If the status field isn't set to ECA_NORMAL or
-data isn't normally returned from the operation (i.e. put call back) then you
-should expect that the <code>dbr</code> field will be set to a nill pointer
-(zero). The fields <code>usr</code>, <code>chid</code>, and <code>type</code>
-are set to the values specified when the request was made by the application.
-The "dbr" pointer, and any data that it points to, are valid only when
-executing within the user's callback function.</p>
-<pre>typedef struct event_handler_args {
+data that might be returned. The <code>status</code> field will be set to one
+of the CA error codes in caerr.h and will indicate the status of the operation
+performed in the IOC. If the status field isn't set to ECA_NORMAL or data isn't
+normally returned from the operation (i.e. put call back) then you should
+expect that the <code>dbr</code>field will be set to a nill pointer (zero).
+The fields <code>usr</code>, <code>chid</code>, and <code>type</code> are set
+to the values specified when the request was made by the application. The "dbr"
+pointer, and any data that it points to, are valid only when executing within
+the user's callback function.</p>
+<pre><code>typedef struct event_handler_args {
     void            *usr;   /* user argument supplied with request */
     chanId          chid;   /* channel id */
     long            type;   /* the type of the item returned */ 
@@ -2350,7 +2349,7 @@
          const struct dbr_time_double * pTD =
               ( const struct dbr_time_double * ) args.dbr;
     }
-}</pre>
+}</code></pre>
 
 <h3><a name="Channel1">Channel Access Exceptions</a></h3>
 
@@ -2471,12 +2470,13 @@
 thread that created the context which needs to be joined. A context which is to
 be joined must be preemptive - it must be created using <a
 href="#ca_context_create">ca_context_create(ca_enable_preemptive_callback)</a>.
-It is not possible to attach a thread to a non-preemptive CA context created
-explicitly <em>or implicitly</em> with
+It is not possible to attach a thread to a non-preemptive CA context created 
+explicitly <em>or implicitly</em> with 
 ca_create_context(ca_disable_preemptive_callback). Once a thread has joined
-with a CA context it need only make ordinary ca_xxxx() library calls to use the
-context.</p>
-
+ with a CA context it need only make ordinary ca_xxxx()library calls to use the 
+context. There is no need to specify the context identifier when invoking 
+the CA calls because the context identifier is stored
+in a thread private variable by ca_attach_context().</p>
 
 <p>A CA client library context can be shut down and cleaned up, after
 destroying any channels or application specific threads that are attached to
@@ -2530,9 +2530,9 @@
 <ul>
   <li>The vxWorks shell thread runs at the very highest priority in the system
     and therefore socket calls are made at a priority that is above the
-    priority of tNetTask - a practice that has caused the WRS IP kernel
+    priority of tNetTask &minus; a practice that has caused the WRS IP kernel
     to get sick in the past. That symptom was observed some time ago, but we
-    don't know if WRS has fixed the problem.</li>
+    don&rsquo;t know if WRS has fixed the problem.</li>
 </ul>
 <ul>
   <li>The vxWorks shell thread runs at the very highest priority in the system
@@ -2547,7 +2547,7 @@
 <ul>
   <li>In EPICS R3.13 the CA client library installed vxWorks task exit handlers
     behaved strangely if CA functions were called from the vxWorks shell,
-    ca_task_exit() wasn't called, and the vxWorks shell restarted. In
+    ca_task_exit() wasn&rsquo;t called, and the vxWorks shell restarted. In
     EPICS R3.14 vxWorks task exit handlers are not installed and therefore
     cleanup is solely the responsibility of the user. With EPICS R3.14 the user
     must call ca_context_destroy or ca_task_exit to clean up on vxWorks. This
@@ -2565,10 +2565,10 @@
 <h2><a name="Function Call Reference"></a>Function Call Reference</h2>
 
 <h3><code><a name="ca_context_create">ca_context_create()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-enum ca_preemptive_callback_select
-    { ca_disable_preemptive_callback, ca_enable_preemptive_callback };
-int ca_context_create ( enum ca_preemptive_callback_select SELECT );</pre>
+<pre><code>#include &lt;cadef.h&gt;
+enum ca_preemptive_callback_select  
+    { ca_disable_preemptive_callback, ca_enable_preemptive_callback }; 
+int ca_context_create ( enum ca_preemptive_callback_select SELECT );</code></pre>
 
 <h4>Description</h4>
 
@@ -2659,8 +2659,8 @@
 
 <p><a href="#ca_context_create">ca_context_create</a>()</p>
 
-<h3><code><a name="ca_create_channel">ca_create_channel()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
+<h3><a name="ca_create_channel"><code>ca_create_channel()</code></a></h3>
+<pre><code>#include &lt;cadef.h&gt;
 typedef void ( *pCallBack ) (
          struct connection_handler_args );
 int ca_create_channel
@@ -2670,7 +2670,7 @@
         void           *PUSER,
         capri          priority,
         chid           *PCHID
-);</pre>
+);</code></pre>
 
 <h4>Description</h4>
 
@@ -2740,18 +2740,18 @@
       disconnects. See <code><a href="#ca_puser">ca_puser</a></code> if the
       <code>PUSER</code> argument is required in your callback
       handler<code>.</code></p>
-      <pre>struct  ca_connection_handler_args {
-    chanId  chid;  /* channel id */
-    long    op;    /* one of CA_OP_CONN_UP or CA_OP_CONN_DOWN */
-};</pre>
+      <pre><code>struct  ca_connection_handler_args { 
+    chanId  chid;  /* channel id */   
+    long    op;    /* one of CA_OP_CONN_UP or CA_OP_CONN_DOWN */ 
+};</code></pre>
     </dd>
 </dl>
 <dl>
   <dt><code>PUSER</code></dt>
-    <dd>The value of this void pointer argument is retained in
-      storage associated with the specified channel. See the MACROS manual page
-      for reading and writing this field. Casual users of channel access may
-      wish to set this field to nil or 0.</dd>
+    <dd>The value of this void pointer argument is retained in storage
+      associated with the specified channel. See the MACROS manual page for
+      reading and writing this field. Casual users of channel access may wish
+      to set this field to nil or 0.</dd>
 </dl>
 <dl>
   <dt><code>PRIORITY</code></dt>
@@ -2784,9 +2784,9 @@
 
 <p>ECA_ALLOCMEM - Unable to allocate memory</p>
 
-<h3><code><a name="ca_clear_channel">ca_clear_channel()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-int ca_clear_channel (chid CHID);</pre>
+<h3><a name="ca_clear_channel"></a><code>ca_clear_channel()</code></h3>
+<pre><code>#include &lt;cadef.h&gt;
+int ca_clear_channel (chid CHID);</code></pre>
 
 <h4>Description</h4>
 
@@ -2814,8 +2814,8 @@
 
 <p>ECA_BADCHID - Corrupted CHID</p>
 
-<h3><code><a name="ca_put">ca_put()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
+<h3><a name="ca_put"><code>ca_put()</code></a></h3>
+<pre><code>#include &lt;cadef.h&gt;
 int ca_put ( chtype TYPE, 
         chid CHID, void *PVALUE ); 
 int ca_array_put ( chtype TYPE, 
@@ -2828,7 +2828,7 @@
 int ca_array_put_callback ( chtype TYPE, 
         unsigned long COUNT, 
         chid CHID, const void *PVALUE, 
-        pCallBack PFUNC, void *USERARG );</pre>
+        pCallBack PFUNC, void *USERARG );</code></pre>
 
 <h4>Description</h4>
 
@@ -2884,6 +2884,32 @@
 callback request cause the specified field to be immediately written, but they
 do not cause the record to be processed.</p>
 
+<h4>Description (IOC Database Specific)</h4>
+
+<p>A CA put request causes the record to process if the record's SCAN field is
+set to passive, and the field being written has it's process passive attribute
+set to true. If such a record is already processing when a put request is
+initiated the specified field is written immediately, and the record is
+scheduled to process again as soon as it finishes processing. Earlier instances
+of multiple put requests initiated while the record is being processing may be
+discarded, but the last put request initiated is always written and
+processed.</p>
+
+<p>A CA put <span style="font-style: italic;">callback</span> request causes
+the record to process if the record's SCAN field is set to passive, and the
+field being written has it's process passive attribute set to true. For such a
+record, the user's put callback function is not called until after the record,
+and any records that the record links to, finish processing. If such a record
+is already processing when a put <span
+style="font-style: italic;">callback</span> request is initiated the put <span
+style="font-style: italic;">callback</span> request is postponed until the
+record, and any records it links to, finish processing.</p>
+
+<p>If the record's SCAN field is not set to passive, or the field being written
+has it's process passive attribute set to false then the CA put or CA put
+callback request cause the specified field to be immediately written, but they
+do not cause the record to be processed.</p>
+
 <h4>Arguments</h4>
 <dl>
   <dt><code>TYPE</code></dt>
@@ -2986,6 +3012,13 @@
 not. There is currently no mechanism in place to cause a record to be processed
 when a CA get request is initiated.</p>
 
+<h4>Description (IOC Database Specific)</h4>
+
+<p>A CA get or CA get callback request causes the record's field to be read
+immediately independent of whether the record is currently being processed or
+not. There is currently no mechanism in place to cause a record to be processed
+when a CA get request is initiated.</p>
+
 <h4>Example</h4>
 
 <p>See caExample.c in the example application created by makeBaseApp.pl.</p>
@@ -3049,14 +3082,14 @@
 
 <p><a href="#ca_sg_get">ca_sg_array_get</a>()</p>
 
-<h3><code><a name="ca_add_event">ca_create_subscription()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
+<h3><a name="ca_add_event"></a><code>ca_create_subscription()</code></h3>
+<pre><code>#include &lt;cadef.h&gt;
 typedef void ( *pCallBack ) (
         struct event_handler_args );
 int ca_create_subscription ( chtype TYPE, 
         unsigned long COUNT, chid CHID, 
         unsigned long MASK, pCallBack USERFUNC, void *USERARG, 
-        evid *PEVID );</pre>
+        evid *PEVID );</code></pre>
 
 <h4>Description</h4>
 
@@ -3348,10 +3381,10 @@
 
 <p>ECA_NORMAL - Normal successful completion</p>
 
-<h3><code><a name="ca_signal">ca_signal()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
+<h3><code><a name="ca_signal">ca_signal</a>()</code></h3>
+<pre><code>#include &lt;cadef.h&gt;
 int ca_signal ( long CA_STATUS, const char * CONTEXT_STRING ); 
-void SEVCHK( CA_STATUS, CONTEXT_STRING );</pre>
+void SEVCHK( CA_STATUS, CONTEXT_STRING );</code></pre>
 
 <h4>Description</h4>
 
@@ -3367,8 +3400,8 @@
 code testing the status returned from each channel access call.</p>
 
 <h4>Examples</h4>
-<pre>status = ca_context_create (...); 
-SEVCHK ( status, "Unable to create a CA client context" );</pre>
+<pre><code>status = ca_context_create (...); 
+SEVCHK ( status, "Unable to create a CA client context" );</code></pre>
 
 <p>If the application only wishes to print the message associated with an error
 code or test the severity of an error there are also functions provided for
@@ -3422,7 +3455,7 @@
       callback function. Currently, the <code>op</code> field can be one of
       <code>CA_OP_GET, CA_OP_PUT, CA_OP_CREATE_CHANNEL, CA_OP_ADD_EVENT,
       CA_OP_CLEAR_EVENT, or CA_OP_OTHER.</code>
-      <pre>struct exception_handler_args {
+      <pre><code>struct exception_handler_args {
     void            *usr;   /* user argument supplied when installed */
     chanId          chid;   /* channel id (may be nill) */
     long            type;   /* type requested */
@@ -3433,7 +3466,7 @@
     const char      *ctx;   /* a character string containing context info */
     sonst char      *pFile; /* source file name (may be NULL) */
     unsigned        lineNo; /* source file line number (may be zero) */
-};</pre>
+};</code></pre>
     </dd>
 </dl>
 <dl>
@@ -3443,7 +3476,7 @@
 </dl>
 
 <h4>Example</h4>
-<pre>void ca_exception_handler (
+<pre><code>void ca_exception_handler (
     struct exception_handler_args args)
 {
     char buf[512];
@@ -3456,11 +3489,11 @@
         pName = "?";
     }
     sprintf ( buf,
-            "%s - with request chan=%s op=%d data type=%s count=%d",
-            args.ctx, pName, args.op, dbr_type_to_text ( args.type ), args.count );
-    ca_signal ( args.stat, buf );
+        "%s - with request chan=%s op=%d data type=%s count=%d", 
+        args.ctx, pName, args.op, dbr_type_to_text ( args.type ), args.count ); 
+    ca_signal ( args.stat, buf ); 
 }
-ca_add_exception_event ( ca_exception_handler , 0 );</pre>
+ca_add_exception_event ( ca_exception_handler , 0 );</code></pre>
 
 <h4>Returns</h4>
 
@@ -3468,9 +3501,11 @@
 
 <p></p>
 
-<h3><code><a name="ca_add_fd_registration">ca_add_fd_registration()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-int ca_add_fd_registration ( void ( USERFUNC * ) ( void *USERARG, int FD, int OPENED ), void * USERARG )</pre>
+<h3><code><a name="ca_add_fd_"
+id="ca_add_fd_registration">ca_add_fd_registration()</a></code></h3>
+<pre><code>#include &lt;cadef.h&gt;
+int ca_add_fd_registration ( void ( USERFUNC * ) ( void *USERARG, 
+                int FD, int OPENED ), void * USERARG )</code></pre>
 
 <h4>Description</h4>
 
@@ -3504,7 +3539,7 @@
 file descriptor was closed.</p>
 
 <h4>Example</h4>
-<pre>int s;
+<pre><code>int s;
 static struct myStruct aStruct;
 
 void fdReg ( struct myStruct *pStruct, int fd, int opened )
@@ -3513,7 +3548,7 @@
     else printf ( "fd %d was closed\n", fd );
 }
 s = ca_add_fd_registration ( fdReg, &amp; aStruct );
-SEVCHK ( s, NULL );</pre>
+SEVCHK ( s, NULL );</code></pre>
 
 <h4>Comments</h4>
 
@@ -3539,9 +3574,9 @@
 
 <h3><code><a name="ca_replace_printf_handler">ca_replace_printf_handler
 ()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
+<pre><code>#include &lt;cadef.h&gt;
 typedef int caPrintfFunc ( const char *pFromat, va_list args );
-int ca_replace_printf_handler ( caPrintfFunc *PFUNC );</pre>
+int ca_replace_printf_handler ( caPrintfFunc *PFUNC );</code></pre>
 
 <h4>Description</h4>
 
@@ -3557,22 +3592,22 @@
 </dl>
 
 <h4>Examples</h4>
-<pre>int my_printf ( char *pformat, va_list args ) {
+<pre><code>int my_printf ( char *pformat, va_list args ) {
         int status;
         status = vfprintf( stderr, pformat, args);
         return status;
 }
 status = ca_replace_printf_handler ( my_printf );
-SEVCHK ( status, "failed to install my printf handler" );</pre>
+SEVCHK ( status, "failed to install my printf handler" );</code></pre>
 
 <h4>Returns</h4>
 
 <p>ECA_NORMAL - Normal successful completion</p>
 
 <h3><code><a name="ca_replace">ca_replace_access_rights_event()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
+<pre><code>#include &lt;cadef.h&gt;
 typedef void ( *pCallBack )( struct access_rights_handler_args );
-int ca_replace_access_rights_event ( chid CHAN, pCallBack PFUNC );</pre>
+int ca_replace ( chid CHAN, pCallBack PFUNC );</code></pre>
 
 <h4>Description</h4>
 
@@ -3601,7 +3636,7 @@
     <dd>Address of user supplied call back function. A nil pointer uninstalls
       the current handler. The following arguments are passed <em>by value</em>
       to the supplied callback handler. 
-      <pre>typedef struct ca_access_rights {
+      <pre><code>typedef struct ca_access_rights {
     unsigned    read_access:1;
     unsigned    write_access:1;
 } caar;
@@ -3610,7 +3645,7 @@
 struct  access_rights_handler_args {
     chanId  chid;   /* channel id */
     caar    ar;     /* new access rights state */
-};</pre>
+};</code></pre>
     </dd>
 </dl>
 
@@ -3618,9 +3653,15 @@
 
 <p>ECA_NORMAL - Normal successful completion</p>
 
+<h4>See Also</h4>
+
+<p>ca_modify_user_name()</p>
+
+<p>ca_modify_host_name()</p>
+
 <h3><code><a name="ca_field_type">ca_field_type()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-chtype ca_field_type ( CHID );</pre>
+<pre><code>#include &lt;cadef.h&gt;
+chtype ca_field_type ( CHID );</code></pre>
 
 <h4>Description</h4>
 
@@ -3641,8 +3682,8 @@
 </dl>
 
 <h3><code><a name="ca_element_count">ca_element_count()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-unsigned ca_element_count ( CHID );</pre>
+<pre><code>#include &lt;cadef.h&gt;
+unsigned ca_element_count ( CHID );</code></pre>
 
 <h4>Description</h4>
 
@@ -3663,8 +3704,8 @@
 </dl>
 
 <h3><code><a name="ca_name">ca_name()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-char * ca_name ( CHID );</pre>
+<pre><code>#include &lt;cadef.h&gt;
+char * ca_name ( CHID );</code></pre>
 
 <h4>Description</h4>
 
@@ -3684,8 +3725,8 @@
 </dl>
 
 <h3><code><a name="ca_set_puser">ca_set_puser()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-void ca_set_puser ( chid CHID, void *PUSER );</pre>
+<pre><code>#include &lt;cadef.h&gt;
+void ca_set_puser ( chid CHID, void *PUSER );</code></pre>
 
 <h4>Description</h4>
 
@@ -3703,8 +3744,8 @@
 </dl>
 
 <h3><code><a name="ca_puser">ca_puser()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-void * ca_puser ( CHID );</pre>
+<pre><code>#include &lt;cadef.h&gt;
+void * ca_puser ( CHID );</code></pre>
 
 <h4>Description</h4>
 
@@ -3724,13 +3765,13 @@
 </dl>
 
 <h3><code><a name="ca_state">ca_state()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
+<pre><code>#include &lt;cadef.h&gt;
 enum channel_state {
-    cs_never_conn, /* valid chid, server not found or unavailable */
-    cs_prev_conn,  /* valid chid, previously connected to server */
-    cs_conn,       /* valid chid, connected to server */
-    cs_closed };   /* channel deleted by user */
-enum channel_state ca_state ( CHID );</pre>
+        cs_never_conn, /* valid chid, server not found or unavailable */
+        cs_prev_conn,  /* valid chid, previously connected to server */
+        cs_conn,       /* valid chid, connected to server */
+        cs_closed };   /* channel deleted by user */
+enum channel_state ca_state ( CHID );</code></pre>
 
 <h4>Description</h4>
 
@@ -3750,8 +3791,8 @@
 </dl>
 
 <h3><code><a name="ca_message">ca_message()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-const char * ca_message ( STATUS );</pre>
+<pre><code>#include &lt;cadef.h&gt;
+const char * ca_message ( STATUS );</code></pre>
 
 <h4>Description</h4>
 
@@ -3771,8 +3812,8 @@
 </dl>
 
 <h3><code><a name="ca_host_name">ca_host_name()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-char * ca_host_name ( CHID );</pre>
+<pre><code>#include &lt;cadef.h&gt;
+char * ca_host_name ( CHID );</code></pre>
 
 <h4>Description</h4>
 
@@ -3793,8 +3834,8 @@
 </dl>
 
 <h3><code><a name="ca_read_access">ca_read_access()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-int ca_read_access ( CHID );</pre>
+<pre><code>#include &lt;cadef.h&gt;
+int ca_read_access ( CHID );</code></pre>
 
 <h4>Description</h4>
 
@@ -3815,8 +3856,8 @@
 </dl>
 
 <h3><code><a name="ca_write_access">ca_write_access()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-int ca_write_access ( CHID );</pre>
+<pre><code>#include &lt;cadef.h&gt;
+int ca_write_access ( CHID );</code></pre>
 
 <h4>Description</h4>
 
@@ -3837,8 +3878,8 @@
 </dl>
 
 <h3><code><a name="dbr_size[]">dbr_size[]</a></code></h3>
-<pre>#include &lt;db_access.h&gt;
-extern unsigned dbr_size[/* TYPE */];</pre>
+<pre><code>#include &lt;db_access.h&gt;
+extern unsigned dbr_size[/*TYPE*/];</code></pre>
 
 <h4>Description</h4>
 
@@ -3857,8 +3898,8 @@
 </dl>
 
 <h3><code><a name="dbr_size_n">dbr_size_n()</a></code></h3>
-<pre>#include &lt;db_access.h&gt;
-unsigned dbr_size_n ( TYPE, COUNT );</pre>
+<pre><code>#include &lt;db_access.h&gt;
+unsigned dbr_size_n  (  TYPE, COUNT  );</code></pre>
 
 <h4>Description</h4>
 
@@ -3886,8 +3927,8 @@
 </dl>
 
 <h3><code><a name="dbr_value_size">dbr_value_size[]</a></code></h3>
-<pre>#include &lt;db_access.h&gt;
-extern unsigned dbr_value_size[/* TYPE */];</pre>
+<pre><code>#include &lt;db_access.h&gt;
+extern unsigned dbr_value_size[/* TYPE */];</code></pre>
 
 <h4>Description</h4>
 
@@ -3909,8 +3950,8 @@
 </dl>
 
 <h3><code><a name="dbr_type_t">dbr_type_to_text</a>()</code></h3>
-<pre>#include &lt;db_access.h&gt;
-const char * dbr_type_text ( chtype TYPE );</pre>
+<pre><code>#include &lt;db_access.h&gt;
+const char * dbr_type_text ( chtype TYPE );</code></pre>
 
 <h4>Description</h4>
 
@@ -3940,17 +3981,17 @@
 prints diagnostics to standard out.</p>
 
 <h4>Examples</h4>
-<pre>void ca_test_event (); 
+<pre><code>void ca_test_event (); 
 status = ca_add_event ( type, chid, ca_test_event, NULL, NULL ); 
-SEVCHK ( status, .... );</pre>
+SEVCHK ( status, .... );</code></pre>
 
 <h4>See Also</h4>
 
 <p><a href="#ca_add_event">ca_add_event</a>()</p>
 
 <h3><code><a name="ca_sg_create">ca_sg_create()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-int ca_sg_create ( CA_SYNC_GID *PGID );</pre>
+<pre><code>#include &lt;cadef.h&gt;
+int ca_sg_create ( CA_SYNC_GID *PGID );</code></pre>
 
 <h4>Description</h4>
 
@@ -3974,9 +4015,9 @@
 </dl>
 
 <h4>Examples</h4>
-<pre>CA_SYNC_GID gid; 
+<pre><code>CA_SYNC_GID gid; 
 status = ca_sg_create ( &amp;gid ); 
-SEVCHK ( status, Sync group create failed );</pre>
+SEVCHK ( status, Sync group create failed );</code></pre>
 
 <h4>Returns</h4>
 
@@ -3999,8 +4040,8 @@
 <p><a href="#ca_sg_get">ca_sg_array_get</a>()</p>
 
 <h3><code><a name="ca_sg_delete">ca_sg_delete()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-int ca_sg_delete ( CA_SYNC_GID GID );</pre>
+<pre><code>#include &lt;cadef.h&gt;
+int ca_sg_delete ( CA_SYNC_GID GID );</code></pre>
 
 <h4>Description</h4>
 
@@ -4013,9 +4054,9 @@
 </dl>
 
 <h4>Examples</h4>
-<pre>CA_SYNC_GID gid; 
+<pre><code>CA_SYNC_GID gid; 
 status = ca_sg_delete ( gid ); 
-SEVCHK ( status, Sync group delete failed );</pre>
+SEVCHK ( status, Sync group delete failed );</code></pre>
 
 <h4>Returns</h4>
 
@@ -4027,9 +4068,9 @@
 
 <p><a href="#ca_sg_create">ca_sg_create</a>()</p>
 
-<h3><code><a name="ca_sg_block">ca_sg_block()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-int ca_sg_block ( CA_SYNC_GID GID, double timeout );</pre>
+<h3><a name="ca_sg_block"><code>ca_sg_block</code></a><code>()</code></h3>
+<pre><code>#include &lt;cadef.h&gt;
+int ca_sg_block ( CA_SYNC_GID GID, double timeout );</code></pre>
 
 <h4>Description</h4>
 
@@ -4055,9 +4096,9 @@
 </dl>
 
 <h4>Examples</h4>
-<pre>CA_SYNC_GID gid;
-status = ca_sg_block(gid);
-SEVCHK(status, Sync group block failed);</pre>
+<pre><code>CA_SYNC_GID gid; 
+status = ca_sg_block(gid); 
+SEVCHK(status, Sync group block failed);</code></pre>
 
 <h4>Returns</h4>
 
@@ -4076,8 +4117,8 @@
 <p><a href="#ca_sg_reset">ca_sg_reset</a>()</p>
 
 <h3><code><a name="ca_sg_test">ca_sg_test()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-int ca_sg_test ( CA_SYNC_GID GID )</pre>
+<pre><code>#include &lt;cadef.h&gt;
+int ca_sg_test ( CA_SYNC_GID GID )</code></pre>
 
 <h4>Description</h4>
 
@@ -4096,8 +4137,8 @@
 completed.</p>
 
 <h4>Examples</h4>
-<pre>CA_SYNC_GID gid;
-status = ca_sg_test ( gid );</pre>
+<pre><code>CA_SYNC_GID gid;
+status = ca_sg_test ( gid );</code></pre>
 
 <h4>Returns</h4>
 
@@ -4106,8 +4147,8 @@
 <p>ECA_IOINPROGRESS - Some IO operations still in progress</p>
 
 <h3><code><a name="ca_sg_reset">ca_sg_reset()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-int ca_sg_reset ( CA_SYNC_GID GID )</pre>
+<pre><code>#include &lt;cadef.h&gt;
+int ca_sg_reset ( CA_SYNC_GID GID )</code></pre>
 
 <h4>Description</h4>
 
@@ -4122,8 +4163,8 @@
 </dl>
 
 <h4>Examples</h4>
-<pre>CA_SYNC_GID gid; 
-status = ca_sg_reset(gid);</pre>
+<pre><code>CA_SYNC_GID gid; 
+status = ca_sg_reset(gid);</code></pre>
 
 <h4>Returns</h4>
 
@@ -4131,10 +4172,10 @@
 
 <p>ECA_BADSYNCGRP - Invalid synchronous group</p>
 
-<h3><code><a name="ca_sg_put">ca_sg_array_put()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
+<h3><code><a name="ca_sg_put">ca_sg_put()</a></code></h3>
+<pre><code>#include &lt;cadef.h&gt;
 int ca_sg_array_put ( CA_SYNC_GID GID, chtype TYPE, 
-        unsigned long COUNT, chid CHID, void *PVALUE );</pre>
+        unsigned long COUNT, chid CHID, void *PVALUE );</code></pre>
 
 <p>Write a value, or array of values, to a channel and increment the
 outstanding request count of a synchronous group. The ca_sg_array_put
@@ -4193,11 +4234,11 @@
 
 <p><a href="#ca_flush_io">ca_flush_io</a>()</p>
 
-<h3><code><a name="ca_sg_get">ca_sg_array_get()</a></code></h3>
-<pre>#include &lt;cadef.h&gt;
-int ca_sg_array_get ( CA_SYNC_GID GID,
-        chtype TYPE, unsigned long COUNT,
-        chid CHID, void *PVALUE );</pre>
+<h3><code><a name="ca_sg_get">ca_sg_get()</a></code></h3>
+<pre><code>#include &lt;cadef.h&gt;
+int ca_sg_array_get ( CA_SYNC_GID GID, 
+        chtype TYPE, unsigned long COUNT, 
+        chid CHID, void *PVALUE );</code></pre>
 
 <h4>Description</h4>
 
@@ -4359,7 +4400,9 @@
 <p><a href="#ca_context_destroy">ca_context_destroy</a>()</p>
 
 <h3><code><a name="ca_dump_dbr">ca_dump_dbr()</a></code></h3>
-<pre>void ca_dump_dbr (chtype TYPE, unsigned COUNT, const void * PDBR);</pre>
+<pre><code>
+void ca_dump_dbr (chtype TYPE, 
+            unsigned COUNT, const void * PDBR);</code></pre>
 
 <h4>Description</h4>
 


Replies:
Re: [Merge] lp:~johill-lanl/epics-base/ca-ref-man-maint into lp:epics-base Ralph Lange
Re: [Merge] lp:~johill-lanl/epics-base/ca-ref-man-maint into lp:epics-base Andrew Johnson
Re: [Merge] lp:~johill-lanl/epics-base/ca-ref-man-maint into lp:epics-base Ralph Lange

Navigate by Date:
Prev: RE: class library header file naming and install conventions Jeff Hill
Next: Re: [Merge] lp:~johill-lanl/epics-base/ca-ref-man-maint into lp:epics-base Ralph Lange
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: launchpad and proxied web access Ralph Lange
Next: Re: [Merge] lp:~johill-lanl/epics-base/ca-ref-man-maint into lp:epics-base Ralph Lange
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 02 Feb 2012 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·