From 23612a7afe1c6e0a208bf4a0acecd2a5e2468380 Mon Sep 17 00:00:00 2001
From: Ralph Lange Los Alamos National
Laboratory, SNS Division Helmholtz-Zentrum
Berlin (BESSY II) Copyright © 2009
-Helmholtz-Zentrum Berlin für Materialien und Energie GmbH. Copyright � 2009
+Helmholtz-Zentrum Berlin f�r Materialien und Energie GmbH. EPICS BASE Versions
@@ -105,7 +105,7 @@ $Date$EPICS R3.14 Channel Access Reference Manual
- Jeffrey O. Hill
+ Jeffrey O. Hill
-Copyright © 2002 The University of Chicago, as Operator of Argonne National
+
+Copyright � 2002 The University of Chicago, as Operator of Argonne National
Laboratory.
-Copyright © 2002 The Regents of the University of California, as Operator of
+Copyright � 2002 The Regents of the University of California, as Operator of
Los Alamos National Laboratory.
-Copyright © 2002 Berliner Speicherringgesellschaft für Synchrotronstrahlung
+Copyright � 2002 Berliner Speicherringgesellschaft f�r Synchrotronstrahlung
GmbH.Troubleshooting
Channel Access is implemented using internet protocols (IP). IP addresses +
Channel Access is implemented�using internet protocols (IP). IP addresses are divided into host and network portions. The boundary between each portion is determined by the IP netmask. Portions of the IP address corresponding to zeros in the netmask specify the hosts address within an IP subnet. Portions of @@ -415,7 +415,7 @@ independent control systems that will share the same network. For instance, a site might set up an operational control system and a test control system on the same network. In this situation it is desirable for the test system and the operational system to use identical PV names without fear of collision. A site -might also configure the CA port numbers because some other facility is already +might also configure the CA port numbers�because some other facility is already using the default port numbers. The default Channel Access port numbers have been registered with IANA.
@@ -716,7 +716,7 @@ in the variable EPICS_TS_MIN_WEST. EPICS_CA_MAX_ARRAY_BYTES determines the size of the largest array that may pass through CA. Prior to this version only arrays smaller than 16k bytes could be transfered. The CA libraries maintains a free list of 16384 byte network -buffers that are used for ordinary communication. If EPICS_CA_MAX_ARRAY_BYTES +buffers that are used for ordinary communication. If EPICS_CA_MAX_ARRAY_BYTES� is larger than 16384 then a second free list of larger data buffers is established and used only after a client send its first large array request. @@ -751,7 +751,7 @@ been done to address this issue so far).The EPICS_CAS_BEACON_PORT parameter specifies the destination port for -server beacons. The only exception to this occurs when ports are specified in -EPICS_CAS_BEACON_ADDR_LIST or possibly in EPICS_CA_ADDR_LIST. If +server beacons. The only exception to this occurs when ports are specified +in EPICS_CAS_BEACON_ADDR_LIST or possibly in EPICS_CA_ADDR_LIST. If EPICS_CAS_BEACON_PORT is not specified then beacons are sent to the port specified in EPICS_CA_REPEATER_PORT.
@@ -846,7 +846,7 @@ not implemet this feature.Name resolution requests originating from any of the IP addresses specified in the EPICS_CAS_IGNORE_ADDR_LIST parameter are not replied to.In R3.14 and -previous releases the CA server employed by iocCore does not implemet this +previous releases the CA server employed by iocCore does not implement this feature.
or number of one of the following types:
@@ -1341,7 +1341,7 @@ the output.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.
+isn't allowed to grow to an infinite size. This is a law of nature +- based on queuing theory of course.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 @@ -1996,10 +1996,10 @@ server to resume with subscription updates. This prevents slow clients from getting time warped, but also guarantees that intervening events are discarded until the slow client catches up.
-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.
+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.
There is unfortunately no field in the protocol allowing the server to indicate that an intervening subscription update was discarded. We should @@ -2310,7 +2310,7 @@ void myCallback ( struct event_handler_args args )
When the server detects a failure, and there is no client call back function -attached to the request, then an exception handler is executed in the client. +attached to the request, then�an exception handler is executed in the client. The default exception handler prints a message on the console and exits if the exception condition is severe. Certain internal exceptions within the CA client library, and failures detected by the SEVCHK macro may also cause the exception @@ -2332,8 +2332,8 @@ library functions that request them.
For routines that require an argument specifying the number of array -elements, no more than the process variable's maximum native element count may -be requested. The process variable's maximum native element count is available +elements, no more than the�process variable's maximum�native element count may +be requested. The process variable's�maximum native element count is available from ca_element_count() when the channel is connected. If less elements than the process variable's native element count are requested the requested values will be fetched beginning at element zero. By default CA limits the number of @@ -2383,7 +2383,7 @@ CA's auxiliary threads when the main initiating channel access thread is not inside of a function in the channel access client library. Otherwise, the user's call back functions will be called only when the main initiating channel access thread is executing inside of the CA client library. When the CA client -library invokes a user's call back function it will always wait for the current +library invokes a user's�call back function it will always wait for the current callback to complete prior to executing another call back function. Programmers enabling preemptive callback should be familiar with using mutex locks to create a reliable multi-threaded program.
@@ -2432,6 +2432,7 @@ 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. +A CA client library context can be shut down and cleaned up, after destroying any channels or application specific threads that are attached to it, by calling ca_context_destroy(). The @@ -2484,9 +2485,9 @@ questionable practice for the following reasons.
Shut down the calling thread's channel access client context and free any +
Shut down the calling thread's�channel access client context and free any resources allocated. Detach the calling thread from any CA client context.
Any user-created threads that have attached themselves to the CA context @@ -2637,8 +2638,8 @@ the routine writes a channel identifier into the user's variable of type on a channel.
The circuit may be initially connected or disconnected depending on the -state of the network and the location of the channel. A channel will only enter -a connected state after server's address is determined, and only if channel +state of the network and the location of the channel. A channel will only�enter +a�connected state after server's address is determined, and only if channel access successfully establishes a virtual circuit through the network to the server. Channel access routines that send a request to a server will return ECA_DISCONNCHID if the channel is currently disconnected.
@@ -2676,7 +2677,7 @@ time.The following structure is passed by value to the user's
connection connection callback function. The op field will
be set by the CA client library to CA_OP_CONN_UP when the
@@ -2701,8 +2702,8 @@ time.
PUSERShutdown and reclaim resources associated with a channel created by +
Shutdown and reclaim resources�associated with a channel created by ca_create_channel().
All remote operation requests such as the above are accumulated (buffered) @@ -2753,7 +2754,7 @@ efficiently sent over the network in one message.
Clearing a channel does not cause its disconnect handler to be called, but clearing a channel does shutdown and reclaim any channel state change event -subscriptions (monitors) registered with the channel.
+subscriptions�(monitors) registered�with the�channel.Write a scalar or array value to a process variable.
-When ca_array_put or ca_put are invoked the client will receive no response +
When ca_array_put� or ca_put are invoked the client will receive no response unless the request can not be fulfilled in the server. If unsuccessful an exception handler is run on the client side.
When ca_array_put_callback are invoked the user supplied asynchronous call -back is called only after the initiated write operation, and all actions -resulting from the initiating write operation, complete.
+back is called only after the initiated write operation, and all actions +resulting from the initiating write operation, complete.If unsuccessful the call back function is invoked indicating failure status.
@@ -2802,7 +2803,7 @@ resulting from the initiating then the client's call back function is called with failure status, but this does not guarantee that the server did not receive and process the request before the disconnect. If a connection is lost and then resumed outstanding ca -put requests are not automatically reissued following reconnect. +put requests are not automatically reissued following reconnect.All of these functions return ECA_DISCONN if the channel is currently disconnected.
@@ -2860,7 +2861,7 @@ do not cause the record to be processed.PFUNCECA_DISCONN - Channel is disconnected
ca_pend_event()
@@ -2916,7 +2917,7 @@ assumed to be stable in the application supplied buffer until after ECA_NORMAL is returned from ca_pend_io. If a connection is lost outstanding ca get requests are not automatically reissued following reconnect. When ca_get_callback or ca_array_get_callback are invoked a value is read -from the channel and then the user's callback is invoked with a pointer to the +from the channel and then the user's callback is invoked with a pointer to the retrieved value. Note that ca_pend_io will not block for the delivery of values requested by ca_get_callback. If the channel disconnects before a ca get callback request can be completed, then the clients call back function is @@ -2992,7 +2993,7 @@ when a CA get request is initiated.ECA_DISCONN - Channel is disconnected
ca_pend_event()
@@ -3010,7 +3011,7 @@ int ca_create_subscription ( chtype TYPE,Register a state change subscription and specify a call back function to be -invoked whenever the process variable undergoes significant state changes. A +invoked whenever the process variable undergoes significant state changes. A significant change can be a change in the process variable's value, alarm status, or alarm severity. In the process control function block database the deadband field determines the magnitude of a significant change for for the @@ -3018,7 +3019,7 @@ process variable's value. Each call to this function consumes resources in the client library and potentially a CA server until one of ca_clear_channel or ca_clear_event is called.
-Subscriptions may be installed or canceled against both connected and +
Subscriptions may be installed or canceled against both connected and disconnected channels. The specified USERFUNC is called once immediately after the subscription is installed with the process variable's current state if the process variable is connected. Otherwise, the specified USERFUNC is called @@ -3027,7 +3028,7 @@ variable. The specified USERFUNC is called immediately with the process variable's current state from within ca_add_event() if the client and the process variable share the same address space.
-If a subscription is installed on a channel in a disconnected state then the +
If a subscription is installed on a channel in a disconnected state then the requested count will be set to the native maximum element count of the channel if the requested count is larger.
@@ -3038,8 +3039,8 @@ over the network in one message.If at any time after subscribing, read access to the specified process variable is lost, then the call back will be invoked immediately indicating -that read access was lost via the status argument. When read access is restored -normal event processing will resume starting always with at least one update +that read access was lost via the status argument. When read access is restored +normal event processing will resume starting always with at least one update indicating the current state of the channel.
A better name for this function might have been ca_subscribe.
@@ -3066,7 +3067,7 @@ indicating the current state of the channel.USRERFUNCPEVIDMASKECA_ADDFAIL - A local database event add failed
ca_flush_io()
@@ -3130,7 +3131,7 @@ int ca_clear_subscription ( evid EVID );Cancel a subscription.
All ca_clear_event() requests such as the above are accumulated (buffered) -and not forwarded to the server until one of ca_flush_io, ca_pend_io, +and not forwarded to the�server until one of ca_flush_io, ca_pend_io, ca_pend_event, or ca_sg_pend are called. This allows several requests to be efficiently sent together in one message.
@@ -3167,7 +3168,7 @@ time.If ECA_TIMEOUT is returned then get requests may be reissued followed by a -subsequent call to ca_pend_io(). Specifically, the function will block only for +subsequent call to ca_pend_io(). Specifically, the function will block only for outstanding ca_get requests issued, and also any channels created specifying a nill connection handler function pointer, after the last call to ca_pend_io() or ca client context creation whichever is later. Note @@ -3177,7 +3178,7 @@ href="#ca_clear_channel">ca_clear_channel is called first.
If no ca_get or connection state change events are outstanding then ca_pend_io() will flush the send buffer and return immediately -without processing any outstanding channel access background +without processing any outstanding channel access background activities.
The delay specified to ca_pend_io() should take into account worst case @@ -3192,7 +3193,7 @@ pending.
TIMEOUT interval of
- zero specifies forever.ECA_EVDISALLOW - Function inappropriate for use within an event handler
This function tests to see if all ca_get requests are +
This function tests to see if all ca_get requests are complete and channels created specifying a nill connection callback function pointer are connected. It will report the status of outstanding ca_get requests issued, and channels created specifying a nill connection callback function pointer, after the last call to ca_pend_io() -or CA context initialization whichever is later.
+or CA context initialization whichever is later.Flush outstanding IO requests to the server. This routine might be useful -to users who need to flush requests prior to performing client side labor in +
Flush�outstanding IO requests to the server.�This routine might be useful +to�users�who need�to flush requests�prior to�performing client side labor in parallel with labor performed in the server.
Outstanding requests are also sent whenever the buffer which holds them @@ -3324,7 +3325,7 @@ this purpose.
CONTEXT_STRINGWhen an error occurs in the server asynchronous to the clients thread then information about this type of error is passed from the server to the client in -an exception message. When the client receives this exception message an +an exception message. When the client receives this exception message an exception handler callback is called.The default exception handler prints a -diagnostic message on the client's standard out and terminates execution if the +diagnostic message on the client's standard out and terminates execution if the error condition is severe.
Note that certain fields in "struct exception_handler_args" are not @@ -3364,7 +3365,7 @@ field should not be used.
reinstalled. The following structure is passed by value to the user's callback function. Currently, theop field can be one of
CA_OP_GET, CA_OP_PUT, CA_OP_CREATE_CHANNEL, CA_OP_ADD_EVENT,
- CA_OP_CLEAR_EVENT, or CA_OP_OTHER.
+ CA_OP_CLEAR_EVENT, or CA_OP_OTHER.
struct exception_handler_args { void *usr; /* user argument supplied when installed */ chanId chid; /* channel id (may be nill) */ @@ -3419,7 +3420,7 @@ id="ca_add_fd_">ca_add_fd_registration()Description
For use with the services provided by a file descriptor manager (IO -multiplexor) such as ""fdmgr.c". A file descriptor manager is often needed when +multiplexor) such as "fdmgr.c". A file descriptor manager is often needed when two file descriptor IO intensive libraries such as the EPICS channel access client library and the X window system client library must coexist in the same UNIX process. This function allows an application code to be notified whenever @@ -3535,7 +3536,7 @@ specified channel.
When a channel is created no access rights handler is installed.
+When a channel is created�no access rights handler is installed.
TYPEReturn the maximum array element count in the server for the specified IO +
Return the maximum array element count in� the server for the specified IO channel.
COUNTSet a user private void pointer variable retained with each channel for use +
Set a user private void pointer variable retained with each channel for use at the users discretion.
Returns boolean true if the client currently has read access to the -specified channel and boolean false otherwise.
+Returns�boolean true�if the client currently has read access to the +specified channel and�boolean false�otherwise.
STRINGca_write_access()Returns boolean true if the client currently has write access to the -specified channel and boolean false otherwise.
+Returns�boolean true�if the client currently has�write access to the +specified channel and�boolean false�otherwise.
STRINGdbr_size[]An array that returns the size in bytes for a DBR_XXXX type.
+An array that returns the size in bytes for a DBR_XXXX type.
TYPEReturns the size in bytes for a DBR_XXXX type with COUNT elements. If the +
Returns the size in bytes for a DBR_XXXX type with�COUNT elements.�If the DBR type is a structure then the value field is the last field in the structure. If COUNT is greater than one then COUNT-1 elements are appended to the end of the structure so that they can be addressed as an array through a @@ -3850,7 +3851,7 @@ field is returned otherwise the size of the type is returned.
TYPETYPEECA_ALLOCMEM - Failed, unable to allocate memory
ca_sg_block()
@@ -3996,7 +3997,7 @@ any pending channel access activities.Values written into your program's variables by a channel access synchronous group request should not be referenced by your program until ECA_NORMAL has -been received from ca_sg_block(). This routine will process pending channel +been received from ca_sg_block(). This routine will process pending channel access background activity while it is waiting.
ca_sg_test()#include <cadef.h>
-int ca_sg_test ( CA_SYNC_GID GID )
+int ca_sg_test� ( CA_SYNC_GID GID )
Write a value, or array of values, to a channel and increment the +
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 functionality is implemented using ca_array_put_callback.
@@ -4157,8 +4158,8 @@ synchronous group. The ca_sg_array_get functionality is implemented using ca_array_get_callback.The values written into your program's variables by ca_sg_get should not be -referenced by your program until ECA_NORMAL has been received from ca_sg_block -, or until ca_sg_test returns ECA_IODONE.
+referenced by your program until ECA_NORMAL has been received from ca_sg_block, +or until ca_sg_test returns ECA_IODONE.All remote operation requests such as the above are accumulated (buffered) and not forwarded to the server until one of ca_flush_io, ca_pend_io, @@ -4186,7 +4187,7 @@ reissued.
CHIDPVALUEECA_NORMAL - Normal successful completion
+ECA_NORMAL - Normal successful completion�
-ECA_BADSYNCGRP - Invalid synchronous group
+ECA_BADSYNCGRP - Invalid synchronous group�
ECA_BADCHID - Corrupted CHID
@@ -4224,7 +4225,7 @@ int ca_context_status ( struct ca_client_context *,Prints information about the client context including, at higher interest -levels, status for each channel. Lacking a CA context pointer, +levels, status for each channel. Lacking a CA context pointer, ca_client_status() prints information about the calling threads CA context.
$Id$ -.
+