2359 lines
89 KiB
HTML
2359 lines
89 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
"http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<title>EPICS Base Release 3.13.11</title>
|
|
</head>
|
|
|
|
<body lang="en">
|
|
<h1>EPICS Release 3.13.11</h1>
|
|
|
|
<h3>drvTS</h3>
|
|
|
|
<p>The code for synchronizing a time master with NTP has been greatly
|
|
revised. It should now synchronize to NTP within about .01 seconds.. In
|
|
addition the out of sync error messages from the clients can be suppressed.
|
|
The following new vxWorks shell command is available:</p>
|
|
<pre> TSsetSyncReportThreshold(syncMilliseconds,syncUnixMilliseconds)</pre>
|
|
where
|
|
<ul>
|
|
<li>syncMilliseconds
|
|
<p>error reporting threshold in milliseconds for normal UDP broadcast
|
|
synchronization messages from master to clients. The default is 0, i.e.
|
|
report all out of sync events.</p>
|
|
</li>
|
|
<li>syncUnixMilliseconds
|
|
<p>Error reporting threshols in milliseconds for synchronization message
|
|
after a TSsetClockFromUnix command has been given to the master. The
|
|
default is 10 millliseconds.</p>
|
|
</li>
|
|
</ul>
|
|
<p>This command can be issued on the master and on clients. The value the
|
|
client uses is the maximum of the master and client values. For example
|
|
if syncUnixMilliseconds is 0 on the master and 10 on the client than the
|
|
syncUnixMilliseconds is 10 milliseconds.</p>
|
|
<p>If a client is not changed it will also resync closer to NTP but out
|
|
of sync message can not be suppressed.</p>
|
|
|
|
<h2>Changes since 3.13.10</h2>
|
|
|
|
<h3>dbAccess DBR_ENUM_STRS for field DTYP</h3>
|
|
|
|
<p>Data Base Request Option DBR_ENUM_STRS for the DTYP field of soft records
|
|
does not report failure. It may cause a task to crash on some board suppot
|
|
packages.</p>
|
|
|
|
<h2>Changes since 3.13.9</h2>
|
|
|
|
<h3>GPL Violation fixed</h3>
|
|
|
|
<p>The GNU version of getopt.c that was being included in the Win32 version
|
|
of libCom was replaced with a BSD version.</p>
|
|
|
|
<h3>db_access - conversion of double to float</h3>
|
|
|
|
<p>When a CA user asked for display or control limits as a float a 0 value
|
|
was returned as -1.17549435E-38. This is now fixed.</p>
|
|
|
|
<h3>seq_ca</h3>
|
|
|
|
<p>The sequencer did not properly keep track of number of channels connected.
|
|
It now checks if it is actually connected/disconnect before it
|
|
increments/decrements the counts.</p>
|
|
|
|
<h3>Device Support code</h3>
|
|
|
|
<p>Several device support files have been removed that were not being built
|
|
by default, some of which would not compile anyway. These are:</p>
|
|
<ul>
|
|
<li>The DG535 GPIB support is in the APS/ASD share and has also been
|
|
converted to 3.14</li>
|
|
<li>devVmic2534.c and drvVmic2534.c</li>
|
|
<li>devXxBugRac.c</li>
|
|
<li>devXxDig500Msg232.c</li>
|
|
<li>devXxHvpsGpib.c</li>
|
|
<li>devXxSoftMsg.c</li>
|
|
<li>drvBitBus was unbundled many releases ago, but some header files are
|
|
still required to compile drvGpib which have been cleaned up.</li>
|
|
<li>drvXy010.c</li>
|
|
</ul>
|
|
|
|
<h3>Access Security</h3>
|
|
|
|
<p>The access security configuration rules now accept quoted strings where
|
|
just names were allowed previously.</p>
|
|
|
|
<p>A new shell command "ascar(int level)" is now available. It produces a
|
|
report of the INP channel access connections. Level (0,1,2) produces (a
|
|
summary report, summary plus unconnected channels, summary plus report of all
|
|
channels)</p>
|
|
|
|
<h3>mbboRecord and mbbiRecord</h3>
|
|
|
|
<p>The fields ZRST,...,FFST are now special(SPC_MOD). init_record now checks
|
|
to see if state strings or values are defined during pass 0. Previously if
|
|
another record had a DBR_STRING link to an mbboRecord it thought the field
|
|
was a USHORT instead of an ENUM.</p>
|
|
|
|
<h3>Channel Access</h3>
|
|
<ul>
|
|
<li>Fixed CA server send thread freeze when socket library returns ENOBUFS
|
|
(system is low on network buffers).</li>
|
|
<li>Fixed raw use of fork() system call when spawning CA repeater and it is
|
|
not in the path.</li>
|
|
</ul>
|
|
|
|
<h2>Changes since 3.13.8</h2>
|
|
|
|
<h3>Fixed dbExpand problem</h3>
|
|
|
|
<p>A syntax error in an xxInclude.dbd file is now noticed - make stops before
|
|
creating the relevent output file.</p>
|
|
|
|
<h3>Enhanced vxStats device support</h3>
|
|
|
|
<p>Incorporated various changes to the vxStats device support by Andy Foster
|
|
that have been in use at APS for over a year. This version adds the ability
|
|
to see absolute memory use in addition to the percentage figures available
|
|
before, and also gives information on the number of file desciptors in use.
|
|
These new figures use the longin record type, thus a new device support entry
|
|
is provided in base.dbd to enable it. See the comments in
|
|
<tt>src/dev/vxStatsDev/devVXStats.c</tt> for more detail on the new
|
|
facilities and an example database.</p>
|
|
|
|
<h3>double scanPeriod(int scan)</h3>
|
|
|
|
<p>A new routine is available from dbScan.h that returns the scan period in
|
|
seconds for a particular scan enumeration value.</p>
|
|
|
|
<h3>calcRecord and calcoutRecord</h3>
|
|
|
|
<p>Previously if a dbGetLink failed on one of the input links, dbGetLink was
|
|
not called for the remaining links. Now it is.</p>
|
|
|
|
<h3>put notify</h3>
|
|
|
|
<p>put notify did not act properly if a record had disp=TRUE, i.e. if puts
|
|
are disabled. It now returns S_db_putDisabled.</p>
|
|
|
|
<h3>Close-On-Exec flag set for all sockets created in EPICS base</h3>
|
|
|
|
<p>On POSIX systsems if a Channel Access application spawns off 3rd party
|
|
software with an exec() call then all open file desriptors are inherited
|
|
unless the close-on-exec flag is set for each file descriptor. A new wrapper
|
|
function was created so that all sockets created in EPICS base will have the
|
|
close-on-exec flag set on POSIX systems. The function which spawns the CA
|
|
repeater with exec() used to close all open files except stdin/stdout/stderr.
|
|
This step was no longer required and therefore was removed from the code.</p>
|
|
|
|
<h3>Assert fail in CA libraries when system runs low on mbufs</h3>
|
|
|
|
<h4>Scope</h4>
|
|
|
|
<p>The bug exists in probably in all previous versions of EPICS.</p>
|
|
|
|
<h4>Symptoms</h4>
|
|
|
|
<p>An IOC, low on network buffers, prints a message about an assert failure.
|
|
The assert failure can cause the CA server or the CA client library to be
|
|
compromised depending on where in the code it occurs.</p>
|
|
|
|
<h4>Fix</h4>
|
|
|
|
<p>All calls to getpeername() and getsockname() were checked and fixed as
|
|
necessary to make certain that an assert() failure does not occur if failure
|
|
status is returned, and that a proper response is made to this off-normal
|
|
situation.</p>
|
|
|
|
<h3>IP kernel deadlock vulnerability occurring when vxWorks's tNetTask calls
|
|
logMsg because of a transient mbuf starvation</h3>
|
|
|
|
<h4>Scope</h4>
|
|
|
|
<p>You must be running the logClient and logging to an iocLogServer and also
|
|
temporarily run the IOC out of network buffers.</p>
|
|
|
|
<h4>Symptoms</h4>
|
|
|
|
<p>IP kernel locks up during a transient mbuf starvation situation. No
|
|
network communication.</p>
|
|
|
|
<h4>Fix</h4>
|
|
|
|
<p>The fix was to not call logFdAdd for the log client's socket and instead
|
|
create a specialized vxWorks device driver which calls errlogPrintf for each
|
|
incoming message and then call logFdAdd for a file descriptor opened with
|
|
that device driver. The desirable functional change being errlogPrintf's
|
|
capability to discard messages when it gets behind (because of a transient
|
|
mbuf starvation situation). The fix also means that any code that calls
|
|
errlogAddListener, e.g. CMLOG, will now receive the logMsg messages.</p>
|
|
|
|
<h3>Revised Search Message Minimum Period Reset Values</h3>
|
|
|
|
<p>The CA client library's disconnected channel search message minimum period
|
|
now resets to a higher value if a channel disconnects or if a server beacon
|
|
anomaly is seen. Up until this release the R3.13 behavior was to reset to the
|
|
same search message interval used when a channel was created. The new
|
|
behavior is closer to what is implemented in EPICS R3.14.</p>
|
|
|
|
<h3>macLib</h3>
|
|
|
|
<p>macParseDefns did not check for handle==NULL. The documentation for
|
|
macParseDefns was not correct.</p>
|
|
|
|
<h3>task_params.h</h3>
|
|
|
|
<p>"event task" changed tp "event_task".</p>
|
|
|
|
<h3>drvGpib</h3>
|
|
|
|
<p>Remove some dead code. Clean up code for handling A24 DMA memory.</p>
|
|
|
|
<h3>dbGetLink and dbPutLink</h3>
|
|
|
|
<p>A bug in dbGetLink resulted in nRequest not being given the value 0 if the
|
|
link is a constant link. This in turn caused the waveform record to always
|
|
set NORD=NELEM. Thus if an application trys to write a waveform via the
|
|
steps:</p>
|
|
<pre> prset->get_array_info(paddr,&no_elements,&offset);
|
|
write nNew elements into array >>
|
|
prset->put_array_info(paddr,nNew);</pre>
|
|
|
|
<p>This sets NORD = nNew. But because of the dbGetLink bug, the soft device
|
|
support attached to the waveform record sets NORD to NELM.</p>
|
|
|
|
<p>This problem is fixed. The actual bug was in macros in dbAccess.h</p>
|
|
|
|
<h2>Changes since 3.13.7</h2>
|
|
|
|
<h3>dbEvent Bug Fix Changes</h3>
|
|
|
|
<h4>Scope</h4>
|
|
|
|
<p>The bug exists in EPICS 3.13.5, 3.13.6, 3.13.7</p>
|
|
|
|
<h4>Symptoms</h4>
|
|
|
|
<p>An IOC core CA server thread is found to be using excessive CPU possibly
|
|
at elevated priority resulting from vxWorks priority inheritance scheduling.
|
|
All attached CA clients will permanently disconnect from the IOC, and record
|
|
processing may be disrupted if the threads priority is elevated. Elevated
|
|
priority was observed in the one situation where the bug has been reproduced
|
|
and identified so far.</p>
|
|
|
|
<h4>Circumstances Related to Relative Rates of Occurrence</h4>
|
|
|
|
<p>This bug will occur only in circumstances where the CA client deletes a
|
|
monitor subscription and the client's CA event queue in iocCore is 100% full.
|
|
Since there is always space for each monitor subscription to place at least
|
|
one update on the queue then the queue can only be full if *all*
|
|
subscriptions for a particular client are sending subscription update events
|
|
at a rate that is faster than the client is reading them. Therefore,
|
|
specialized clients that have a small number of regularly updated
|
|
subscriptions and that do not regularly call ca_poll() or ca_pend_event() are
|
|
more likely to reproduce the problem.</p>
|
|
|
|
<h3>Config Changes</h3>
|
|
<ul>
|
|
<li>The default for vxWorks targets is now null, i.e.
|
|
CROSS_COMPILER_TARGET_ARCHS in CONFIG_SITE must be modified.</li>
|
|
<li>Added support for vxWorks targets: ppc603_long, ppc604_long, and
|
|
sbs_pc6.</li>
|
|
<li>Added support for HOST_ARCH solarisGnu (solaris host using GNU
|
|
compilers)</li>
|
|
<li>Added rule to create javadoc html files if makefile contains
|
|
JAVADOC=YES.</li>
|
|
<li>Removed -lXext -lX libraries from link edit lines on solaris
|
|
builds.</li>
|
|
<li>Simplified CONFIG.Host.solaris-x86 and RULES.Host config files.</li>
|
|
</ul>
|
|
|
|
<h2>Changes since 3.13.6</h2>
|
|
|
|
<p><strong>IOC resident CA server</strong></p>
|
|
<ul>
|
|
<li>put callback failure
|
|
<p><em>Symptom</em>: IOCs produce unexpected "ca put callback timeout"
|
|
messages, and may also crash.</p>
|
|
<p><em>Scope</em>: The bug is present only in the IOC resident CA server.
|
|
It was introduced in R3.13.6, and will be more likely to occur when there
|
|
is a particularly heavy Channel Access put callback load.</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p><strong>dbCommon.dbd</strong></p>
|
|
|
|
<p>UDF how has a promptgroup. This allows database configuration tools to
|
|
mset UDF false.</p>
|
|
|
|
<p><strong>mbboRecord</strong></p>
|
|
|
|
<p>Field VAL now has a cvt_dbaddr method. If any state strings are defined
|
|
the field type and dbr_field_type are declared ENUM. If no state strings are
|
|
defined then the type is USHORT. Previously the types were always ENUM.</p>
|
|
|
|
<p><strong>camacDev</strong></p>
|
|
|
|
<p>ai and ao now support special_linconv. NOTE: NOT TESTED.</p>
|
|
|
|
<p><strong>drvGpib.c</strong></p>
|
|
|
|
<p>Add some cacheFlush statements</p>
|
|
|
|
<p><strong>aiRecord and aoRecord: Setting eoff=egul</strong></p>
|
|
|
|
<p>Instead of init_record executing code like</p>
|
|
<pre> if ((pai->linr == menuConvertLINEAR) && pdset->special_linconv) {
|
|
pai->eoff = pai->egul;
|
|
}</pre>
|
|
|
|
<p>It now executes:</p>
|
|
<pre> if ((pai->eslo==1.0) && (pai->eoff==0.0)) {
|
|
pai->eoff = pai->egul;
|
|
}</pre>
|
|
|
|
<p>aoRecord has a similar change</p>
|
|
|
|
<p>This was done so that old device support which does not implement
|
|
special_linconv still works.</p>
|
|
|
|
<p><strong>CA puts to disabled record</strong></p>
|
|
|
|
<p>If a CA client issues a put to a disabled record then, when the record is
|
|
enabled, database puts to the record will not make the record process until a
|
|
CA put is again issued. This is fixed</p>
|
|
|
|
<p><strong>dbb - database breakpoints</strong></p>
|
|
|
|
<p>The database breakpoint facility was not working. This has probably been
|
|
true for several releases. It is now fixed.</p>
|
|
|
|
<p><strong>TPRO - trace processing</strong></p>
|
|
|
|
<p>If dbProcess is called recursively by different tasks, it did not properly
|
|
handle TPRO. Consider the following database:</p>
|
|
<pre>record(ao,"mrkao") {
|
|
field(OUT,"mrkai CA")
|
|
field(TPRO,"1")
|
|
}
|
|
record(ai,"mrkai") {
|
|
field(TPRO,"1")
|
|
}</pre>
|
|
|
|
<p>If a channel access put is sent to mrkao, no message is issued when mrkai
|
|
is processed.</p>
|
|
|
|
<p>This is now fixed.</p>
|
|
|
|
<p><strong>TSconfigure</strong></p>
|
|
|
|
<p>If in your st.cmd file you issue the command.</p>
|
|
|
|
<p>TSconfigure(0,0,0,0,0,0,1)</p>
|
|
|
|
<p>And set the TSE field of any record to a non zero value, then a crash will
|
|
occur when recGblGetTimeStamp is called.</p>
|
|
|
|
<p>This is now fixed.</p>
|
|
|
|
<p><strong>calcoutRecord</strong></p>
|
|
|
|
<p>nsev not sevr must be checked to decide if dbPutLink should be called.</p>
|
|
|
|
<p>This is now fixed</p>
|
|
|
|
<p><strong>calcPerform</strong></p>
|
|
|
|
<p>This now returns a non zero value if the result is nan (not a number).</p>
|
|
|
|
<p><strong>dbCa</strong></p>
|
|
|
|
<p>Improved diagnostic message.</p>
|
|
|
|
<p><strong>CA server (rsrv)</strong></p>
|
|
|
|
<p>Fixed race condition occuring when a put notify is canceled by a
|
|
ca_clear_channel at the same instant that it completes. This problem was
|
|
introduced in R3.13.5.</p>
|
|
|
|
<h2>Changes since 3.13.5</h2>
|
|
|
|
<p><strong>dbNotify</strong></p>
|
|
|
|
<p>If a request was made to restart a putNotify but another putNotify started
|
|
before it, then it was put on the restartList twice. This resulted in the
|
|
cbLow task getting into an infinite loop.</p>
|
|
|
|
<p><strong>dbConvert and dbFastLinkConv</strong></p>
|
|
|
|
<p>When a double precision 0 is converted to a float, instead of 0 the float
|
|
value becomes -FLT_MIN, which is a very small ,value, e.g. -1.175494e-38.</p>
|
|
|
|
<p><b>iocInit and initHooks</b></p>
|
|
|
|
<p>initialProcess is now called before interruptAccept. This means that
|
|
initial processing will be done before periodically scanned and I/O Inter
|
|
scanned record s start processing. This also changed the order of two of the
|
|
steps in initHooks.h</p>
|
|
|
|
<p><strong>drvBitBus</strong></p>
|
|
|
|
<p>A check is made that Irqvector is a multiple of 4.</p>
|
|
|
|
<p><b>dbCa.c</b></p>
|
|
|
|
<p>dbCaGetLink must return -1 when settinf sevr to INVALID or a FPE may be
|
|
rasied on a powerPC.</p>
|
|
|
|
<p><b>devMbboDirectCamac>/b></b></p>
|
|
|
|
<p>The call to cfsa was passing val as an argument. It is changed to rval.
|
|
See tech-talk message from Noboru Yamamoto Nov 2001.</p>
|
|
|
|
<p><b>mbbiRecord</b></p>
|
|
|
|
<p>All existing manipulations of UDF in process() are removed and one udf is
|
|
set FALSE when the raw value is successfully read.</p>
|
|
|
|
<p><b>selRecord</b></p>
|
|
|
|
<p>In do_sel udf is not set false at the beginning. If selm has an invalid
|
|
value recGblSetSevr(psel,SOFT_ALARM,MAJOR_ALARM) is called.</p>
|
|
|
|
<p><strong>devMz8310</strong></p>
|
|
|
|
<p>Changes were made so that this works on the powerPC. Improved IACK
|
|
code.</p>
|
|
|
|
<p><strong>CA Client Library</strong></p>
|
|
<ul>
|
|
<li>Monitor Subscription Attached to In-Memory Unsigned Short PV Anomaly
|
|
<p><em>Symptom:</em></p>
|
|
<p>A database field contiguous to a database field in the with an
|
|
unsigned integer type is mysteriously damaged.</p>
|
|
<p><em>Scope:</em></p>
|
|
<p>Almost all recent EPICS versions that promote the native type of
|
|
unsigned database fields to the next larger integer or floating point
|
|
type, because Channel Access clients use only signed types, are
|
|
effected.</p>
|
|
<p>The problem is further restricted only to Channel Access clients that
|
|
run within a vxWorks IOC communicating with local database fields stored
|
|
in some unsigned integer type.</p>
|
|
<p>Furthermore, the CA client must enter a subscription with an external
|
|
type that is identical to the CA "native" type only when the CA "native"
|
|
type is promoted to some larger signed type from the fields unsigned
|
|
integer field type.</p>
|
|
<p>The majority of EPICS users use only two CA client programs that
|
|
attach to local in-memory process variables: The sequencer and the CA
|
|
based database links. Both of these clients install monitor subscriptions
|
|
that include timestamp and or alarm information. Therefore, they do not
|
|
monitor in a native promoted type as described above, and are not
|
|
involved.</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p><strong>IOC Resident CA Server</strong></p>
|
|
<ul>
|
|
<li>Missing First Monitor Subscription Update
|
|
<p><em>Symptom:</em></p>
|
|
<p>A Channel Access client, such as medm, does not receive its first
|
|
monitor subscription update. An "events lost" message will show up on the
|
|
IOC's console, and in the log server.</p>
|
|
<p><em>Scope:</em></p>
|
|
<p>EPICS R3.13.5 based IOCs only.</p>
|
|
<p>A client must issue a large number of monitor subscription install
|
|
requests immediately after a large number of monitor subscription
|
|
uninstall requests.</p>
|
|
<p>This problem was discovered during regression testing of EPICS
|
|
R3.14.</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>Client Disconnect or Channel Delete While Put Callback in Progress
|
|
Failure
|
|
<p><em>Symptom:</em></p>
|
|
<p>The channel access server prints messages about a corrupt semaphore or
|
|
a bad file descriptor when a client forces a disconnect before its put
|
|
callback request completes.</p>
|
|
<p><em>Scope:</em></p>
|
|
<p>This bug has probably existed in every version of EPICS supporting put
|
|
callback requests. The problem may have been benign until the client
|
|
disconnect monitor cleanup code became more efficent in EPICS R3.13.5.
|
|
The problem was detected only on power PC systems. A similar problem
|
|
potentially occuring when a channel is deleted before its put callback
|
|
request completes was also fixed.</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<h2>Changes since 3.13.4</h2>
|
|
|
|
<p><b>convertRelease and checkRelease</b></p>
|
|
|
|
<p>New applications created with makeBaseApp.pl now have the functionality of
|
|
the makeConfigAppInclude.pl and makeIocCdCommands.pl scripts combined into a
|
|
single convertRelease.pl script.</p>
|
|
|
|
<p>The new script also provides consistency checking of the entries in the
|
|
config/RELEASE file, so that gnumake will stop with an error report if a
|
|
definition in any other <supporttop&gt/config/RELEASE file is
|
|
different to the same definition in this application. This checking can be
|
|
disabled by editing config/Makefile.Host.</p>
|
|
|
|
<p>Applications created using earlier versions of EPICS will continue to work
|
|
as before and will not benefit from the consistency check functionality.</p>
|
|
|
|
<p><b>devAiSoftRaw and devAoSoftRaw</b></p>
|
|
|
|
<p>ai and ao records using DTYP="Raw Soft Channel" can have their EOFF and
|
|
ESLO fields set manually at design or run-time, and these values will be used
|
|
when LINR=LINEAR. The same applies to any device support that doesn't
|
|
provide a special_linconv() routine; if special_linconv() is provided
|
|
however, the original behaviour occurs (EOFF is set to EGUL and ESLO is
|
|
calculated by that routine). The ESLO and EOFF fields now have CA monitors
|
|
posted if their value is changed by the special_linconv() routine.</p>
|
|
|
|
<p><b>cac_recv_task</b></p>
|
|
|
|
<p>Increased stack size from 4096 to 819l.</p>
|
|
|
|
<p><b>drvTS</b></p>
|
|
|
|
<p>Now uses osiSock for to handle implementation diffences</p>
|
|
|
|
<p><b>Constant Links</b></p>
|
|
|
|
<p>Hex and octal constants are now accepted for constant links.
|
|
recGblInitConstantLink uses %i instead of %u for unsigned types. This is so
|
|
that hex constants are accepted. %u does not accept hex. dbPutString makes a
|
|
link constant if either strtod or strtol eats entire string. Previously only
|
|
strtod was used.</p>
|
|
|
|
<p><b>Breakpoint tables</b></p>
|
|
|
|
<p>A bug that caused an invalid conversion when the raw value is greater than
|
|
the maximum table value is fixed. If the raw value is outside the table, the
|
|
aiRecord and aoRecord now specify a severity of MAJOR_ALARM instead of
|
|
INVALID_ALARM.</p>
|
|
|
|
<p><b>VAL field a promptgroup</b></p>
|
|
|
|
<p>The VAL field of the following recordtypes can now be given values by
|
|
database configuration tools: aiRecord, aoRecord, biRecord, boRecord,
|
|
calcoutRecord, longinRecord, longoutRecord, mbbiDirectRecord, mbbiRecord,
|
|
mbboDirectRecord, mbboRecord.</p>
|
|
|
|
<p>Several of the changes have been made to help prevent exceptions on
|
|
powerPcs when conversions are made from float to double.</p>
|
|
|
|
<p><strong>CA Server Bug</strong></p>
|
|
|
|
<p>Symptoms:</p>
|
|
|
|
<p>Clients disconnect unexpectedly when canceling event (monitor)
|
|
subscriptions using ca_clear_event(), but this may not be noticed because the
|
|
problem is probably rare under low or moderate load, and because CA clients
|
|
automatically reconnect. The problem was only reproducible here under heavy
|
|
load presented when the R3.14 client side regression tests were run on a
|
|
fast Linux workstation. For example, when the tests were run on a 500 MHz NT
|
|
host I was unable to reproduce the bug. On vxWorks you may see threads with
|
|
the name "CA client" and also "CA event" even if there are no clients
|
|
connected (the casr diagnostic will also incorrectly report that clients are
|
|
connected). As the IOC stays in long term operation without a reboot, and
|
|
depending on the frequency of occurrence at your site (if any), you may also
|
|
notice that memory and file descriptors have been lost.</p>
|
|
|
|
<p>Background:</p>
|
|
|
|
<p>The problem was discovered when regression testing EPICS R3.14. The cause
|
|
was a deadlock occurring when a CA event (monitor) subscription was canceled
|
|
when the CA circuit was simultaneously in event (monitor) flow control mode
|
|
and the event (monitor) subscription also had a corresponding update in the
|
|
queue.</p>
|
|
|
|
<p><br>
|
|
<strong>PPC float to double exceptions</strong></p>
|
|
|
|
<p>Several of the changes have been made to help prevent exceptions on
|
|
powerPcs when conversions are made from float to double.</p>
|
|
|
|
<p><b>aaiRecord aaoRecord aiRecord aoRecord boRecord calcRecord calcoutRecord
|
|
compressRecord dfanoutRecord egeventRecord selRecord subArrayRecord
|
|
subRecordwaveformRecord</b></p>
|
|
|
|
<p>All DBF_FLOAT fields have been replaced by DBF_DOUBLE</p>
|
|
|
|
<p><b>dbConvert dbFastLinkConv db_access</b></p>
|
|
|
|
<p>Conversion from double to float checks for exponent too large.</p>
|
|
|
|
<p><b>dfanoutRecord.c longoutRecord.c stringoutRecord.c</b></p>
|
|
|
|
<p>OMSL did not work correctly for constant links. <br>
|
|
<br>
|
|
<b>compressRecord</b></p>
|
|
|
|
<p>READ_ALARM changed to LINK_ALARM <br>
|
|
<b>Database Channel Access Links</b></p>
|
|
|
|
<p>A message was sent to errlog whenever the connection to the server was
|
|
lost. This message is no longer generated.</p>
|
|
|
|
<p><b>drvEpvxi</b></p>
|
|
|
|
<p>National Instruments MXI-2 devices are now fully supported on both 68K and
|
|
PowerPC (the PowerPC BSP must provide code for the vxWorks intVecGet()
|
|
routine though). PowerPC CPUs that have a Universe VME interface chip will
|
|
have problems driving MXI-1 boards, although they can be made to do so by
|
|
setting the variable 'vxi_use_failed_mxi' to a non-zero value in the st.cmd
|
|
file before iocInit() and ignoring any warnings about the MXI-1 board having
|
|
failed its self-test.</p>
|
|
|
|
<p>If a VME-MXI-2 board will not be installed as the VME system controller
|
|
read the NOTES: towards the top of the driver source for an essential
|
|
warning.</p>
|
|
|
|
<p>There is special code for the National Instruments CPU030 board in this
|
|
file, which is now only included when compiling for that particular CPU board
|
|
(an entry in config/CONFIG.Vx.niCpu030 enables this).</p>
|
|
|
|
<p><b>Put Notify</b></p>
|
|
|
|
<p>A bug in dbNotifyCancel could cause a problem if a channel access client
|
|
disconnects while put notifys are outstanding.</p>
|
|
|
|
<p><b>dbAccess</b></p>
|
|
|
|
<p>A bug was fixed that was related to dynamically changing lock sets.</p>
|
|
|
|
<p>The record support put_array_info is called after the a put only if the
|
|
put is successful. Previosuly it was always called.</p>
|
|
|
|
<p><b>breakpoint tables</b></p>
|
|
|
|
<p>Breakpoint values are doubles rather than floats.</p>
|
|
|
|
<p><b>devVXStats</b></p>
|
|
|
|
<p>Improved algorithm for cpuUsage</p>
|
|
|
|
<h2>Changes since 3.13.3</h2>
|
|
<b>Channel Access</b><b></b>
|
|
|
|
<p>Symptom: CA clients on all versions of EPICS with unresolved
|
|
channels broadcast search messages too frequently if an EPICS R3.13.3 server
|
|
is present. This bug does not occur if an R3.13.3 server is not present.</p>
|
|
|
|
<p>Changed: CA server now sends beacon messages which uniquely identify
|
|
the server address. The CA repeater was also upgraded to detect, and fix, any
|
|
problems of this nature.</p>
|
|
|
|
<p>Symptom: Undefined symbols show up when EPICS R3.13.3 was loaded
|
|
into a PC IOC running Tornado II.</p>
|
|
|
|
<p>Changed: Conditionally compiled out references to architecture
|
|
inappropriate system calls. <br>
|
|
</p>
|
|
|
|
<p><b>dfanoutRecord</b> <br>
|
|
</p>
|
|
<ul>
|
|
<li>VAL and all related fields are now DBF_DOUBLE instead of DBF_LONG</li>
|
|
<li>SELM, SELN, and SELL are now available. They have same semantics as for
|
|
fanout record</li>
|
|
<li>PREC is now supported.</li>
|
|
<li>IVOA and IVOV are no longer present. The record support never used
|
|
them.</li>
|
|
</ul>
|
|
<b>longinRecord and longoutRecord</b>
|
|
|
|
<p>These did not properly set monitors when delta=0x80000000. This happened
|
|
when the record was attached to a 32 bit digital device .</p>
|
|
|
|
<p><b>Access Security TrapWrite feature</b></p>
|
|
|
|
<p>Access security now provides the ability to trap write requests coming
|
|
from a client. RULEs in the access configuration files accept an option
|
|
argument NOTRAPWRITE or TRAPWRITE. For example:</p>
|
|
<pre>RULE(1,WRITE,TRAPWRITE)</pre>
|
|
If the additional argument is not specified the default is NOTRAPWRITE.
|
|
|
|
<p>The purpose of this new facility is to allow things like logging Channel
|
|
Access writes. Epics base itself does not provide this ability but only the
|
|
hook needed by such a facility. DESY has developed a facility that logs CA
|
|
puts. The trap writes feacure allows the DESY facility to be implemented
|
|
without any changes to epics base. In addition it allows the user to decide
|
|
what should be logged.</p>
|
|
|
|
<p>This new facility will be described in more detail in the 3.14 version of
|
|
the Application Developer's Guide.</p>
|
|
|
|
<p><b>dbAccess</b></p>
|
|
|
|
<p>When obtaining graphic, control, and alarm limits, the destination values
|
|
were not initialized. If record support did not set values then the
|
|
unitialized values were returned. This caused exceptions to occut on
|
|
powerPCs. The values are now initialized to 0.</p>
|
|
|
|
<p><b>drvTS.c</b> <br>
|
|
</p>
|
|
<ul>
|
|
<li>Fixed TSgetMasterTime() bug - round-trip adjustment was garbage</li>
|
|
<li>Replaced TSprintf() with printf() where logging inappropriate</li>
|
|
</ul>
|
|
|
|
<h2>Changes since 3.13.2</h2>
|
|
<b>Build Changes</b> <br>
|
|
|
|
<ul>
|
|
<li>Base no longer requires the INC step. Formerly this was the first step
|
|
of build. It installed header files. By default this step is no
|
|
longer executed. If your applications need this step then in
|
|
base/config/CONFIG_SITE (for all applications) or
|
|
<apptop>/config/CONFIG (for individual
|
|
applications)/CONFIG_SITE provide the following definition</li>
|
|
|
|
<p><br>
|
|
MAKE_INC_TARGET_FIRST=YES</p>
|
|
|
|
<p><b>NOTE: If your applications relies on header files being installed as
|
|
the first step of building, you should reorganize the order of
|
|
building. The 3.14 releases of base will no longer support the INC
|
|
step.</b></p>
|
|
</ul>
|
|
<ul>
|
|
<li>Support has been added for the Borland C++ compiler on windows
|
|
installed header files</li>
|
|
</ul>
|
|
|
|
<p><br>
|
|
<b>Channel Access Changes</b></p>
|
|
|
|
<p>Fixed the RISC architecture specific problem in iocCore which results in
|
|
an intermittent and infrequent assert failure with this message: "assert
|
|
(ev_que->evUser->nDuplicates>=1u)". This was actually fixed in
|
|
release 3.13.2.</p>
|
|
|
|
<p>All structure members with names "m_type" were changed to "m_dataType" to
|
|
avoid a macro name compile time conflict present in the SENS IP kernel
|
|
supplied with Tornado II and optionally in Tornado I.</p>
|
|
|
|
<p>The network interface query code used by Channel Access to auto-configure
|
|
its address list was modified to be compatible with changed API's present in
|
|
the SENS IP kernel supplied with Tornado II and optionally inTornado
|
|
I.</p>
|
|
|
|
<p><b>DBR_PUT_ACKT and DBR_PUT_ACKS</b></p>
|
|
|
|
<p>This now works for ca_put_callback as well as ca_put.</p>
|
|
|
|
<p><b>Spaces in task names</b></p>
|
|
|
|
<p>Task names no longer have any blanks</p>
|
|
|
|
<p><b>tsLib.h</b></p>
|
|
|
|
<p>Made tsStampFromLocal and tsStampToLocal public rather than private.</p>
|
|
|
|
<p><b>dbAccess</b></p>
|
|
|
|
<p>The following new routines have been added.</p>
|
|
|
|
<blockquote>
|
|
dbGetControlLimits <br>
|
|
dbGetGraphicLimits <br>
|
|
dbGetAlarmLimits <br>
|
|
dbGetPrecision <br>
|
|
dbGetUnits <br>
|
|
dbGetNelements <br>
|
|
dbGetSevr <br>
|
|
dbGetTimeStamp</blockquote>
|
|
<b>menuAlarmStat.dbd</b>
|
|
|
|
<p>choice(menuAlarmStat,"NO_ALARM")</p>
|
|
|
|
<p>is changed to</p>
|
|
|
|
<p>choice(menuAlarmStatNO_ALARM,"NO_ALARM")</p>
|
|
|
|
<p><b>recGblResetAlarms</b></p>
|
|
|
|
<p>a monitor for the STAT field is fired if either the STAT or SEVR changes.
|
|
Previously a monotor was fired only if the STAT changes.</p>
|
|
|
|
<p><b>dbAccess.c</b></p>
|
|
|
|
<p>In dbPutLinkValue, if the (out)link has MS property, the old severity was
|
|
propagated instead of the actual one. This is fixed by calling recGblSetSevr
|
|
with NSEV instead of SEVR of the source record.</p>
|
|
|
|
<p><b>mbboDirectRecord</b></p>
|
|
<ul>
|
|
<li>IVOV and IVOA are now fully supported. Behaviour is similar to other
|
|
output record types.</li>
|
|
<li>UDF behaviour is fixed: UDF is now reset after warm reboot, after
|
|
setting any of the BX fields in supervisory mode and after (successful)
|
|
reading from DOL in closed_loop mode. Also, UDF_ALARM is raised if UDF
|
|
has not yet been reset, as with other record types</li>
|
|
<li>LINK / INVALID alarm is raised if reading from DOL fails. This, also,
|
|
is similar to other output records.</li>
|
|
</ul>
|
|
|
|
<p><br>
|
|
<b>devVXStats.c</b></p>
|
|
|
|
<p>The stack size for cpuUsageTask was increased. The precious stack size was
|
|
too small for mv172s, which do not have a separate interrupt stack like the
|
|
mv167. The same problem may exist on other processors such as the
|
|
powerPC.</p>
|
|
|
|
<p><b>dbel.c</b></p>
|
|
|
|
<p>It was incorrectly reporting VALUE, ALARM and LOG for all events.</p>
|
|
|
|
<p><b>longoutRecord</b></p>
|
|
|
|
<p>Added fields drvl and drvh</p>
|
|
|
|
<p><b>aiRecord, calcRecord, calcoutRecord, selRecord, and subRecord</b></p>
|
|
|
|
<p>In alarm the definitions of hihi, high, low, lolo; are changed from float
|
|
to double.</p>
|
|
|
|
<p><b>aoRecord.c</b> <br>
|
|
</p>
|
|
<ul>
|
|
<li>The convert routine no longer sets udf false. Fetch_value does set udf
|
|
false when it successfully fetched a value. Thus udf is now only set
|
|
false when a new value is obtained.</li>
|
|
<li>RVAL/ROFF conversion: possible range overflow is fixed. convert(
|
|
) uses double arithmetics until the final assignment to RVAL.</li>
|
|
</ul>
|
|
|
|
<p><br>
|
|
<b>dfanoutRecord.c</b></p>
|
|
|
|
<p>A dbPutLink is attempted for all links even if a put for a previous link
|
|
fails. If a dbPutLink fails
|
|
recGblSetSevr(pdfanout,LINK_ALARM,MAJOR_ALARM) is called.</p>
|
|
|
|
<p><b>dbStaticLib</b></p>
|
|
|
|
<p>When dbPutString writes to the VAL field then udf is set false.</p>
|
|
|
|
<p><b>cvtFast</b></p>
|
|
|
|
<p>cvtLongToHexString now puts 0x in frount of the number and
|
|
cvtLongToOctalString writes a leading 0. <br>
|
|
</p>
|
|
|
|
<h2>Changes since 3.13.1</h2>
|
|
<b>tsSubr</b>
|
|
|
|
<p>There was a bug when converting ascii string format to time stamp. The bug
|
|
involved the year 00 appeared in the ascii string</p>
|
|
|
|
<p><b>Channel Access</b></p>
|
|
|
|
<p>1) A severe problem where the CA client did not exit a loop sending UDP to
|
|
a list of addresses if an error condition was returned from the system call
|
|
which sends a UDP frame was fixed. This problem was discovered during load
|
|
testing, and will be more likely to occur under heavy network loading
|
|
conditions.</p>
|
|
|
|
<p>2) A problem where the client library could fail and use a deallocated
|
|
data structure if a connection dropped while it was waiting to send a message
|
|
to a client was fixed.</p>
|
|
|
|
<p>3) The CA client now maintains a congestion avoidance threshold on UDP
|
|
search transmissions similar to the congestion avoidance algorithm employed
|
|
by modern version of TCP. There are also some small changes related to how
|
|
the search counters are maintained without allowing them to overflow. This
|
|
patch was made in R3.13.1 because I originally identified it as the fix for
|
|
(1) above, but it turned out to not be the root cause.</p>
|
|
|
|
<p>4) A bug fix was made for a problem where the CA repeater was inheriting
|
|
on HP-UX, and possibly other UNIX systems that are not Solaris, certain open
|
|
file descriptors when fork()/exec() are used to start the CA repeater.</p>
|
|
|
|
<p>5) Changes that allow CA to work on Microsoft Visual C++ 6.0 (which
|
|
includes a new win sock DLL and some changes in esoteric parts of the socket
|
|
API).</p>
|
|
|
|
<p>6) always inform client of "no write access" for a SPC_NOMOD fields.</p>
|
|
|
|
<p>7) calls to ca_printf removed from rsrv.</p>
|
|
|
|
<p>8) prevent UDP daemon from running damaged messages with TCP protocol and
|
|
visa-versa</p>
|
|
|
|
<p>9) use ipAddrToA() so that address print out does not come out byte
|
|
swapped on the PC</p>
|
|
|
|
<p>10) improved debug messages and added diagnostics</p>
|
|
|
|
<p>11) don't send an exception to client when bad request received over
|
|
UDP.</p>
|
|
<br>
|
|
|
|
|
|
<p><b>config</b></p>
|
|
<ul>
|
|
<li>Many changes.</li>
|
|
<li>Currently gdd and cas are not built.</li>
|
|
</ul>
|
|
<b>access security</b>
|
|
|
|
<p>A ca exception handler was added. Thus exceptions will no longer cause the
|
|
asCa task to suspend.</p>
|
|
|
|
<p><b>dbCa</b></p>
|
|
|
|
<p>A ca exception handler. Thus exceptions no longer cause dbCa task to
|
|
suspend.</p>
|
|
|
|
<p><b>dbScan.c</b></p>
|
|
|
|
<p>pevent_scan_list->scan_list.lock was not initialized. Amazingly it did
|
|
not cause a crash. Note that the lock is only used when the scan mechanism of
|
|
records are dynamically changed.</p>
|
|
|
|
<p><b>dbCommon.dbd</b> <br>
|
|
</p>
|
|
<ul>
|
|
<li>several extra definitions were changed from void * to correct struct
|
|
types.</li>
|
|
<li>ACKT was changed so it can be set by database configuration tools.</li>
|
|
</ul>
|
|
|
|
<p><br>
|
|
<b>dbStaticLib</b></p>
|
|
<ul>
|
|
<li>The DTYP field is always written.</li>
|
|
<li>The NoRun version now keeps record instances keeps all records of each
|
|
type in alphabetical order.</li>
|
|
<li>CALC fields are OK if either postfix or sCalcPostfix returns
|
|
success.</li>
|
|
</ul>
|
|
<b>breakpoint tables</b>
|
|
|
|
<p>Tables names were previously forced to be alphanumeric. This restriction
|
|
is removed.</p>
|
|
|
|
<p><b>drvTS.c</b> <br>
|
|
</p>
|
|
<ul>
|
|
<li>Removed potential infinite recursion from tsForceSoftSync().</li>
|
|
<li>Fixed bug where time sync UDP client was getting in a state where it
|
|
was using the response from the previous request, and ending up setting
|
|
the time 10 seconds back.</li>
|
|
</ul>
|
|
|
|
<p><br>
|
|
<b>drvSup.h</b></p>
|
|
|
|
<p>removed definition for reboot.</p>
|
|
|
|
<p><b>dbNotify</b></p>
|
|
|
|
<p>If dbPutNotify called dbProcess and dbProcess returned an error the
|
|
notify completion callback was called twice. This bug is fixed.</p>
|
|
|
|
<p><b>drvBB232</b></p>
|
|
|
|
<p>This support was defining storage twice. A bug in the current gcc compiler
|
|
supplied with tornado does not properl;y compile such code. The extra
|
|
definitions are removed.</p>
|
|
|
|
<p><b>aiRecord</b></p>
|
|
<ul>
|
|
<li>eoff was not being reinitialized when conversion related fields were
|
|
dynamically modified.</li>
|
|
<li>hyst and lalm are changed from float to double</li>
|
|
</ul>
|
|
<b>aoRecord</b>
|
|
<ul>
|
|
<li>eoff was not being reinitialized when conversion related fields were
|
|
dynamically modified.</li>
|
|
<li>hyst, lalm, hihi, high, low, lolo all changed from float to double</li>
|
|
</ul>
|
|
<b>calcRecord calcoutRecord selRecord subRecord</b>
|
|
|
|
<p>hyst and lalm changed from float to double</p>
|
|
|
|
<p><b>dfanoutRecord</b></p>
|
|
|
|
<p>hyst, lalm, hihi, high, low, lolo all changed from float to double</p>
|
|
|
|
<p><b>compressRecord</b></p>
|
|
|
|
<p>compressALG_N_to_1_Median (compress keeping median value) added.</p>
|
|
|
|
<p><b>mbbiDirectRecord</b></p>
|
|
|
|
<p>When just the record's severity changed, only monitors on the VAL fields
|
|
were posted, no monitors on the single bit fields.</p>
|
|
|
|
<p><b>devApsEr.c</b></p>
|
|
|
|
<p>ErGetTicks now locks while updating ticks</p>
|
|
|
|
<p><b>devCommonGpib</b> <br>
|
|
</p>
|
|
<ul>
|
|
<li>sscanf response now checked to be equal to 1 rather than just not
|
|
zero.</li>
|
|
<li>all mallocs changed to callocs. This is needed for the new unbundled
|
|
bitbus support.</li>
|
|
</ul>
|
|
<b>drvGpib.c</b>
|
|
|
|
<p>all mallocs changed to callocs. This is needed for the new unbundled
|
|
bitbus support.</p>
|
|
|
|
<p><b>bitbus support</b></p>
|
|
|
|
<p>This support is now unbundled. DO NOT use the version in base. This
|
|
includes the following</p>
|
|
<ul>
|
|
<li>devBBInteract.c</li>
|
|
<li>devBUG.dbd</li>
|
|
<li>devBitbusStats.dbd</li>
|
|
<li>devIObug.c</li>
|
|
<li>drvBB232.c</li>
|
|
<li>drvBB232.h</li>
|
|
<li>drvBitBus.c</li>
|
|
<li>drvBitBus.h</li>
|
|
<li>drvBitBusErr.h</li>
|
|
<li>drvBitBusInterface.h</li>
|
|
<li>drvMsg.c</li>
|
|
<li>drvMsg.h</li>
|
|
<li>drvRs232.h</li>
|
|
</ul>
|
|
NOTE: drvBitBus.h, drvBitBus.c, drvBitBusInterface.h, and drvBitBusErr.h
|
|
appear in both base and unbundled because drvGib uses it. Must be fixed
|
|
when gpib is unbundled.
|
|
|
|
<p><b>drvBBMsg.c drvBBMsg.c drvRs232.c drvTy232.h</b></p>
|
|
|
|
<p>Removedfrom base. Seemed to be old duplicate version of drvBB232.c or not
|
|
used at all.</p>
|
|
|
|
<p><b>devXxDig500Msg232.c</b></p>
|
|
|
|
<p>removed, was replaced by the digitel record type & device support</p>
|
|
|
|
<p><b>CAN and IPAC</b></p>
|
|
|
|
<p>This support has been available for some time as an unbundled product. It
|
|
is not longer included with base.</p>
|
|
|
|
<p><b>Allen Bradley</b></p>
|
|
|
|
<p>The allen bradley support has been available for some time as an unbundled
|
|
product. It is not longer included with base.</p>
|
|
|
|
<p><b>devOpt support</b></p>
|
|
|
|
<p>The following gpib support modules have been changed to fix compiler bug
|
|
for vxWorks 5.3:</p>
|
|
<ul>
|
|
<li>devAnalytekGpib.c</li>
|
|
<li>devK486Gpib.c</li>
|
|
<li>devXxDc5009Gpib.c</li>
|
|
<li>devXxDg535Gpib.c</li>
|
|
<li>devXxK196Gpib.c</li>
|
|
<li>devXxK263Gpib.c</li>
|
|
<li>devXxSkeletonGpib.c</li>
|
|
<li>devXxSr620Gpib.c</li>
|
|
</ul>
|
|
<b>mkdir.pl and rm.pl</b>
|
|
|
|
<p> getopt() changed to getopt "";</p>
|
|
|
|
<p><b>rc2.logServer</b></p>
|
|
|
|
<p>Moved export statements to the right place.</p>
|
|
|
|
<p><b>access security</b></p>
|
|
|
|
<p>Issue better error message if access security initialization fails.</p>
|
|
|
|
<p><b>makeBaseApp</b></p>
|
|
<ul>
|
|
<li>makeBaseApp.pl</li>
|
|
<br>
|
|
copy any non-Apps under $top; allow links for apptype directories
|
|
<ul>
|
|
<li>dbExample2.template</li>
|
|
</ul>
|
|
<br>
|
|
fixed mistake
|
|
<ul>
|
|
<li>makeIocCdCommands.pl</li>
|
|
</ul>
|
|
<br>
|
|
This now looks for all external products in config/RELEASE and generates
|
|
command to cd to product top and product bin.</ul>
|
|
<b>calcoutRecord</b>
|
|
|
|
<p>Under certain conditions (an input link referencing a PV on another ioc
|
|
and an unusually long ioc initialization), the calcout record would cause
|
|
an error during iocInit by attempting to dbScanLock a record
|
|
prematurely. This anomaly has been resolved with this version. No changes to
|
|
the functionality of the calcout record were made.</p>
|
|
|
|
<p><b>dbLoadTemplate</b></p>
|
|
|
|
<p>Allow pattern with no substitutions.</p>
|
|
|
|
<p><b>devAaoCamac.c</b></p>
|
|
|
|
<p>This had an error that prevented it from compiling</p>
|
|
|
|
<h2>Changes between beta12 and 3.13.1</h2>
|
|
<b><tt>iocLogClient</tt></b>
|
|
|
|
<p>If either of the environment variables EPICS_IOC_LOG_PORT or
|
|
EPICS_IOC_LOG_INET are not defined then iocLogDisable is set true, i.e.
|
|
logging is disabled. Also in the epics base distribution
|
|
EPICS_IOC_LOG_FILE_NAME and EPICS_IOC_LOG_INET are set to null.</p>
|
|
|
|
<p><b><tt>dbCaGetTimeStamp</tt></b></p>
|
|
|
|
<p>This is a new routine for database channel access links.</p>
|
|
|
|
<p><b><tt>drvTS</tt></b></p>
|
|
|
|
<p>The routine TSsetClockFromUnix was made global. Calling it forces a
|
|
resynchronization with a host time server. This is useful to <br>
|
|
force a master timing ioc to resynchronize.</p>
|
|
|
|
<p>Several bugs were fixed. Previously async clients did not sync properly
|
|
with a master timing ioc. Also if an async client syncing with a unix/ntp
|
|
server got out of sync by > 1 sec then it could get out of sync by 1 to 20
|
|
seconds for an indeterminate period of time.</p>
|
|
|
|
<p><b><tt>task_params.h</tt></b></p>
|
|
|
|
<p>Task priorities were changed so that no epics task has higher
|
|
priority than netTask. Definitions for IOEVENTSCAN and TIMESTAMP were
|
|
removed.</p>
|
|
|
|
<p><b><tt>histogram record</tt></b></p>
|
|
|
|
<p>Added new field PREC for display of double and float fields ULIM, LLIM,
|
|
SDEL, SVAL, SGNL, and WDTH. Added unsigned long fields HOPR and LOPR for
|
|
display of VAL array counts. Changed SDEL field from SPC_NOMOD to
|
|
SPC_RESET to allow start and stop of the watch dog timer.</p>
|
|
|
|
<p><b><tt>Sequencer</tt></b></p>
|
|
|
|
<p>The lex definitions have been changed so that definitions like</p>
|
|
<pre>#define ERRVALUE 9.90E+09</pre>
|
|
|
|
<p><br>
|
|
are accepted.</p>
|
|
|
|
<p>Initial values for static variables are now honored. Previously the syntax
|
|
was permitted but the initial value was ignored. <b>Note</b> that initial
|
|
values will give a compilation error if the "recursive" option is used
|
|
because the assignments are within the body of a struct {} definition; it
|
|
seemed worthwhile supporting the syntax for the non-recursive case.</p>
|
|
|
|
<p><b><tt>devMbbiDirectSoftRaw, devMbbiSoftRaw, devMbboDirectSoftRaw,
|
|
devMbboSoftRaw</tt></b> <br>
|
|
</p>
|
|
|
|
<p><tt>SHFT </tt>was made a prompt field and also modifiable. The VAL
|
|
field of mbboDirectRecord is now modifiable.</p>
|
|
|
|
<p>If the fields NOBT and SHFT are given values then this device support will
|
|
honor the MASK and SHFT fields just like hardware device support. To keep
|
|
compatibilty with old databases, if NOBT is 0 during init_record, mask is set
|
|
to the value 0xffffffff. Thus old databases will act like previously
|
|
<b>unless</b> the nobt field was set to a non-zero value.</p>
|
|
|
|
<p><b><tt>calcoutRecord</tt></b></p>
|
|
|
|
<p>No longer calls dbScanLock until interruptAccept is true.</p>
|
|
|
|
<p><b><tt>breakpoint tables</tt></b></p>
|
|
|
|
<p>Entering negative values failed. This bug is fixed.</p>
|
|
|
|
<p><b><tt>dbl("<record type>","<output file>","<field
|
|
list>")</tt></b></p>
|
|
|
|
<p>The vxWorks console command dbl now allows an additional argument, which
|
|
is a list of field names.</p>
|
|
|
|
<p>For example</p>
|
|
|
|
<p>iocexample> dbl "ai",0,"DESC SCAN" <br>
|
|
mrk:aiExample,"Analog input","Passive" <br>
|
|
mrk:aiExample1,"Analog input No. 1","Passive" <br>
|
|
mrk:aiExample2,"Analog input No. 2","Passive" <br>
|
|
mrk:aiExample3,"Analog input No. 3","Passive" <br>
|
|
</p>
|
|
|
|
<h4>June 15, 1998</h4>
|
|
All major functionality that will be in R3.13 is now in place. It has been
|
|
build on solaris, sunos, HPUX, alpha, SG, and winXX. This release is still
|
|
called a beta release but will become 3.13.1 as soon as it has been used on a
|
|
few production systems (bug fixes will be made if necessary)
|
|
|
|
<p>The Application Developer's Guide is a major revision of the 3.12 edition.
|
|
The latest version is for beta12 base release. It is available in pdf
|
|
(adobe acrobat reader) and in postscript. The pdf format is nice for online
|
|
viewing and postscript for generating a hard copy.</p>
|
|
|
|
<p>LANL has a revision of the Record Reference Manual available. See the LANL
|
|
EPICS documentation.</p>
|
|
|
|
<p>The document "<a
|
|
href="http://www.aps.anl.gov/asd/controls/epics/EpicsDocumentation/AppDevManuals/iocAppBuildSRcontrol3_13_0beta12.html">EPICS
|
|
IOC Applications: Building and Source/Release Control</a>" provides guidlines
|
|
for developing applications with 3.13.</p>
|
|
|
|
<h2>Changes between beta11 and beta12</h2>
|
|
|
|
<h3>IOC Applications: Building</h3>
|
|
The following explains changes that need to be made to existing applications
|
|
that followed the <a
|
|
href="http://www.aps.anl.gov/asd/controls/epics/EpicsDocumentation/AppDevManuals/iocAppBuildSRcontrol3_13_0beta12.html">EPICS
|
|
IOC Applications: Building and Source/Release Control</a>. guidelines. See
|
|
the new version of this manual for details.
|
|
|
|
<p>Before switching applications to beta12 it is <b>STRONGLY</b> recommended
|
|
that you execute:</p>
|
|
|
|
<blockquote>
|
|
<pre>cd <top>
|
|
gnumake clean uninstall</pre>
|
|
</blockquote>
|
|
|
|
<h4>Changes to <top>/config:</h4>
|
|
|
|
<dl>
|
|
<dt><tt>CONFIG_APP</tt></dt>
|
|
<dd>Remove the following lines:</dd>
|
|
</dl>
|
|
|
|
<blockquote>
|
|
<pre>ifndef T_A
|
|
T_A = $(HOST_ARCH)
|
|
endif #ifndef T_A</pre>
|
|
</blockquote>
|
|
<dl>
|
|
<dt><tt>RELEASE</tt></dt>
|
|
<dd>If desired add a definition for <tt>TEMPLATE_TOP</tt></dd>
|
|
<dt><tt>RULES_TOP RULES.Db RULES.ioc RULES.iocBoot</tt></dt>
|
|
<dd>These no longer exists in base. Replace your version with the
|
|
version from:</dd>
|
|
</dl>
|
|
|
|
<blockquote>
|
|
<pre><base>/templates/makeBaseApp/top/config</pre>
|
|
</blockquote>
|
|
<dl>
|
|
<dt><tt>RULES_TOP</tt></dt>
|
|
<dd>Remove the rules for creating soft links.</dd>
|
|
<dt><tt>makeDbDepends.pl, makeIocCdCommands.pl, replaceVAR.pl</tt></dt>
|
|
<dd>Copy the versions from
|
|
<tt><base>/templates/makeBaseApp/top/config</tt></dd>
|
|
<dt><tt>makeSoftLinks</tt></dt>
|
|
<dd>Remove this file</dd>
|
|
</dl>
|
|
|
|
<h4>Changes to xxxApp/src</h4>
|
|
Move the following definitions from Makefile.Vx to Makefile.Host:
|
|
|
|
<blockquote>
|
|
<pre>USER_DBDFLAGS
|
|
RECTYPES
|
|
DBDEXPAND
|
|
DBDNAME
|
|
MENUS</pre>
|
|
</blockquote>
|
|
|
|
<h4>Changes to xxxApp/Db</h4>
|
|
Rules for DBFROMTEMPLATE and INDDBFROMTEMPLATE no longer exist. See the new
|
|
documentation of makeBaseApp for details of what the make rules are for
|
|
databases.
|
|
|
|
<h4>Changes to iocBoot and iocBoot/iocxxx</h4>
|
|
iocBoot no longer needs a generated nfs.cmd file
|
|
|
|
<p>iocBoot/iocxxx no longer contains soft links. Instead the following is
|
|
done:</p>
|
|
<ul>
|
|
<li>A file cdCommands is generated which provides full path names for
|
|
vxWorks cd commands</li>
|
|
<li>The ld commands just give a file name with no path</li>
|
|
<li>The dbLoadxxx commands must specify "../../xxxApp"</li>
|
|
</ul>
|
|
|
|
<h3>aoRecord</h3>
|
|
This did not work properly if DOL is a channel access link that fails.
|
|
|
|
<h3>Semaphores</h3>
|
|
Most locking semaphores have been changed from semBCreate to semMCreate with
|
|
the options : <br>
|
|
SEM_DELETE_SAFE|SEM_INVERSION_SAFE|SEM_Q_PRIORITY
|
|
|
|
<p>A performance test showed that executing</p>
|
|
|
|
<blockquote>
|
|
<pre> semTake(sem,WAIT_FOREVER);
|
|
semGive(bsem);</pre>
|
|
</blockquote>
|
|
in a 25MHZ mv167 took (4.4 ,7.8) microseonds when
|
|
(semBCreate,semMCreate) was used. The extra options as well as allowing a
|
|
task to lock recursively are worth the difference in performance.
|
|
|
|
<h3>Task Priorities</h3>
|
|
The priority of the channel access client for database links was changed from
|
|
100 to 68, which makes it lower than all scan tasks but higher than the
|
|
sequencer or any channel access tasks.
|
|
|
|
<h4>cvtDoubleToString</h4>
|
|
This was changed to print numbers with precision<=8 and magnitude <1e16
|
|
in fixed format with up to 3 digits after the decimal point. As an example if
|
|
PREC=1 and a number is 363000000.1 previously it was convetred to
|
|
|
|
<p>363000000</p>
|
|
|
|
<p>Now it is converted to</p>
|
|
|
|
<p>363000000.1</p>
|
|
|
|
<p>All you RF folks can cheer.</p>
|
|
|
|
<h3>Access Security</h3>
|
|
Previously it was possible to crash an IOC if access security was restarted
|
|
after iocInit. This is now fixed. Two major changes were made.
|
|
<ol>
|
|
<li>asCaTask is no longer deleted and restarted. Instead it just clears all
|
|
channels and than adds the new channels</li>
|
|
<li>The locking mechanism was changed and made more roibust and easier to
|
|
understand.</li>
|
|
<li>Fixed bug that caused asRegisterClientCallback to fail on UNIX.</li>
|
|
<li>asLib_lex.l changed to allow more characters(like dbLoadxxx)</li>
|
|
<li>Fixed bug that could cause deadlock when an ASG field is changed at run
|
|
time.</li>
|
|
</ol>
|
|
Access Security now supports macro substitutions. A new vxWorks shell command
|
|
is: <br>
|
|
|
|
<ul>
|
|
asSetSubstitutions("var1=sub1,var2=sub2,...")</ul>
|
|
See the Application developer's Guide for details about access security.
|
|
|
|
<h3>tsdefs.h and tsSubr.c</h3>
|
|
tsTextToStamp and tsTimeTextToStamp no longer modify the pointer or the
|
|
string referenced by pText.
|
|
|
|
<p>The nextField routines used by tsSubr were moved inside tsSubr.c and
|
|
made static routines.</p>
|
|
|
|
<h3>drvTS</h3>
|
|
Checked for Y2K complience. It turns out it was even ok when NTP time
|
|
overflows in 2036. However it was modified so that no overflows should occur
|
|
while converting between NTP, UNIX, and EPICS epochs. In addition the
|
|
conversion of fractions of a second to nanaoseconds was changed and
|
|
formatting was changed so that interesting code does not run off right side
|
|
of page. Hopefully EPICS base is now fine for Y2K. In fact it should be fine
|
|
(as far as time is converned) until the Unix epoch overflows a 32 unsigned
|
|
integer in the year 2106. <br>
|
|
|
|
|
|
<h3>nextFieldSubr.c</h3>
|
|
Removed from base.
|
|
|
|
<h3>vxWorks</h3>
|
|
Base now builds with either vxWorks 5.2 or vxWorks 5.3. The default is to
|
|
build vxWorks 5.3. In CONFIG_COMMON a new definition "VX_IS_TORNADO = 1" is
|
|
present. If this statemant is commented out then vxWorks 5.2 is assumed.
|
|
|
|
<h3>makeBaseApp</h3>
|
|
Only the perl version is now supported. Due to encouragement from Rozelle
|
|
Wright (LANL) and the developers at BESSY, makeBaseApp now uses template
|
|
files instead of being one huge ugly perl script. Ralph Lange (BESSY)
|
|
made major changes to makeBaseApp. It supports two sets of templates provided
|
|
with base (simple and example) as well as templates stored elsewhere. Thus
|
|
each site can add new sets of template files.
|
|
|
|
<p>See the new WWW documentation on Application Source Release for details</p>
|
|
|
|
<h3>dbStaticLib</h3>
|
|
The include path now supports the unix convention that an empty directory
|
|
name means the current directory. Thus the following are OK
|
|
<pre>-I nnn::mmm # Current directory is between nnn and mmm
|
|
-I :nnn # Current directory is first
|
|
-I nnn: # Current directory is last</pre>
|
|
The lex grammer was changed so that quoted strings can contain any ascii
|
|
character except a quote. A quote itself can be given as the escape sequence
|
|
\". This same change was made to dbLoadRecords and dbLoadTemplates.
|
|
|
|
<p>For all fields in a .db file, a non null string is considered as not the
|
|
default.</p>
|
|
|
|
<p>For winNT the path seperator is a ;</p>
|
|
|
|
<p>Field attributes (psuedo fields) are now supported. In particular RTYP
|
|
(record type) and VERS (version) are now supported. In addition a new request
|
|
type DBR_CLASS is supported. See Application Developer's guide for
|
|
details.</p>
|
|
|
|
<h3>Runtime database access</h3>
|
|
<ul>
|
|
<li>A new routine dbGetLinkDBFtype is now available. It returns the field
|
|
type of a database link.</li>
|
|
<li>dbNotify was fixed to work correctly for putNotify as well as put.</li>
|
|
<li>scanppl now accepts an argument <tt>rate</tt>. scanpel accepts an
|
|
argument <tt>event_number</tt>.</li>
|
|
</ul>
|
|
|
|
<h3>base.dbd</h3>
|
|
<ul>
|
|
<li>Soft raw device support is uncommented.</li>
|
|
<li>Device support for the Allen Bradley SLC is changed.It is now:</li>
|
|
</ul>
|
|
<pre>#device(ai,AB_IO,devAiAbSlcDcm,"AB-SLC500DCM")
|
|
#device(ai,AB_IO,devAiAbSlcDcmSigned,"AB-SLC500DCM-Signed")
|
|
#device(ao,AB_IO,devAoAbSlcDcm,"AB-SLC500DCM")
|
|
#device(longin,AB_IO,devLiAbSlcDcm,"AB-SLC500DCM")
|
|
#device(longout,AB_IO,devLoAbSlcDcm,"AB-SLC500DCM")</pre>
|
|
|
|
<h3>initHooks</h3>
|
|
Changed to support initHookRegister. See Application Developer's Guide for
|
|
details. The 3.13.0beta11 version explains the new method. Note that to use
|
|
the new the startup file must contain the statement:
|
|
<ul>
|
|
</ul>
|
|
<pre>ld < bin/initHooks.o</pre>
|
|
If you have your own version of initHooks.c it should be changed to support
|
|
the new features. At a minumum the statement <br>
|
|
|
|
<ul>
|
|
</ul>
|
|
<pre>void initHooks( int state)</pre>
|
|
must be changed to <br>
|
|
|
|
<pre> void initHooks( initHookState state)</pre>
|
|
|
|
<h3>menuAlarmStat.dbd</h3>
|
|
The no alarm string changed from "" to "NO_ALARM"
|
|
|
|
<h3>Linear Conversion for ai and ao records:</h3>
|
|
Before beginning it should be stated that the previous linear conversion
|
|
method is still valid.
|
|
|
|
<p>The following, which is designed by Benjamin Franksen at BESSY, is now the
|
|
recommended method:</p>
|
|
|
|
<p>A new field EOFF exists. The new linear conversion algorithm is
|
|
now</p>
|
|
<ul>
|
|
</ul>
|
|
<pre> VAL = AVAL * ESLO + EOFF</pre>
|
|
AVAL is the raw value adjusted by ASLO and AOFF.
|
|
|
|
<p>Thus device support should now compute ESLO and EOFF instead of ESLO and
|
|
ROFF.</p>
|
|
|
|
<p>For example let an ADC be a 16 bits adc with raw values between -32767 and
|
|
32767.</p>
|
|
<ul>
|
|
</ul>
|
|
<pre>ESLO = (EGUH - EGUL)/65535.0;
|
|
EOFF = 0.0;</pre>
|
|
NOTES:
|
|
<ul>
|
|
<li>Device support may compute either ROFF or EOFF but not both.</li>
|
|
<li>Record support sets EOFF = EGUL before calling the device init_record.
|
|
This is done so that for old device supports (those that do not set the
|
|
EOFF field) the above formula becomes:
|
|
<ul>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<pre>VAL = AVAL * ESLO + EGUL</pre>
|
|
The original bi-polar adc device support modules added a "bias" to the
|
|
raw value so that the raw value is >= 0. When they were written neither
|
|
RVAL or EOFF existed.
|
|
|
|
<h3>RISC architectures</h3>
|
|
Some changes were made to build on RISC architectures. A new include and
|
|
source file (adjustment.h and adjustment.c) were created to aid this support.
|
|
We can thank Peregrine McGehee for this new support.
|
|
|
|
<h3>errlog</h3>
|
|
This is a replacement for the old code that implemented errMessage,
|
|
errPrintf, and epicsPrintf. It provides for multiple system wide error
|
|
loggers. The existing iocLog has been modified to use the new code. The new
|
|
code supports the old calls and adds some new calls. See Application
|
|
Developer's guide for details. <br>
|
|
|
|
|
|
<h3>devABSLCDCM</h3>
|
|
Changed Scl to Slc wherever this occured. Added support for signed 16 bit
|
|
analog values. Stephanie Allison (SLAC) made these changes. <br>
|
|
|
|
|
|
<h3>devMpc</h3>
|
|
Removed from base.
|
|
|
|
<h3>devVXStats</h3>
|
|
Major rewrite of this routine. It computes the cpu usage via a low priority
|
|
taks rather than using spy. It reports file descriptor usage rather than tcp
|
|
connections (this is what is actually measures). The format of the INP ,and
|
|
OUT fields has changed since the previous version. The new device
|
|
definitions are:
|
|
<ul>
|
|
</ul>
|
|
<pre>device(ai,INST_IO,devAiVXStats,"VX stats")
|
|
device(ao,INST_IO,devAoVXStats,"VX stats")</pre>
|
|
The INP fields now have the form
|
|
<ul>
|
|
</ul>
|
|
<pre>field(INP,"@memory")
|
|
field(INP,"@cpu")
|
|
field(INP,"@fd")</pre>
|
|
The OUT fields now have the form
|
|
<ul>
|
|
</ul>
|
|
<pre>field(OUT,"@memoryScanPeriod")
|
|
field(OUT,"@fdScanPeriod")
|
|
field(OUT,"@cpuScanPeriod")</pre>
|
|
The source file has comments showing a sample database.
|
|
|
|
<h3>devSymb</h3>
|
|
This has been drastically changed. Look at
|
|
<base>/src/dev/symbDev/README for details.
|
|
|
|
<h3>CA Client Library</h3>
|
|
Problems where 3.13.beta11 clients were unable to connect to 3.11 and receive
|
|
the correct native type have been fixed. The CPU is now consumed more
|
|
efficently by CA tasks waiting in select() under vxWorks. The client lib now
|
|
detects an IOC reboot when that reboot is faster that EPICS_CA_CONN_TMO. CA
|
|
now runs better on systems without local interface query capabilities
|
|
(currently only cygwin32).
|
|
|
|
<h3>C++ Channel Access Server - CAS</h3>
|
|
The constructor for class casPV no longer requires a reference to the server.
|
|
For backward compatibility a reference to the server may still be supplied,
|
|
but it will not be used. The C++ Portable Channel Access Server Library now
|
|
builds on VMS. A really bad bug was fixed in the example directory server
|
|
when clients use PV names with ".xxxx" (a field name) in them.
|
|
|
|
<h3>Global Data Descriptor Class - GDD (only used by the C++ CA server)</h3>
|
|
A bug occurring when the primitive type was changed to/from aitSting and the
|
|
constructor/destructor member functions for class aitString were not run has
|
|
been fixed. A bug occurring when class GDD changed the bounds on the
|
|
destination GDD has been fixed. A smart pointer class for GDD was added. This
|
|
class automatically maintains the GDD's reference count so that the GDD will
|
|
not be deleted until the last smart pointer class pointing to it is deleted.
|
|
Moving this responsibility to a class will greatly reduce the probability of
|
|
making a mistake in application code.
|
|
|
|
<h3>WIN32 (PC) Port of EPICS</h3>
|
|
Winsock II is now required. This allows CA to properly execute
|
|
EPICS_CA_ADDR_LIST=YES. Windows NT 4.0 comes with Winsock II. A properly
|
|
functioning Winsock II for Windows 95 can be obtained form
|
|
http://www.microsoft.com/windows95/info/ws2.htm. Beware of buggy versions of
|
|
Win95 Winsock II that are sometimes installed by 3rd party products. A static
|
|
(no EPICS DLLs) build of EPICS on WIN32 is now supported. The EPICS CA
|
|
repeater is now automatically started under WIN32 if it isnt running. At Ken
|
|
Evans' request GUI programs will this release _not_ allocate a console for
|
|
messages from EPICS libraries unless base is compiled with host optimisation
|
|
turned off (HOST_OPT=NO). If you would like to see messages from EPICS base
|
|
libraries when using an optimised build, then start GUI programs from a DOS
|
|
window.
|
|
|
|
<h3>EPICS Environment Variables that Include Host IP Addresses</h3>
|
|
It is now possible to use DNS host names in addition to dotted IP addresses
|
|
in EPICS environment variables. All operating systems that have a DNS client
|
|
implementation should allow this. Currently only vxWorks does not, and so if
|
|
you would like to use real host names instead of dotted IP addresses on
|
|
vxWorks you must use the "hostAdd()" function to add host name / IP address
|
|
pairs from your system start-up script. For Example: hostAdd
|
|
("mercury_dirigible","100.20.30.40") putenv
|
|
("EPICS_IOC_LOG_INET=mercury_dirigible")
|
|
|
|
<h3>GCC 2.8</h3>
|
|
The host portions of EPICS now build correctly with GCC 2.8
|
|
|
|
<h2>Changes between beta4 and beta11</h2>
|
|
|
|
<h4>Support for win95 and winNT</h4>
|
|
Epics base now builds on windows platforms
|
|
|
|
<h4>GDD and Portable Channel Access Server</h4>
|
|
The gdd library and the portable channel access server now build on all
|
|
platforms, except SGI and cygwin32, listed above. This also means that C++ is
|
|
supported on these platforms.
|
|
|
|
<h4>Application Developer's Guide</h4>
|
|
The chapter "Building IOC Applications" is gone. It is replaced by the
|
|
document "EPICS IOC Applications, Building and Source/Release Control". Other
|
|
changes are minor. Following is a brief list:
|
|
<ul>
|
|
<li>Database Definition: General Rules describes escape sequences</li>
|
|
<li>Record Support: All record support methods that accept DBADDDR * now
|
|
use the routine dbGetFieldIndex instead of comparing addresses. IOn
|
|
addition the get_enum_str routines now use paddr->pfield as the field
|
|
address instead of the field in the record.</li>
|
|
<li>Runtime Database Access: Gives brief description of DBR_PUT_ACKT and
|
|
DBR_PUT_ACKS. Also describes new routine dbGetPdbaddrFromLink</li>
|
|
<li>The chapter "IOC Initialization" describes how to configure the error
|
|
message logger.</li>
|
|
</ul>
|
|
<b>NOTE:</b>The initHooks described in the appDevGuide is not in beta11. In
|
|
beta11 initHooks is the same as previous releases. The new version will be in
|
|
the next release. <br>
|
|
<br>
|
|
|
|
|
|
<h4>Compiler warning messages:</h4>
|
|
All of base except drv/old is now being built with
|
|
<ul>
|
|
</ul>
|
|
<pre>VX_WARN_YES = -Wall -pedantic -ansi</pre>
|
|
Most warning messages have now been eliminated. The remaining messages should
|
|
not be removed without looking hard at code.
|
|
|
|
<h4>recSubArray</h4>
|
|
get_control_double routine returned incorrect values for fields INDX and NELM.
|
|
|
|
<h4>devAiStats</h4>
|
|
This is now renamed devVXStats. The new device definitions are:
|
|
<pre>device(ai,VME_IO,devAiVXStats,"VX stats")
|
|
device(ao,VME_IO,devAoVXStats,"VX stats")</pre>
|
|
Thus if an application has an old base.dbd and baseLIBOBJS including
|
|
definitions for this device support they must be modified.
|
|
|
|
<h4>SysMon device support</h4>
|
|
This is removed from base. It is for APS designed and build VME create system
|
|
monitoring. The support code is available from APS if needed. NOTE: In some
|
|
beta releases baseLIBOBJS, had an include for devSysmon.o. Applications using
|
|
an old version of baseLIBOBJS will not build until this statement is deleted.
|
|
|
|
<h4>dbToRecordtypeH</h4>
|
|
The enums for menus had a comma after last item.
|
|
|
|
<h4>pulseTrainRecord</h4>
|
|
recGblInitConstantLink for sgl was referencing wrong field.
|
|
|
|
<h4>gphLib</h4>
|
|
This did not properly support multiple clients in multi-thread environment.
|
|
|
|
<h4>dbPvdLib</h4>
|
|
Modified to be faster.
|
|
|
|
<h4>devMz8311</h4>
|
|
Use maxCards from module_types.h instead of a #define
|
|
|
|
<h4>calcRecord</h4>
|
|
Allow CALC to be 40 characters. Increase rpbuf from 184 to 200
|
|
|
|
<h4>mbbiDirectRecord</h4>
|
|
Add call to refresh_bits.
|
|
|
|
<h4>mbbxDirectRecord</h4>
|
|
Bx becomes no prompt for mbbi and prompt for mbbo. It was the reverse before.
|
|
|
|
<h4>calcoutRecord</h4>
|
|
A new record type that replaces old wait record. It is like a calc record
|
|
with an output and a delay. It makes the wait record obsolete.
|
|
|
|
<h4>dbAccess</h4>
|
|
dbGetPdbAddrFromLink is a new routine. It returns NULL for all except LINK_DB
|
|
links, for which it returns the address of the associated DB_ADDR structure.
|
|
|
|
<h4>escape characters in database files</h4>
|
|
dbLoadDatabase, dbLoadRecords, and dbLoadTemplate all allow the standard C
|
|
escape sequences in quoted strings. For example a string can contain: "\x00
|
|
\27 \t" Thus these sequences pass though the lexical analyzer .
|
|
|
|
<h4>dbTranslateEscape</h4>
|
|
A new routine in libCom. It is used to translate escape sequences. It is
|
|
defined in file epicsString.h. It typical place to use this is on parm fields
|
|
that contain escape sequences like "\x00 \27 \t".
|
|
|
|
<h4>Slow booting</h4>
|
|
iocs with big databases were taking a long time to boot. It was discovered
|
|
that allocating and then freeing small amounts of memeory frequently resulted
|
|
in a VERY long memory free list. This is now fixed.
|
|
|
|
<h4>boRecord, mbboRecord</h4>
|
|
init_record now initialized the RVAL field.
|
|
|
|
<h4>ProcessCallback</h4>
|
|
Benjamin Franksen at BESSY reported a serious bug in the routine
|
|
ProcessCallback (not used in base). It has been fixed.
|
|
|
|
<h4>CALC fields</h4>
|
|
postfix and calcPerform (used by calcRecord) have been changed so that a 0
|
|
byte now ends the postfix expression. Also if postfix detects an illegal
|
|
expression it generates a 0 length postfix string. When calcPerform is given
|
|
a 0 length string it returns a error status. Thus calcRecord no longer causes
|
|
the IOC to crash if an illegal CALC fields is loaded.
|
|
|
|
<h4>Etc.</h4>
|
|
Many other minor problems, bugs, etc. were fixed. <br>
|
|
|
|
<hr>
|
|
|
|
<h1>Notes for Release 3.13 of EPICS Base</h1>
|
|
<hr>
|
|
For Release 3.13 major changes have been made to EPICS base. The IOC
|
|
Application Developer's Guide has been extensively modified and now describes
|
|
release 3.13. If you are upgrading for a 3.12.xxx or earlier release you must
|
|
obtain and read the new App Dev Guide.
|
|
|
|
<p>In porting EPICS to multiple architectures, the previous method of using
|
|
utilities to convert the database definition files to a binary file
|
|
(default.dctsdr) caused problems. The problem is that the binary file is
|
|
created on one architecture and used on another. This has worked so far for
|
|
sun4 and hp hosts combined with motorola 68xxx processors. As support for
|
|
more host and more ioc architectures is developed problems are appearing.
|
|
This paper describes changes that solve the problems.</p>
|
|
|
|
<p>Because the changes result in extensive changes to database access, other
|
|
changes are also made. The file syntax is changed. The internal database
|
|
structures are simplified and also changed to make it easier to support
|
|
runtime add/delete of record types and record instances.</p>
|
|
|
|
<h3>Goals</h3>
|
|
<ul>
|
|
<li>Allow database definition without an EPICS generated binary file.</li>
|
|
<li>Change internal database structures so that runtime add/delete of
|
|
record types and record instances is possible.</li>
|
|
<li>Allow each ioc to load and initialize only the record, device, and
|
|
driver support it actually uses.</li>
|
|
</ul>
|
|
|
|
<h3>Backward Compatibility</h3>
|
|
<ul>
|
|
<li>Minimal changes to existing record/device/driver support. A section
|
|
below describes necessary changes.</li>
|
|
<li>Provide tools to generate new database files from existing
|
|
default.dctsdr</li>
|
|
<li>No or almost no incompatible changes to the dbStatic API. New
|
|
capabilities are of course allowed.</li>
|
|
</ul>
|
|
|
|
<h3>Incompatibilities</h3>
|
|
<ul>
|
|
<li>DCT is no longer supported. A TCL/TK replacement is now available.</li>
|
|
<li>The sdr file format (.database files) is no longer supported.</li>
|
|
<li>The old DCT short form format is no longer supported.</li>
|
|
<li>The only way to load record instance definitions into an ioc is the
|
|
record instance format, which is exactly the same as the GDCT .db
|
|
format.</li>
|
|
<li>Any user written code that accesses internal database structures, i.e.
|
|
any code that uses anything described in Chapter 11 (Database Structures)
|
|
of the old Application Developers Guide will have to be changed.</li>
|
|
</ul>
|
|
|
|
<h2>Overview of new database support</h2>
|
|
EPICS defines a set of database file formats. In addition any of these files
|
|
can contain include statements. For each ioc, the application developer will
|
|
create a set of files specifying the record types, devices, and drivers
|
|
needed for that ioc. Normally a master file will be created which consists of
|
|
include statements that bring in record, device, and driver definitions.
|
|
Default configurations can be provided for new users or for particular
|
|
applications.
|
|
|
|
<p>Database configuration and utility tools access the database via the
|
|
static database access library. This library reads the files. It provides
|
|
routines for reading the information in the database and for creating and
|
|
modifying record instances. Database definition files can be read
|
|
incrementally.</p>
|
|
|
|
<p>Other database configuration tools (capfast, relational database systems,
|
|
object oriented databases, etc.) can also be used as long as they generate
|
|
record instances in the format described below. In this case, however, it is
|
|
still necessary to generate the other files because they are needed by
|
|
database access and for record and device support modules.</p>
|
|
|
|
<p>Tools are provided that generate C code from the database files. Header
|
|
files are generated for menu and record type definitions. These header files
|
|
are used by record and device support. In addition the record type
|
|
definitions contain code which computes field offsets and sizes and record
|
|
sizes. This code is compiled by the same cross compiler that is used to
|
|
compile other ioc code. Thus cross platform compatibility is achieved.</p>
|
|
|
|
<p>In order to initialize an ioc, all files needed by that ioc have to be
|
|
loaded. It is also necessary to load the record/device/driver support
|
|
modules.</p>
|
|
|
|
<p>Everything is designed so that the following are possible:</p>
|
|
<ul>
|
|
<li>It is easy to tailor record/device/driver support individually for each
|
|
ioc.</li>
|
|
<li>It is possible to incrementally add definitions. For example database
|
|
configuration tools do NOT have to load all definitions at startup. New
|
|
definitions can be read at any time. The underlying structures are
|
|
designed so that it is possible to add new definitions after an ioc is
|
|
initialized. Note however that additional changes will be needed after
|
|
this project is complete before on-line add and delete are possible.</li>
|
|
<li>It is possible to completely unbundle record support, device support,
|
|
and driver support. Again work will remain before this is a reality.</li>
|
|
</ul>
|
|
An additional feature is that, for database configuration tools, record
|
|
instance numeric fields and menu fields are stored as character strings. This
|
|
solves the following problems.
|
|
<ul>
|
|
<li>Rounding problems caused by converting from string to float and then
|
|
back to string disappear.</li>
|
|
<li>For integer fields the user can use the standard c conventions of
|
|
preceding the value with 0x for hex or 0 for octal. Since the string
|
|
itself is stored, the value will always appear with the prefix.</li>
|
|
<li>Macro definitions are allowed.</li>
|
|
</ul>
|
|
Another feature is is that it is now possible to distinguish link constants
|
|
with a value of 0 from links that have never been given a value.
|
|
|
|
<p>Other changes have been made while the opportunity was available.</p>
|
|
<ul>
|
|
<li>The config files have been changed considerably. Base now has it's own
|
|
config directory. Extensions (not implemented) can use the config from
|
|
the version of base against which it is built as well as supply
|
|
additional config files.</li>
|
|
<li>Field names are no longer limited to four characters. It is NOT a good
|
|
idea to use this feature until it has been checked against existing
|
|
channel access clients. If fact it has not been tested at all.</li>
|
|
<li>The record support modules have been renamed from recXxx.c to
|
|
xxxRecord.c. This the name of the database file, include file, and source
|
|
file are the same. Only the extensions are different.</li>
|
|
<li>All files in base/include have been moved to an appropriate base/src
|
|
directory. These files are now installed into base/include.</li>
|
|
</ul>
|
|
|
|
<h2>Database Definition File format</h2>
|
|
Formats are defined for the following:
|
|
<ul>
|
|
<li>Menu choices.</li>
|
|
<li>Record type description</li>
|
|
<li>Device choice</li>
|
|
<li>Driver choice</li>
|
|
<li>Breakpoint Conversion Table</li>
|
|
<li>Record Instance.</li>
|
|
</ul>
|
|
See the Application Developer's Guide for details.
|
|
|
|
<p>The menu choices replace the existing global, record, and conversion
|
|
choices. The global and record choices are very similar and thus are easy to
|
|
combine. The method of handling the old conversion choices is described
|
|
below. That section also describes the breakpoint tables.</p>
|
|
|
|
<p>The record type description format has been completely changed. It now has
|
|
a "real" syntax. It should be MUCH easier to generate new definitions.</p>
|
|
|
|
<p>The device choice and driver support definitions are defined so that it is
|
|
easy to provide incremental definitions.</p>
|
|
|
|
<p>The record instance format is an extension of the 3.12.beta13 and later
|
|
GDCT .db format.</p>
|
|
|
|
<p>Path and include statements are supported. This provides a powerful tool
|
|
for combining definitions from many sources. The path is a unix style path,
|
|
i.e. a colon separated list of directory names.</p>
|
|
|
|
<h2>default.dctsdr conversion tools</h2>
|
|
NOTES
|
|
<ul>
|
|
<li>In the following default.dctsdr is optional. If not given the tool just
|
|
looks for the file "default.dctsdr" in the current directory.</li>
|
|
<li>All output files are placed in the directory from which the tool is
|
|
executed.</li>
|
|
</ul>
|
|
The following tools are provided:
|
|
<ul>
|
|
<li>sdr2gblmenu [default.dctsdr]</li>
|
|
<br>
|
|
All global menus are written as separate files.
|
|
<ul>
|
|
<li>sdr2recordtype record_type record_type.h [default.dctsdr]</li>
|
|
</ul>
|
|
<br>
|
|
A record type definition file is generated.
|
|
<ul>
|
|
<li>sdr2device [default.dctsdr]</li>
|
|
</ul>
|
|
<br>
|
|
All device definitions are placed in a file called device.dbd
|
|
<ul>
|
|
<li>sdr2driver [default.dctsdr]</li>
|
|
</ul>
|
|
<br>
|
|
All driver definitions are placed in a file called driver.dbd</ul>
|
|
For all utilities the required database definition files are generated from a
|
|
dctsdr file from a previous epics release. A dctsdr file can be specified or
|
|
else the utilities can be run in a directory which contains default.dctsdr
|
|
(or a soft link with that name). sdr2recordtype also requires the header file
|
|
generated by a previous epics release.
|
|
|
|
<h2>Conversions - replacement for DBF_CVTCHOICE</h2>
|
|
Let's briefly review database conversion, i.e. the LINR field for ai and ao
|
|
records.
|
|
|
|
<p>The allowed conversions are:</p>
|
|
<ol>
|
|
<li>None</li>
|
|
<li>Linear</li>
|
|
<li>Breakpoint Tables</li>
|
|
</ol>
|
|
The main complication results from the breakpoint tables. Previously EPICS
|
|
handled breakpoint tables as follows:
|
|
|
|
<p>The user prepares files in one of two formats: The first is just a list of
|
|
"raw value, eng units value". The second format is a file with a header line
|
|
followed by a table of raw data values that represent data at equally spaced
|
|
engineering unit values. In either case the ascii data is converted to an
|
|
internal binary format containing breakpoint tables. This data is part of
|
|
default.dctsdr.</p>
|
|
|
|
<p>Here is how breakpoint table are now handled.</p>
|
|
<ul>
|
|
<li>A new file format is defined for breakpoint tables.</li>
|
|
<li>A conversion tool, makeBpt, takes as input the second format described
|
|
above and creates the breakpoint table in the new file format.</li>
|
|
<li>Previously EPICS automatically provided breakpoint tables for
|
|
TypeJdegC, TypeJdegF, TypeKdegC, and TypeKdegF thermocouples. These
|
|
breakpoint tables are part of the new epics base. However there are only
|
|
loaded into an ioc if the user includes their definitions.</li>
|
|
<li>A regular menu definition file menuConvert contains the same
|
|
definitions as choices as that provided by the 3.12.2 version of epics.
|
|
The menu includes definitions for the epics supplied breakpoint
|
|
tables.</li>
|
|
<li>The ai and ao records call a routine cvtRawToEngBpt to perform
|
|
breakpoint conversions. This routine has been rewritten to to look for
|
|
breakpoint tables obtained from the new breakpoint file format.</li>
|
|
</ul>
|
|
One other comment needs to be made about conversions. The Allen Bradley
|
|
device support for the IXE module uses the LINR field in a non standard way.
|
|
This was a mistake but compatibility must be maintained. Thus menuConvert
|
|
contains a lot of choices used only by the IXE device support.
|
|
|
|
<h1>Converting existing applications</h1>
|
|
|
|
<h2>Database Configuration Tools</h2>
|
|
<ul>
|
|
<li>DCT - Rather than making major changes to DCT, a TCL/TK replacement has
|
|
been written. The executable is named DCT313.</li>
|
|
<li>GDCT - A new version is provided that supports 3.13. The executable is
|
|
named GDCT313.</li>
|
|
<li>CAPFAST</li>
|
|
</ul>
|
|
<ul>
|
|
<li>The filter that converts record instance definitions must generate the
|
|
new record instance file format rather than the old short form report.
|
|
Contact Roselle Wright at LANL for details.</li>
|
|
<li>A tool should be developed that, using static database access,
|
|
automatically generates the record type description files used by
|
|
capfast. My guess is that this should be easy to do.</li>
|
|
</ul>
|
|
|
|
<h3>Application Source/Release Control</h3>
|
|
At the present time There are at least three Application Source/Release
|
|
Control Systems in active use. The old technique of having cat_ascii and
|
|
replace_ascii directories no longer work. In addition makesdr no longer
|
|
exists. The new system offers developers far more flexibility but it also
|
|
means that each Application Source/Release Control system has to be modified
|
|
to take advantage of the new capabilities. Again the changes in RULES and
|
|
makeBaseApp should make this task easier.
|
|
|
|
<p>The document "<a
|
|
href="http://www.aps.anl.gov/asd/controls/epics/EpicsDocumentation/AppDevManuals/iocAppBuildSRcontrol3_13_0beta12.html">EPICS
|
|
IOC Applications: Building and Source/Release Control</a>" describes a
|
|
utility makeBaseApp which can be used for small applications. It also
|
|
provides guidlines that can be used for large applications.</p>
|
|
|
|
<h3>Locally developed Record/Device support</h3>
|
|
<ul>
|
|
<li>The dctsdr file and any header files for locally developed record types
|
|
must be saved before performing a getrel to a new version of base.</li>
|
|
<li>Any global menus, not supplied with epics, have to be converted via the
|
|
sdr2gblmenu tool. The generated file must be edited to extract the
|
|
locally developed menus.</li>
|
|
<li>Any locally developed record type definitions have to be converted to
|
|
the new ascii file format via the sdr2recordtype tool. Note that the
|
|
generated file also contains definitions for any record specific
|
|
menus.</li>
|
|
<li>New definitions for locally developed device support must be generated
|
|
via the sdr2device tool. The generated file must be edited so that only
|
|
locally developed device support remains.</li>
|
|
<li>New definitions for locally developed driver support must be generated
|
|
via the sdr2driver tool. The generated file must be edited so that only
|
|
locally developed drive support remains.</li>
|
|
<li>If breakpoint tables have been locally developed. The following should
|
|
be done.
|
|
<ul>
|
|
<li>The menuConvert file should be copied from epics and new entries
|
|
for the local breakpoint tables added to the end.</li>
|
|
<li>If raw breakpoint tables were previously used, convert them to the
|
|
new breakpoint format (easy to do). If equally spaced data files were
|
|
used the makeBpt tool can be used to create new breakpoint
|
|
tables.</li>
|
|
</ul>
|
|
</li>
|
|
<li>The following changes must be made to the record support modules:
|
|
<ul>
|
|
<li>The include statement for the record type h file must be surrounded
|
|
by the statements:</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<pre>#define GEN_SIZE_OFFSET
|
|
|
|
#undef GEN_SIZE_OFFSET</pre>
|
|
<ul>
|
|
<li>Any statements that initialize a field from constant links must be
|
|
changed. Such statements always contain the characters "value.value". For
|
|
example:</li>
|
|
</ul>
|
|
<pre> pai->simm = pai->siml.value.value;
|
|
|
|
is changed to
|
|
|
|
recGblInitConstantLink(&pai->siml,DBF_USHORT,&pai->simm);</pre>
|
|
NOTE: This change also has to be made to any device support that manipulates
|
|
constant links. Normally this is only soft device support.
|
|
|
|
<p>Because it is now possible to distinguish between null links (links that
|
|
were never given a value) and CONSTANT links with the value 0, the code now
|
|
handles initialization of constant links in a uniform manner. Several record
|
|
types in previous versions had special code to handle the case of the value 0
|
|
for constant links. These have been changed.</p>
|
|
<ul>
|
|
<li>If record support uses menus it should be modified to use the enum
|
|
definitions in the generated header files.</li>
|
|
<li>dbStaticLib - Some routines have a new name:</li>
|
|
</ul>
|
|
<pre>OLD ROUTINE REPLACEMENT
|
|
|
|
dbFindRecdes dbFindRecordType
|
|
dbFirstRecdes dbFirstRecordType
|
|
dbNextRecdes dbNextRecordType
|
|
dbGetRecdesName dbGetRecordTypeName
|
|
dbGetNRecdes dbGetNRecordTypes
|
|
dbFirstFielddes dbFirstField
|
|
dbNextFielddes dbNextField
|
|
dbGetChoices dbGetMenuChoices</pre>
|
|
For now the old version will be supported. After one release they will go
|
|
away.
|
|
<ul>
|
|
<li>New vxWorks CONFIG rules are available to generate menu and record type
|
|
include files from ascii files. The rules are:</li>
|
|
</ul>
|
|
<pre> MENUS += menuXXX.h
|
|
RECTYPES += xxxRecord.h</pre>
|
|
<ul>
|
|
<li>Changes to recGbl and database access link routines.</li>
|
|
</ul>
|
|
<ul>
|
|
<li>recGblInitFastInLink</li>
|
|
<br>
|
|
recGblInitFastOutLink
|
|
|
|
<p>All code calling these should be removed. They are no longer needed.</p>
|
|
<li>recGblGetFastLink</li>
|
|
<br>
|
|
recGblPutFastLink <br>
|
|
dbFastLinkGet <br>
|
|
dbFastLinkPut <br>
|
|
recGblGetLinkValue <br>
|
|
recGblPutLinkValue
|
|
|
|
<p>These are replaced by <br>
|
|
dbGetLink dbPutLink</p>
|
|
</ul>
|
|
<pre>long dbGetLink(struct db_link *,short dbrType,
|
|
void *pbuffer,long *options,long *nRequest);</pre>
|
|
The last two arguments can be 0. options=0 means no options. nRequest=0 means
|
|
scalar, i.e. retrieve one value.
|
|
<pre>long dbPutLink(struct db_link *,short dbrType,
|
|
void *pbuffer,long nRequest);</pre>
|
|
<ul>
|
|
<li>dbCaAddInLink</li>
|
|
</ul>
|
|
<br>
|
|
dbCaAddOutlink <br>
|
|
dbCaGetLink <br>
|
|
dbCaPutLink
|
|
|
|
<p>The Add routines are no longer needed. The Get/Put routines are replaced
|
|
by dbGetLink/dbPutLink.</p>
|
|
<ul>
|
|
<li>link.h</li>
|
|
</ul>
|
|
<br>
|
|
All parm fields are now declared char * parm rather than char parm[<size>] In
|
|
addition the defines INSTIO_FLD_SZ to VXI_PARAM_SZ no longer exist. This is
|
|
done so that unused links now use less storage.
|
|
|
|
<h1>Record Instance Definitions</h1>
|
|
|
|
<h4>Convert to proper format</h4>
|
|
All record instances must be capable of being loaded into an ioc via
|
|
dbLoadDatabase, dbLoadRecords, or dbLoadTemplate. This is the same format
|
|
that dbLoadRecords and dbLoadTemplate used in 3.12 releases. Note that if any
|
|
files contain the statements:
|
|
<pre> database(x) { nowhere() {
|
|
}
|
|
}
|
|
|
|
or
|
|
|
|
database(x) {
|
|
}</pre>
|
|
These statements must be removed. They were in pre 3.12 releases.
|
|
|
|
<h4>CONSTANT Links with value "0"</h4>
|
|
Release 3.13 is now capably of distingushing between a null link (a link that
|
|
is not given any value at all) and a constant link with the value 0. This
|
|
cause problems for some old record instance files. For example if a record
|
|
instance is defined as:
|
|
<pre> record(fanout,name) {
|
|
field(SELN,"1")
|
|
field(SELL,"0")
|
|
}</pre>
|
|
Such definitions can be fixed by either completly removing the link
|
|
definition or changing the value from "0" to "".
|
|
|
|
<p>here is a complete list of record types and fields that may have this
|
|
problem:</p>
|
|
<ul>
|
|
<li>fanoutRecord
|
|
<ul>
|
|
<li>SELL -> SELN Note SELN is not a prompt field.</li>
|
|
</ul>
|
|
</li>
|
|
pulseCounterRecord
|
|
<ul>
|
|
<li>SGL -> SGV</li>
|
|
</ul>
|
|
pulseDelayRecord
|
|
<ul>
|
|
<li>STL -> STV</li>
|
|
<li>GLNK -> GATE</li>
|
|
</ul>
|
|
pulseTrainRecord
|
|
<ul>
|
|
<li>SGL -> HGV</li>
|
|
<br>
|
|
NOTE: This is a bug. The field should be SGV. Fixed 3.13.beta5.</ul>
|
|
selRecord
|
|
<ul>
|
|
<li>INPA -> A NOTE A is not a prompt field</li>
|
|
<li>INPB -> B NOTE B is not a prompt field</li>
|
|
<li>... for all INP links</li>
|
|
</ul>
|
|
seqRecord
|
|
<ul>
|
|
<li>SELL -> SELN NOTE SELN is not a prompt field</li>
|
|
</ul>
|
|
stringinRecord
|
|
<ul>
|
|
<li>SIOL -> SVAL NOTE SVAL is not a prompt field</li>
|
|
</ul>
|
|
stringoutRecord
|
|
<ul>
|
|
<li>DOL -> VAL</li>
|
|
</ul>
|
|
</ul>
|
|
A good way to find these problems is to use grep. For example:
|
|
<pre> grep SELL */*.db</pre>
|
|
This assumes that you are in directory that contains subdirectorys containing
|
|
.db files.
|
|
|
|
<h1>IOC Startup files</h1>
|
|
The command dbLoad is no longer supported. The new method is to issue one or
|
|
more dbLoadDatabase commands and any combination of dbLoadRecords and
|
|
dbLoadTemplate commands.
|
|
|
|
<h2>Other Release Notes</h2>
|
|
|
|
<h4>IOC Test routines</h4>
|
|
Many changes have been made to the EPICS ioc test routines, i.e., routines
|
|
given to the vxWorks shell. Please read the chapter "IOC Test Facilities" in
|
|
the Application Developer's Guide for details.
|
|
|
|
<h4>Changes to Record and Device Support</h4>
|
|
<ul>
|
|
<li>Changes to record support modules (caused by looking for UDF problems)
|
|
<ul>
|
|
<li>aaiRecord, aaoRecord - The siol field, which was never used in
|
|
record processing, has been removed from aaiRecord.dbd and
|
|
aaoRecord.dbd files. Old style, pre R3.12, c code in init_record was
|
|
updated.</li>
|
|
<li>compressRecord - Now allows Channel Access links for INP. It also
|
|
sets READ_ALARM if it has bad or no input.</li>
|
|
<li>dfanoutRecord, longoutRecord - In process the udf field is set to
|
|
false when dbGetLink returns success only if dol is not a constant
|
|
link.</li>
|
|
<li>fanoutRecord - Now supports CA links. Same rules as FLNK.</li>
|
|
<li>biRecord, mbbiRecord - Udf now set to false in put_enum_string when
|
|
val is initialized.</li>
|
|
<li>mbbiDirectRecord - Udf now set to false in process when val is
|
|
initialized.</li>
|
|
<li>mbbiDirectRecord, mbboDirectRecord, waitRecord - Old style, pre
|
|
R3.12, c code in init_record was updated.</li>
|
|
<li>pidRecord - Changes made to modify DB_LINK test on cvl field to
|
|
allow type CA_LINK.</li>
|
|
<li>pulseDelayRecord - Removed code that called recGblSetSevr is status
|
|
non zero just before return. process always returns 0.</li>
|
|
<li>pulseTrainRecord - process always returns 0.</li>
|
|
<li>seqRecord - Changes made to modify DB_LINK tests on the lnk and dol
|
|
fields to allow type CA_LINK.</li>
|
|
<li>steppermotorRecord - In process the udf field is now set to false
|
|
if dol is not a constant link and dbGetLink returns success. Changes
|
|
made to modify DB_LINK test on rdbl field to allow type CA_LINK.</li>
|
|
<li>stringoutRecord - In process the udf field is now set to false if
|
|
dol is not a constant link and dbGetLink returns success.</li>
|
|
<li>waveform record - While processing the udf field is now set to
|
|
false if simulation mode is TRUE and siol is not a constant link and
|
|
dbGetLink returns success.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Device Support Changes
|
|
<ul>
|
|
<li>devAiSoft, devBiSoft, devEventSoft, devLiSoft, devMbbiDirectSoft
|
|
devMbbiSoft,devSiSoft - In init_record the udf field is set to false
|
|
only if inp is a constant link and recGblInitConstantLink returns
|
|
success. In read_xxx the udf field is set to false only if inp is not
|
|
a constant link and dbGetLink returns success.</li>
|
|
<li>devAiSoftRaw, devBiSoftRaw, devMbbiDirectSoftRaw, devMbbiSoftRaw -
|
|
In init_record the udf field is no longer set to false if inp is a
|
|
constant link and recGblInitConstantLink returns success (rval, not
|
|
val, was successfully initialized).</li>
|
|
<li>devLoSoft, devLoSymb, devMbboDirectSoft, devMbboSoft, devPtSoft,
|
|
devSoSymb - The udf field is no longer set to false in write_xxx.</li>
|
|
<li>devHistogramSoft, devHistogramTestAsyn - In init_record the udf
|
|
field is set to false only if svl is a constant link and
|
|
recGblInitConstantLink returns success.</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<h4>Make rules and config files</h4>
|
|
The config environment has been extensively changed. BASE now has its own set
|
|
of config files. Extensions will be able to use the base config files (for
|
|
the version of base it is built against) and add it's own definitions.
|
|
Changes to extensions will come at a future time.
|
|
|
|
<h4>GNU C++ for base</h4>
|
|
It is now possible to compile 3.13 EPICS base with the gnu C and C++
|
|
compilers. A C++ compiler that properly supports templates is required to
|
|
build the new ca server and the gdd library.
|
|
|
|
<h4>log server</h4>
|
|
Thanks to William Lupton at KECK the log server will now (under the latest
|
|
EPICS 3.13) obtain a new directory for the log file in response to SIGHUP.
|
|
|
|
<h4>CA repeater fix</h4>
|
|
Thanks to Kim Gillies, Bret Goodrich, and others at NOAO a problem has been
|
|
discovered and fixed in the 3.12 CA repeater under solaris.
|
|
|
|
<h4>Portable CA server</h4>
|
|
A new CA server C++ class library is available. The server library is in
|
|
libcas.a. The API is described in casdef.h. Doc is in progress. An example
|
|
server tool can be found at base/src/cas/example. The server has been tested
|
|
under sunos4 and solaris. A multi-threaded version of the new server for
|
|
vxWorks is in progress.
|
|
|
|
<h4>Macro Substitution Library</h4>
|
|
The macro substitution library discussed in tech-talk is now part of epics
|
|
base. Thus was contributed by Bill Lupton. The static database library uses
|
|
this library. dbLoadRecords and dvbLoadTemplate also use it.
|
|
|
|
<h4>VXI Resource Manager fix</h4>
|
|
Thanks to Ric Claus of SLAC a bug has been isolated in the VXI resource
|
|
manager. <br>
|
|
Symptom: correct slot isnt located when EPICS_VXI_LA_BASE is set to something
|
|
other than zero.
|
|
|
|
<h4>Access Security</h4>
|
|
If asSetFile has been set in a startup file and access security
|
|
initialization fails, then iocInit returns -1 so that startup file does not
|
|
finish.
|
|
|
|
<h4>errPrintf</h4>
|
|
On Unix this now calls fprintf(stderr instead of printf
|
|
|
|
<h4>iocLogClient.c</h4>
|
|
This now calls printf instead of epicsPrintf to prevent deadlocks.
|
|
|
|
<h4>Native type for DBF_USHORT</h4>
|
|
Formerlly old database access, which does not have unsigned short called the
|
|
native type DBR_FLOAT. It now calls it DBF_LONG
|
|
|
|
<h4>Allen Bradley Driver</h4>
|
|
Analog Output Block Transfers were being requested too frequently
|
|
|
|
<p>If link_status command fails (3 times in succession) adapters are now
|
|
immediatly declared down.</p>
|
|
|
|
<p>For btRead and btWrite, The driver now enforces a timeout of 5 seconds
|
|
which is 1 second more than scanner itself enforces. This is so that if
|
|
scanner throws away a BT request it will still timeout.</p>
|
|
|
|
<p>For btRead and btWrite is is no longer permissible to issue a new btRead
|
|
or btWrite from tha callback routine.</p>
|
|
|
|
<p>The on line doc has the following two changes:</p>
|
|
<ul>
|
|
<li>abConfigBaud has arguments (link,number) (Old doc was wrong)</li>
|
|
<li>Now states that new btRead/btWrite can NOT be ussued from callback.</li>
|
|
</ul>
|
|
|
|
<h4>vmic2534</h4>
|
|
Support has been added by LBL. It still needs to be ansified.
|
|
|
|
<h4>New options for links</h4>
|
|
<ul>
|
|
<li>FWDLINK</li>
|
|
</ul>
|
|
<br>
|
|
A forward link now works between IOCs but only if the field is PROC. When
|
|
recGblFwdLink is executed, a 1 is written.
|
|
<ul>
|
|
<li>OUTLINK new option CA (In addition to PP and NPP)</li>
|
|
</ul>
|
|
<br>
|
|
CA means always make it channel access link
|
|
<ul>
|
|
<li>INLINK new options CA CP CPP (In addition to PP and NPP)</li>
|
|
</ul>
|
|
<ul>
|
|
<li>CA means always make it a channel access link</li>
|
|
<li>CP means CA + process when monitor occurs</li>
|
|
<li>CPP means CA + process passive records when monitor occurs</li>
|
|
</ul>
|
|
dbAccess (dbGetField dbPutField) make sure that link field strings are not
|
|
longer than 39 characters. They allow M for MS and N for NMS
|
|
|
|
<h4>callback and scan task names</h4>
|
|
The task names have been changed to make them unique
|
|
|
|
<h4>dbPutString</h4>
|
|
If the strlen of the new field is >= field_size an error is returned.
|
|
|
|
<h4>event scanned records</h4>
|
|
Multiple priorities are now supported. <br>
|
|
WARNING: Default PRIO is low thus old event scanned records may be executed
|
|
at a lower priority then previous release.
|
|
|
|
<h4>Allen Bradley Stepper Motor Support (Ric Claus SLAC)</h4>
|
|
Support for the allen bradley stepper motor is available. See the APS EPICS
|
|
Hardware Support page for details.
|
|
|
|
<h4>initHooks</h4>
|
|
INITHOOKafterCaLinkInit1 is replaced by INITHOOKafterCaLinkInit <br>
|
|
INITHOOKafterCaLinkInit2 no longer exists</body>
|
|
</html>
|