1511 lines
56 KiB
HTML
1511 lines
56 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 R3.14.x Release Notes</title>
|
|
</head>
|
|
|
|
<body lang="en">
|
|
<h1 align="center">EPICS Base Release 3.14.8<br>
|
|
?? ??Month?? 2005</h1>
|
|
|
|
<h2 align="center">Changes since 3.14.7</h2>
|
|
|
|
|
|
<h4>epicsExport.h</h4>
|
|
<p>Add additional cast to prevent 'strict aliaising' warnings.</p>
|
|
|
|
|
|
<h4>iocsh</h4>
|
|
<p>I/O redirection from vxWorks startup scripts now works.</p>
|
|
|
|
|
|
<h4>RTEMS</h4>
|
|
<p>Cleaned up support for obtaining network configuration from NVRAM.</p>
|
|
<p>Added support for some additional boards.</p>
|
|
<p>Set iocsh prompt from host name.</p>
|
|
<p>Initialize in-memory filesystem from tar image following executable in
|
|
bootstrap flash memory. This allows for fully standalone IOCs -- no TFTP/NFS
|
|
server required.</p>
|
|
<p>Add support for MCF5282 on-chip I2C and QADC peripherals.</p>
|
|
<p>Add support for Arcturus uC5282 flash memory updates.</p>
|
|
<p>Set IOC_NAME and IOC_STARTUP_SCRIPT environment variables from bootstrap parameters.</p>
|
|
|
|
|
|
<h4>OS X</h4>
|
|
<p>Builds on Tiger.</p>
|
|
<p>Readline now used by default.</p>
|
|
|
|
|
|
<h1 align="center">EPICS Base Release 3.14.7<br>
|
|
7 December 2004</h1>
|
|
|
|
<h2 align="center">Changes since 3.14.6</h2>
|
|
|
|
|
|
<h4>selRecord</h4>
|
|
<p>The select record type has for a long time made use of a coule of magic
|
|
numbers (1e+30 and -1e+30) to mean "not a real value", which prevents the record
|
|
from working properly if one or other of these appears as an actual data value.
|
|
These have been changed to use +Inf and -Inf or NaN instead, so +/-1e+30 may be
|
|
used as a data value.</p>
|
|
|
|
<h4>ai, ao, dfanout and subroutine Records</h4>
|
|
<p>These record types have been modified to respond better to NaN values as
|
|
follows: if the VAL field contains a NaN value, the UDF field will be set and an
|
|
undefined value alarm will be triggered.</p>
|
|
|
|
<h4>epicsStdlib.h/epicsStrtod()</h4>
|
|
<p>epicsStdlib.h declares epicsStrtod() which provides a version of
|
|
strtod which handles NAN/INF on all architectures. All uses of strtod() in
|
|
base have been converted to use epicsStrtod().</p>
|
|
<p>epicsStdlib.h also declares epicsScanFloat() and epicsScanDouble() which
|
|
replace calls to sscanf with routines which handle NAN/INF on all architectures.</p>
|
|
|
|
<h4>epicsThreadCreate Stacksize Posix</h4>
|
|
<p>The posix implementation of epicsThreadCreate now makes pthread
|
|
calls to set the stack size. The sizes for (small,medium,large) stack
|
|
sizes are (128K,256K,512K). This is used for at least the following:
|
|
linux, solaris, HPUX, Darwin). Doing this allows creation of many more
|
|
threads os most systems.</p>
|
|
|
|
<h4>dbNotify</h4>
|
|
<p>dbNotifyCancel now waits if the userCallback is active when dbNotifyCancel
|
|
is called. Previously it just returned. NOTE CAREFULLY. This means
|
|
that the userCallback must not free the putNotify structure.</p>
|
|
|
|
<h4>CA commandline tools</h4>
|
|
<p>caget and camonitor now have an additional "-s" option to explicitly
|
|
request server-side string conversion, which - in case of the regular CA
|
|
server - leads to "precision" info (e.g. the PREC field of an EPICS
|
|
record) being honoured.</p>
|
|
|
|
<h4>POSIX signals</h4>
|
|
<p>Signals are blocked in all but the main thread. Applications/drivers
|
|
which require signal delivery to a subthread will need to be modified.</p>
|
|
|
|
<h4>epicsExit</h4>
|
|
Three new functions are implemented: <span
|
|
style="font-family: courier">epicsExit</span>, <span
|
|
style="font-family: courier">epicsExitCallAtExits</span>, and <span
|
|
style="font-family: courier">epicsAtExit</span>. These are similar to <span
|
|
style="font-family: courier">exit</span> and <span
|
|
style="font-family: courier">atexit</span>, i.e. they provide the ability to
|
|
register a function to be called when the process exits. They are provided
|
|
becase neither vxWorks or win32 properly implement <span
|
|
style="font-family: courier">exit</span> and <span
|
|
style="font-family: courier">atexit</span>. Note that they apply to an IOC
|
|
stopping NOT to a thread exiting.
|
|
|
|
<h4>epicsStdio and epicsStdioRedirect</h4>
|
|
|
|
<p>In order to support iocsh redirection of <span
|
|
style="font-family: courier">stdin</span>, <span
|
|
style="font-family: courier">stdout</span>, and <span
|
|
style="font-family: courier">stderr</span>, <span
|
|
style="font-family: courier">epicsStdio.h</span> defines the following new
|
|
functions: <span style="font-family: courier">epicsGetStdin</span>, <span
|
|
style="font-family: courier">epicsGetStdout</span>, <span
|
|
style="font-family: courier">epicsGetStderr</span>, <span
|
|
style="font-family: courier">epicsSetStdin</span>, <span
|
|
style="font-family: courier">epicsSetStdout</span>, <span
|
|
style="font-family: courier">epicsSetStderr</span>, and <span
|
|
style="font-family: courier">epicsStdoutPrintf</span>. <span
|
|
style="font-family: courier">epicsStdioRedirect.h</span> defines macros that
|
|
redefine <span style="font-family: courier">stdin</span>, <span
|
|
style="font-family: courier">stdout</span>, <span
|
|
style="font-family: courier">stderr</span>, and <span
|
|
style="font-family: courier">printf</span>.</p>
|
|
|
|
<p>Any code that includes <span
|
|
style="font-family: courier">epicsStdioRedirect.h</span> will automatically
|
|
have it's stdio redirected. It has been added to many files in base. If code
|
|
called by dbior wants it's output redirected, it must also include this
|
|
file.</p>
|
|
|
|
<h4>IOC Test Facilities</h4>
|
|
|
|
<p>Any command that previously had an argument for a report file name no
|
|
longer has the argument. The new iocsh redirection capability is now used.
|
|
For example the former command:</p>
|
|
<pre> dbl "0" reportName</pre>
|
|
<pre>Is now:</pre>
|
|
<pre> dbl > reportName</pre>
|
|
Note that this does NOT work on the vxWorks shell only on iocsh. On the
|
|
vxWorks shell the following command can be given:
|
|
<pre> iocshCmd("dbl > reportName")</pre>
|
|
|
|
<h4>errlog</h4>
|
|
|
|
<p>errlog now calls <span style="font-family: courier">epicsAtExit</span> and
|
|
releases all resources when <span
|
|
style="font-family: courier">epicsExitCallAtExits</span> is callled..</p>
|
|
|
|
<h4>libCom</h4>
|
|
<p>epicsStrGlobMatch() routine added.</p>
|
|
|
|
<h4>iocsh</h4>
|
|
|
|
<p>Input/output redirection added.</p>
|
|
<p>iocshCmd routine added (callable from vxWorks shell).</p>
|
|
<p>help command uses globbing.</p>
|
|
|
|
<h4>calcoutRecord</h4>
|
|
|
|
<p>The ODLY (Output Delay) was not handled properly. This is fixed.</p>
|
|
|
|
<h4>compressRecord</h4>
|
|
|
|
<p>make sure reset gets called when size of INP array changes.</p>
|
|
|
|
<h4>dbAccess DBR_ENUM_STRS for field DTYP</h4>
|
|
|
|
<p>Data Base Request Option DBR_ENUM_STRS for the DTYP field of soft records
|
|
can cause an IOC to crash.</p?<h2align="center"></p>
|
|
|
|
<h4>RTEMS</h4>
|
|
<p>RTEMS implementation of epicsMessageQueuePending() now works.</p>
|
|
<p>Added support for MVME2100 BSP.</p>
|
|
<p>Added support for building RTEMS bootable images.</p>
|
|
|
|
<h4>iocBoot/ioc* build change</h4>
|
|
|
|
<p>The cdCommands and envPaths files are now created in ioc* directory only
|
|
when the ARCH defined in the ioc*/Makefile is present in BUILD_ARCHS for the
|
|
build.</p>
|
|
|
|
|
|
<h2 align="center">Changes since 3.14.5</h2>
|
|
|
|
<h4>CA command line tools complete</h4>
|
|
|
|
<p>The complete set of Channel Access command line tools (caget, caput,
|
|
camonitor, cainfo) is available as announced during the May 2004 Collab.
|
|
meeting. Documentation is part of the CA Reference Manual. Be aware of
|
|
possible name conflicts with existing local tools.</p>
|
|
|
|
<h4>IOC template file configure/RULES.iocBoot removed</h4>
|
|
|
|
<p>The directory name wildcards that were defined here have been moved to
|
|
iocBoot/Makefile, which as a result is no longer unique in having its own
|
|
configure/RULES file.</p>
|
|
|
|
<h4>APS Virtual Linac template removed</h4>
|
|
|
|
<p>This is really a demo and a complete EPICS IOC application, not a
|
|
template. It will be made available separately.</p>
|
|
|
|
<h4>EPICS_HOST_ARCH win32-x86-cygwin renamed to cygwin-x86</h4>
|
|
|
|
<p>The EPICS_HOST_ARCH win32-x86-cygwin was renamed cygwin-x86 to avoid
|
|
confusion about what OS interfaces are used on Windows: native win32 or
|
|
cygwin's emulation of POSIX. Now we have</p>
|
|
<ul>
|
|
<li>win32-x86 Uses native win32 interfaces with MS compiler.</li>
|
|
<li>win32-x86-borland Uses native win32 interfaces with borland
|
|
compiler.</li>
|
|
<li>win32-x86-gnu Uses native win32 interfaces with cygwin gnu compiler.
|
|
(Not implemented yet.)</li>
|
|
<li>cygwin-x86 Uses cygwin POSIX interfaces with cygwin gnu compiler.</li>
|
|
</ul>
|
|
|
|
<h4>EPICS_TS_NTP_INET</h4>
|
|
|
|
<p>The time server's IP address used by the vxWorks clock routines was not
|
|
reading the default value from the generated envData.c file but going
|
|
straight to the boot host if no environment variable by that name was set.</p>
|
|
|
|
<h4>CONFIG_ENV and CONFIG_SITE_ENV</h4>
|
|
|
|
<p>These files are now parsed by a program that recognizes and ignores
|
|
comment lines. Previous versions of this parser would extract settings from
|
|
these files even if they appear on a line starting with a '#' character, so
|
|
the last line containing a setting for any variable would give the value used
|
|
as the default. This was first noticed in R3.14.5 where a commented-out
|
|
setting for the <code>EPICS_TIMEZONE</code> parameter was added
|
|
<em>after</em> the uncommented version.</p>
|
|
|
|
<h4>db test shell commands</h4>
|
|
|
|
<p>Many of the commands crashed if given no arguments. They are now more
|
|
crash proof.</p>
|
|
|
|
<h4>db_access - conversion of double to float</h4>
|
|
|
|
<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>
|
|
|
|
<h4>New DBD rule</h4>
|
|
|
|
<p>A new dbd rule will create a <name>Include.dbd from files specified
|
|
in a <name>_DBD macro definition. An include line will be placed in the
|
|
<name>Include.dbd for each file specified in the <name>_DBD
|
|
definition. If a Makefile contains</p>
|
|
<pre> DBD=xxx.dbd
|
|
xxx_DBD = f1.dbd f2.dbd f3.dbd </pre>
|
|
|
|
<p>an xxxInclude.dbd file will be created containing the lines</p>
|
|
<pre> include "f1.dbd"
|
|
include "f2.dbd"
|
|
include "f1.dbd"</pre>
|
|
|
|
<p>and dbExpand will be invoked to create the xxx.dbd file from the
|
|
xxxInclude.dbd.</p>
|
|
|
|
<h4>Solaris Builds</h4>
|
|
|
|
<p>Old solaris 6 specific compiler options have been removed.</p>
|
|
|
|
<h4>New make targets cvsclean and archclean</h4>
|
|
|
|
<p>The new top level Makefile only target, cvsclean, removes cvs .#* files in
|
|
all dirs of the top directory tree.</p>
|
|
|
|
<p>The new archclean target is like the clean target except that O.Common
|
|
directories are not removed.</p>
|
|
|
|
<h4>epicsString</h4>
|
|
|
|
<p>Add epicsSnStrPrintEscaped.</p>
|
|
|
|
<h4>epicsExport</h4>
|
|
|
|
<p>epicsExportAddress(typ,obj) now generates an extern named pvar_typ_obj and
|
|
epicsExportRegistrar(func) an extern named pvar_func_obj. Previously both
|
|
just named the variable pobj.</p>
|
|
|
|
<p>epicsRegisterFunction(name) in conjunction with the dbd 'function' keyword
|
|
can be used to register functions referred to by record subroutine name
|
|
fields.</p>
|
|
|
|
<h4>Access Security</h4>
|
|
|
|
<p>The access security configuration rules now accept quoted strings where
|
|
just names were allowed previously.</p>
|
|
|
|
<p>All dump routines now have FP version.</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>
|
|
|
|
<h4>Channel Access Client Library</h4>
|
|
<ul>
|
|
<li>Fixed "subscription updates intermittently do not resume when
|
|
unresponsive circuit reconnects" bug
|
|
<ul>
|
|
<li>Scope:
|
|
<p>This bug was introduced in R3.14.5 and does not exist in any other
|
|
release.</p>
|
|
</li>
|
|
<li>Symptom:
|
|
<p>Subscription updates intermittently do not resume depending on
|
|
circumstances when unresponsive circuit reconnects</p>
|
|
</li>
|
|
<li>Additional Information:
|
|
<p>A decision was made to add a change to EPICS R3.14.5 so that when
|
|
a TCP circuit is temporarily unresponsive the channel, but not the
|
|
circuit, is immediately disconnected. This change was determined to
|
|
be necessary to improve overall system robustness in the face of IOC
|
|
or network overload. Unfortunately, an error was made when installing
|
|
these changes. I am sorry about any inconvenience that this has
|
|
caused. Thanks to Ken Evans at the APS for discovering this
|
|
problem.</p>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>Fixed "ca_replace_access_rights_event() fails if passed a nill function
|
|
pointer" bug
|
|
<ul>
|
|
<li>Scope:
|
|
<p>This bug probably exists in all R3.14 releases.</p>
|
|
</li>
|
|
<li>Symptom:
|
|
<p>Passing a nill function pointer to
|
|
ca_replace_access_rights_event() should install a noop handler, but
|
|
this currently causes a failure.</p>
|
|
</li>
|
|
<li>Additional information:
|
|
<p>Regression tests have been installed to detect this mistake.</p>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>Fixed "CA client library crash when clear channel request occurs in get
|
|
callback handler" bug
|
|
<ul>
|
|
<li>Scope:
|
|
<p>This bug was introduced in R3.14.5 and does not exist in any other
|
|
release.</p>
|
|
</li>
|
|
<li>Symptom:
|
|
<p>CA client library crash when clear channel request occurs in get
|
|
callback handler</p>
|
|
</li>
|
|
<li>Additional information:
|
|
<p>When testing the striptool application, Ken Evans, discovered a
|
|
bug in the CA client library occurring when a clear channel request
|
|
occurs in get callback handler. Regression tests have been updated so
|
|
that this mistake will not slip through testing undetected in a
|
|
future release.</p>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>Fixed "Double server subscription install when subscription request
|
|
occurs in connection callback handler" bug
|
|
<ul>
|
|
<li>Scope:
|
|
<p>This bug was introduced in R3.14.5 and does not exist in any other
|
|
release. Subscription request must be made from within connection
|
|
callback handler</p>
|
|
</li>
|
|
<li>Symptom:
|
|
<p>It has been discovered (by Ken Evans while testing the gateway)
|
|
that certain subscription requests were persisting in the gateway
|
|
after clients had deleted them. This bug causes additional resources
|
|
to be consumed, but does not result in a crash.</p>
|
|
</li>
|
|
<li>Additional information
|
|
<p>Additional debugging has revealed that the CA client library in
|
|
this situation inadvertently made the subscription request twice:
|
|
once at the users’ request, and later on again when the
|
|
library auto installed subscriptions for disconnected channels.</p>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>Fixed "failure when deleting channel in get callback handler" bug
|
|
<ul>
|
|
<li>Scope:
|
|
<p>Probably introduced in a previous R3.14 release.</p>
|
|
</li>
|
|
<li>Symptom:
|
|
<p>An intermittent C++ exceptions during regression testing.</p>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>Behavior Changes
|
|
<ul>
|
|
<li>Process blocks attempting to exit if the application does not call
|
|
ca_context_destroy()
|
|
<p>In EPICS release R3.14 the CA client library is implemented using
|
|
axillary threads. If the application does not call
|
|
ca_context_destroy() these threads will still be running, and
|
|
depending on operating system conventions the process may
|
|
<em>not</em> exit if the main thread exits, but axillary threads are
|
|
still running. Note that ca_context_destroy() is functionally
|
|
equivalent to the deprecated call ca_task_exit().</p>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<h4>Channel Access Portable Server (used by the CA gateway and others)</h4>
|
|
<ul>
|
|
<li>Fixed "assert fail when writing string through Portable CA Server" bug
|
|
<ul>
|
|
<li>Scope:
|
|
<p>This bug is only present in the portable CA server and so it does
|
|
<em>not</em> impact IOC based applications. The bug is present in the
|
|
CA gateway and any portable CA server based application. This problem
|
|
may have been recently introduced when GDD was patched to properly
|
|
handle fixed sized strings.</p>
|
|
</li>
|
|
<li>Symptom:
|
|
<p>Failure, when writing large string through the portable CA server.
|
|
There appears to be a possibility of the wrong string being written
|
|
when a smaller string is used. You may see the following message.</p>
|
|
<p>A call to "assert (! this->pValue->unreference ())" failed
|
|
in ..\..\..\..\include\smartGDDPointer.h line 88.</p>
|
|
</li>
|
|
<li>Additional Information:
|
|
<p>Thanks to Stephanie Alison at SLAC for discovering the bug and to
|
|
Ken Evans at the APS for reminding me to fix it.</p>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<h2 align="center">Changes since 3.14.4</h2>
|
|
|
|
<h4>dbtr</h4>
|
|
|
|
<p>Don't seg-fault if no argument is passed to dbtr.</p>
|
|
|
|
<h4>New build targets.</h4>
|
|
|
|
<p>New files have been created in configure/os to allow
|
|
CROSS_COMPILER_TARGET_ARCHS to include solaris-sparc-gnu and
|
|
solaris-sparc-debug when EPICS_HOST_ARCH is solaris-sparc. Also
|
|
CROSS_COMPILER_TARGET_ARCHS can now include linux-x86-debug when
|
|
EPICS_HOST_ARCH is linux-x86.</p>
|
|
|
|
<h4>New epicsString.h function</h4>
|
|
|
|
<p>A new function epicsStrnCaseCmp has been added. It is like strncmp except
|
|
that it ignores case.</p>
|
|
|
|
<h4>R3.13 compatability files</h4>
|
|
|
|
<p>R3.13 compatability files are no longer generated automatically during the
|
|
build. configure/CONFIG_SITE contains two new macros for building
|
|
compatibility files. They are set to NO but can be set to YES. The macros
|
|
are:</p>
|
|
<ul>
|
|
<li>COMPAT_TOOLS_313
|
|
<p>This will install the compatibility files needed to build R3.13
|
|
extensions built with this R3.14 base.</p>
|
|
</li>
|
|
<li>COMPAT_313
|
|
<p>This will install the compatibility files needed to build R3.13
|
|
extensions and IOC applications built with this R3.14 base.</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<h4>APS Virtual LINAC Templates</h4>
|
|
|
|
<p>A new set of templates has been included in R3.14.5 to implement a Virtual
|
|
LINAC in an ioc using databases and sequence programs. The Virtual LINAC
|
|
simulates the generation and transmission of an electron beam down a LINAC.
|
|
Several steering coils, BPMs, and other typical accelerator components are
|
|
simulated to provide a realistic interaction between the operator and the
|
|
"LINAC". Since it is an entirely soft application, it will work on any
|
|
platform. An medm display is provided as the primary GUI. It can also be used
|
|
to experiment with other CA client tools.</p>
|
|
|
|
<p>To install the templates, use the following commands:</p>
|
|
<pre> mkdir <top>
|
|
cd <top>
|
|
<base>/bin/<arch>/makeBaseApp.pl -t vlinac vlinac
|
|
<base>/bin/<arch>/makeBaseApp.pl -i -t vlinac vlinac</pre>
|
|
|
|
<p>For further information, see:</p>
|
|
<pre> <top>/vlinacApp/misc/README
|
|
<top>/vlinacApp/misc/Virtual_Linac_Info.pdf</pre>
|
|
|
|
<h4>Stringin record time-stamp soft device support</h4>
|
|
Add simple device support for converting time to nicely-formatted string
|
|
using INP field as epicsTimeToStrftime format string:
|
|
<pre>record(stringin, "$(user)now")
|
|
{
|
|
field(DESC, "Current time and date")
|
|
field(DTYP, "Soft Timestamp")
|
|
field(INP, "@%Y-%m-%d %H:%M:%S.%03f")
|
|
}</pre>
|
|
|
|
<h4>Channel Access Portable Server (used by the CA gateway and others)</h4>
|
|
<ul>
|
|
<li>Fixed failure occurring if client disconnected while asynchronous PV
|
|
attach was outstanding, or, for enumerated native type process variables,
|
|
while enumerated string table cache asynchronous IO was outstanding. This
|
|
problem does not occur in IOCs because they are not yet based on the
|
|
portable server library. This bug was first detected by Ken Evans in the
|
|
production CA gateway at the APS.</li>
|
|
</ul>
|
|
|
|
<h4>Channel Access Original Server (used in IOC)</h4>
|
|
<ul>
|
|
<li>A bug causing the server threads to become stuck in a state where they
|
|
process requests, but no longer send responses, if in the past the system
|
|
was experiencing network buffer starvation has been fixed. This problem
|
|
existed probably in all previous EPICS releases, but network buffer
|
|
starvation issues have become more prevalent starting with Tornado
|
|
2.0.</li>
|
|
<li>Users noticed that UDP related output from the casr diagnostic was
|
|
easily confused with the information from casr for TCP circuits. This has
|
|
been fixed.</li>
|
|
</ul>
|
|
|
|
<h4>Channel Access Client Library</h4>
|
|
<ul>
|
|
<li>Disconnect behavior is now more robust in response to congestion. When
|
|
a channel times out, the channel is disconnected, but not the circuit.
|
|
The circuit is only disconnected when the internal TCP/IP keepalive timer
|
|
fires or if teh IOC reboots with the same IP address. This will result in
|
|
less UDP search traffic during periods of congestion and also less TCP/IP
|
|
circuit thrashing. A side effect will be that if a user turns off a
|
|
vxWorks IOC, changes its IP address, and then reboots it, then the user
|
|
will need to wait out the full duration of the TCP/IP keepalive timer
|
|
before the client will reconnect. This is undoubtedly a negative side
|
|
effect, but it is felt that the improvements in robustness justify the
|
|
confusion resulting in the small number of situations that a vxWorks
|
|
IOC's IP address is changed.</li>
|
|
<li>In previous releases if a directory service returns the address of a CA
|
|
server that does <em>not</em> have the PV that is being sought then the
|
|
client library could end up sending search requests at a very high rate.
|
|
This problem has been fixed by placing all disconnected channels in a
|
|
queue implementing a short delay prior to there being ready again for
|
|
periodic name resolution requests.</li>
|
|
<li>In previous R3.14 releases the CA client library's search datagram
|
|
interval exponential backoff was flawed. CA's search datagram interval
|
|
exponential backoff should proceed following the sequence 30mS, 60mS,
|
|
120mS, 240mS, and so on. Or a similar behavior with higher initial delays
|
|
resulting from a round trip time delay estimate greater than 30 mS.
|
|
However, instead the backoff delays were 30mS, 30mS, 30mS, 30mS, 30mS,
|
|
30mS, 60mS, 120mS, 240mS, and on. This bug also impacted what CA does
|
|
when a channel disconnects or there is a beacon anomaly ( a new server
|
|
event). The intent was to start the search delay for disconnected
|
|
channels in these situations at 2 seconds but due to the above bug the
|
|
delay was more like 64mS. This bug appears only in earlier versions of
|
|
EPICS R3.14.</li>
|
|
<li>A bug has been found in the CA repeater supplied with EPICS R3.14.2
|
|
through R3.14.4 (inclusive). The symptom will be clients running for more
|
|
than a few minuites do not connect to a newly introduced server. Fixed in
|
|
R3.14.5.</li>
|
|
</ul>
|
|
|
|
<h4>dbCa</h4>
|
|
|
|
<p>Better error messages are now generated.</p>
|
|
|
|
<p>dbCaPutLinkCallback is a new function. It provides the ability to
|
|
implement record/driver support that does not complete until a channel access
|
|
put callback has completed. See the Application Developer's Guide for
|
|
details.</p>
|
|
|
|
<p>dbCaAddLinkCallback is a new function. The caller can provide a connect
|
|
and monitor callback. See the Application Developer's Guide for details.</p>
|
|
|
|
<h4>devXxSoftCallback</h4>
|
|
|
|
<p>Soft device that uses dbCaPutLinkCallback has been written for ao, bo,
|
|
calcout, longout, mbbo, mbboDirect, and stringout records. The dbd
|
|
definitions have been added to devSoft.dbd. In other to use the new support
|
|
the DTYP field is defined:</p>
|
|
<pre> field(DTYP,"Async Soft Channel")</pre>
|
|
|
|
<h4>calcoutRecord</h4>
|
|
|
|
<p>The CALC and OCAL fields now have a size of 40 so that they are the same
|
|
as the calcRecord.</p>
|
|
|
|
<p>calcoutRecord now has associated device support. The default support will
|
|
act just like the old calcout. Support bis also available that uses
|
|
dbCaPutLinkCallback.</p>
|
|
|
|
<h4>mbbiRecord</h4>
|
|
|
|
<p>The fields ZRST,...,FFST are now special(SPC_MOD).</p>
|
|
|
|
<h4>mbboRecord</h4>
|
|
|
|
<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>
|
|
|
|
<h4>epicsString</h4>
|
|
|
|
<p>A new function has been added epicsStrPrintEscaped, which converts the
|
|
standard C escape characters to \xxx characters.</p>
|
|
|
|
<h4>IOC shell system command</h4>
|
|
|
|
<p>The 'system' command has been added to the IOC shell. To enable this
|
|
command, add <code>registrar(iocshSystemCommand)</code> to an application
|
|
database description file.</p>
|
|
|
|
<center>
|
|
<h2>Changes since 3.14.3</h2>
|
|
</center>
|
|
|
|
<h4>sCalcPostfix</h4>
|
|
|
|
<p>This has been removed from base.</p>
|
|
|
|
<h4>Format string checking</h4>
|
|
|
|
<p>'printf-style' functions like errlogPrintf have their arguments verified
|
|
against their format string when compiled with gcc.</p>
|
|
|
|
<h4>IOC shell command-line editing on vxWorks</h4>
|
|
|
|
<p>The IOC shell now uses the vxWorks ledLib routines so command-line editing
|
|
is now the same in the IOC shell as it is in the vxWorks shell.</p>
|
|
|
|
<h4>CA client library crashes when the same PV name is on multiple
|
|
servers</h4>
|
|
|
|
<p>If the CA client library was searching for a PV name that was hosted on
|
|
more than one server a segmentation violation occurred when printing a
|
|
diagnostic message resulting in a failure of the CA client library. The bug
|
|
was introduced in R3.14.3. The code was tested on WIN32 prior to release, but
|
|
the problem has so far been reproduced only on Linux.</p>
|
|
|
|
<p>Thanks to Ernest Williams at the SNS for discovering and helping to
|
|
diagnose the problem.</p>
|
|
|
|
<h4>Disconnection callback function called when CA channel known to be
|
|
disconnected</h4>
|
|
|
|
<p>If a CA circuit timed out during the connect sequence then the CA client
|
|
library called the applications's disconnect callback function indicating a
|
|
disconnect state transition when the channel was already known to be
|
|
disconnected. This has caused the sequencer to improperly maintain its
|
|
connected channel count. Other CA client side tools may also be impacted.</p>
|
|
|
|
<p>Recent versions of vxWorks appear to experience a connect failure if the
|
|
vxWorks IP kernel reassigns the same ephemeral TCP port number as was
|
|
assigned during a previous lifetime. The IP kernel on the vxWorks system
|
|
hosting the CA server might have a stale entry for this ephemeral port that
|
|
has not yet timed out which prevents the client from connecting with the
|
|
ephemeral port assigned by the IP kernel. Eventually, after EPICS_CA_CONN_TMO
|
|
seconds, the TCP connect sequence is aborted and the client library closes
|
|
the socket, opens a new socket, receives a new ephemeral port assignment, and
|
|
successfully connects.</p>
|
|
|
|
<p>Thanks to Mark Rivers for initially reporting the bug and energetically
|
|
assisting with identifying the cause.</p>
|
|
|
|
<center>
|
|
<h2>Changes since 3.14.2</h2>
|
|
</center>
|
|
|
|
<h4>TPRO output</h4>
|
|
|
|
<p>The record processing trace output generated when the <code>.TPRO</code>
|
|
field of a record is non-zero now includes the name of the thread that is
|
|
actually doing the processing.</p>
|
|
|
|
<h4>calcRecord and calcoutRecord</h4>
|
|
|
|
<p>Previously if a dbGetLink failed on one of the input links, dbGetLink was
|
|
not called for the remaining links. Now it is.</p>
|
|
|
|
<h4>put notify</h4>
|
|
|
|
<p>put notify did not act properly if a record had disp=TRUE, i.e. if puts
|
|
are disabled. It now returns putNotifyPutDisabled.</p>
|
|
|
|
<h4>fastlock.h</h4>
|
|
|
|
<p>This is no longer supported</p>
|
|
|
|
<h4>devLib</h4>
|
|
|
|
<p>devLib is now supported on vxWorks and RTEMS. It has been moved from
|
|
src/vxWorks/src to src/libCom/osi. devLibVirtualOS has been extended to
|
|
support allocating A24 addresss and an init method.</p>
|
|
|
|
<h4>vxWorks dependent modules moved</h4>
|
|
The following have been moved from src/vxWorks/src to
|
|
src/libCom/osi/os/vxWorks: camacLib.h, drvTS.c, drvTS.h, epicsDynLink.c,
|
|
epicsDynLink.h, module_types.h, task_params.h, veclist.c. Brief documentation
|
|
has been added to the Application Developer's Guide.
|
|
|
|
<h4>Close-On-Exec flag set for all sockets created in EPICS base</h4>
|
|
|
|
<p>On POSIX systems 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>
|
|
|
|
<h4>Temporary Files on Windows</h4>
|
|
|
|
<p>The tmpfile() function on windows requires that all temporary files be
|
|
stored in the root folder. The antelope (yacc) tool in base was calling
|
|
tmpfile() and this was causing problems at sites where win32 systems use
|
|
remotely mounted secure file systems. A wrapper function called "FILE *
|
|
epicsTempFile()" that creates a temporary file on WIN32 with a name epicsNNN
|
|
using one of the following paths was installed into libCom. It searches
|
|
starting with (1) below and stops when it finds a specified path that exists.
|
|
On POSIX systems, and systems that default to POSIX behavior, epicsTempFile()
|
|
simply calls tmpfile().</p>
|
|
<ol>
|
|
<li>where the TMP environment variable specifies</li>
|
|
<li>in c:\tmp</li>
|
|
<li>in the current working directory</li>
|
|
</ol>
|
|
|
|
<h4>envPaths file</h4>
|
|
|
|
<p>For operating systems other than vxWorks, there is now a target file
|
|
created in each <code>iocBoot/ioc</code> directory called
|
|
<code>envPaths</code>, which performs the same functions as the
|
|
<code>cdCommands</code> file in vxWorks but using environment variables. The
|
|
entries in <code>envPaths</code> are derived from the contents of the
|
|
application's <code>configure/RELEASE</code> file.</p>
|
|
|
|
<h4>Macros in database filenames</h4>
|
|
|
|
<p>Database (<code>.db</code> and <code>.dbd</code>) filenames passed to
|
|
<code>dbLoadDatabase</code>, <code>dbLoadRecords</code> and inside
|
|
<code>dbLoadTemplate</code> substitutions files will now have environment
|
|
variable macros expanded before opening. These are expressed using the
|
|
standard <code>${MACRO}</code> syntax. Inside a template substitutions file
|
|
the filename must be enclosed in double quotation marks if macros are
|
|
used.</p>
|
|
|
|
<h4>registerRecordDeviceDriver output subroutine renamed</h4>
|
|
|
|
<p>The registration routine generated by the registerRecordDeviceDriver.pl
|
|
perl script now includes the name of the application, thus requiring a
|
|
one-line change to any IOC startup files produced with earlier R3.14 releases
|
|
of base. The actual name is taken from a second command line argument
|
|
supplied to the script by the modified make rules, and is derived from the
|
|
name of the fully expanded dbd file from which the necessary information is
|
|
extracted. The change needed to every startup script involves using this new
|
|
name in place of the old <code>registerRecordDeviceDriver</code>. Assuming
|
|
that your application's fully expanded dbd file is called
|
|
<code>example.dbd</code> you would modify the lines</p>
|
|
|
|
<blockquote>
|
|
<pre>dbLoadDatabase("dbd/example.dbd",0,0)
|
|
registerRecordDeviceDriver(pdbbase)</pre>
|
|
</blockquote>
|
|
|
|
<p>to become</p>
|
|
|
|
<blockquote>
|
|
<pre>dbLoadDatabase("dbd/example.dbd",0,0)
|
|
example_registerRecordDeviceDriver(pdbbase)</pre>
|
|
</blockquote>
|
|
|
|
<h4>dbExpand <code>-o outfile</code> option</h4>
|
|
|
|
<p>A commandline option <code>-o</code> has been added to the dbExpand
|
|
program to allow the name of its output file to be specified. If there are
|
|
any errors in the input file(s) the output file will not be generated or
|
|
modified at all. The rules to expand DBD files have been changed to make use
|
|
of this.</p>
|
|
|
|
<h4>New keyword <code>variable()</code> supported in dbd files</h4>
|
|
|
|
<p>Database definition (.dbd) files can now contain declarations of simple
|
|
static variables, a facility intended for driver debugging purposes. These
|
|
<code>variable(name)</code> or <code>variable(name,type)</code> declarations
|
|
are preserved by dbExpand (<code>type</code> is <code>int</code> if omitted),
|
|
and will be converted by registerRecordDeviceDriver.pl into code that
|
|
registers them with iocsh. The variables themselves must be defined in some
|
|
existing C or C++ code and marked using the macro
|
|
<code>epicsExportAddress(type,name)</code>. Only plain <code>int</code> and
|
|
<code>double</code> types are supported.</p>
|
|
|
|
<p><strong>macEnvExpand</strong></p>
|
|
|
|
<p>A facility for performing macro expansion using environment variables as
|
|
macro definitions has been added to libCom/macLib. The ioc shell now performs
|
|
macro expansion using this on all input lines (other than comments) before
|
|
printing and executing the line.</p>
|
|
|
|
<p><strong>iocsh var command</strong></p>
|
|
|
|
<p>For simple applications such as controlling the value of debugging flags.
|
|
Devlopers with more complex expression handling requirements should consider
|
|
use of the <strong>cexp</strong> package. The available variables are defined
|
|
by the new <code>variable</code> dbd file keyword.</p>
|
|
|
|
<p><strong>iocshArgPersistentString</strong></p>
|
|
|
|
<p>Tell iocsh to make a copy of the argument string before passing it to the
|
|
handler function.</p>
|
|
|
|
<p><strong>epicsStrDup</strong></p>
|
|
|
|
<p>Operating-system independent replacement for strdup().</p>
|
|
|
|
<p><strong>epicsMessageQueue</strong></p>
|
|
|
|
<p>The epicsMessageQueue API has been changed. All functions and methods to
|
|
receive a message now have an additional argument which specifies the size of
|
|
the receiver buffer. The receive functions/methods return -1 and the
|
|
received message is discarded if the received message will not fit in the
|
|
buffer. See the Application Developer's Guide (libCom OSI) for details.</p>
|
|
|
|
<p>This is an incompatible change. All R3.14.2 applications which use
|
|
epicsMessageQueue must be modified before they can be compiled and used with
|
|
R3.14.3</p>
|
|
|
|
<h4>Error Message Logging</h4>
|
|
|
|
<p>A bug occurring only in Microsoft Windows port of the error message
|
|
logging client was fixed. The symptoms were problems getting a Microsoft
|
|
Windows based IOC to make entries in the log file.</p>
|
|
|
|
<p>A bug occurring in the error message logging server where a partial
|
|
message arrives w/o a <CR> and then a <CR> from a previous
|
|
message was found in the input buffer was fixed. The problem must have
|
|
existed for a long time but probably was not occurring frequently. The
|
|
symptom was garbled output in the log file.</p>
|
|
|
|
<p>An IP kernel deadlock vulnerability occurring when vxWorks's tNetTask
|
|
calls logMsg because of a transient mbuf starvation situation has been fixed.
|
|
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 on vxWorks, e.g. CMLOG, will now receive the logMsg
|
|
messages.</p>
|
|
|
|
<h4>Channel Access Client Library Client Context Cleanup Race Condition</h4>
|
|
|
|
<p>The symptom is a CA client program that fails with a segmentation
|
|
violation on Linux shortly after calling ca_task_exit()or
|
|
ca_context_destroy(). A fix will show up in R3.14.3. Regression tests were
|
|
updated to detect this type of problem.</p>
|
|
|
|
<h4>Red Hat 7.3 Linux Process Rundown Bug</h4>
|
|
|
|
<p>There appears to be a bug in the Red Hat 7.3 process rundown where posix
|
|
thread support is defective when file scope destructors are being run. The
|
|
symptom was a hang during process exit. A workaround was installed.</p>
|
|
|
|
<h4>Multiple CA Servers on MAC OSX</h4>
|
|
|
|
<p>A patch was made to allow multiple CA servers on MAC OSX. OSX is a recent
|
|
branch off of BSD and therefore requires socket option SO_REUSEPORT.</p>
|
|
|
|
<center>
|
|
<h2>Changes since 3.14.1</h2>
|
|
</center>
|
|
|
|
<p><strong>Build System</strong></p>
|
|
|
|
<p>Major changes have been made to the build system. The good news is that
|
|
the rules for support and ioc applications are now greatly simplified. The
|
|
bad news is that it does mean changes for existing 3.14.1 applications.
|
|
Please see:</p>
|
|
|
|
<p><a
|
|
href="../2-docs/ConvertingR3.14.1AppsToR3.14.2.html">ConvertingR3.14.1AppsToR3.14.2</a></p>
|
|
|
|
<p>for details. If you are using the <strong>function</strong> DBD keyword it
|
|
no longer exists. Please read this conversion document for details.</p>
|
|
|
|
<p><strong>Application Developer's Guide</strong></p>
|
|
|
|
<p>The old chapter "New Feature's for 3.14" has been replaced by a new
|
|
chapter "Getting Started". Please read it. It provides a simplified set of
|
|
rules that can be used to build most support and ioc applications. Many minor
|
|
changes have also been made.</p>
|
|
|
|
<p><strong>dbGetLink</strong></p>
|
|
|
|
<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 dbAccessDefs.h</p>
|
|
|
|
<p><strong>Access Security</strong></p>
|
|
|
|
<p>The host names are now converted to lower case. This fixes
|
|
incompatibilities between various platforms.</p>
|
|
|
|
<p><strong>string records</strong></p>
|
|
|
|
<p>Both the stringin and stringout records have two new DBF_MENU fields: APST
|
|
and MPST. These control whether CA monitors are fired if the new VAL field
|
|
string is identical to the old one. The default (zero) menu value is "On
|
|
Change" with behaviour identical to before, set to "Always" if you want a
|
|
record to fire monitors every time the record is processed (analagous to
|
|
setting ADEL/MDEL=-1 for numeric record types).</p>
|
|
|
|
<p><strong>epicsMessageQueue</strong></p>
|
|
|
|
<p>A new facility that provides the capabilities of vxWorks msgQLib. See the
|
|
Application Developer's Guide (libCom OSI) for details.</p>
|
|
|
|
<p><strong>epicsStdio and errlogPrintf</strong></p>
|
|
|
|
<p>A new facility has been added to libCom described by epicsStdio.h. It
|
|
contains the functions epicsSnprintf and epicsVsnprintf. These are like the
|
|
C99 functions snprintf and vsnprintf, which are like sprintf and vsprintf
|
|
except that they accept a argument limiting the number of characters
|
|
written.</p>
|
|
|
|
<p>The errlogPrintf facility has been modified to use this facility. Thus it
|
|
is not longer subject to a possible buffer overflow.</p>
|
|
|
|
<p><strong>scanPeriod</strong></p>
|
|
|
|
<p>This is a new function provided by the Database Scanning facility. Given
|
|
an index for the choices defined by menuScan.h, it returns the scan period in
|
|
seconds. The argument can just be the scan field of a database record. If the
|
|
index is not associated with a periodic scan rate, the value 0.0 is
|
|
returned.</p>
|
|
|
|
<p><strong>New epicsString.h function</strong></p>
|
|
|
|
<p>A new function epicsStrCaseCmp has been added. It is like strcmp except
|
|
that it ignores case.</p>
|
|
|
|
<p><strong>macLib</strong></p>
|
|
|
|
<p>macParseDefns did not check for handle==NULL. The documentation for
|
|
macParseDefns was not correct.</p>
|
|
|
|
<center>
|
|
<h2>Changes since beta2</h2>
|
|
</center>
|
|
|
|
<p><strong>function - New Database Definition Keyword</strong></p>
|
|
|
|
<p>dbStaticLib and related programs now accept a new keyword in DBD files:</p>
|
|
<pre>function(name)</pre>
|
|
|
|
<p>Where <code>name</code> is the name of a function with "C" linkage that is
|
|
included in the IOC binary. This function will be automatically registered
|
|
with the registry at the same time as the record/device/driver tables, and is
|
|
intended to make using subroutine records much easier on non-vxWorks
|
|
systems.. Prior R3.14 releases required there to be a static registration
|
|
routine for such subroutines.</p>
|
|
|
|
<p>dbStaticLib has two additional routines to support this, dbDumpFunction()
|
|
and dbWriteFunctionFP(). dbDumpFunction has been added to the iocsh command
|
|
table.</p>
|
|
|
|
<p><strong>iocsh</strong></p>
|
|
|
|
<p>When executing commands from a script file, iocsh now echoes each command
|
|
to the terminal before execution. This makes it much easier to see where
|
|
errors are being reported.</p>
|
|
|
|
<p><strong>Solaris build requirement</strong></p>
|
|
|
|
<p><code>uname</code> must be defined for builds on solaris hosts because it
|
|
is used to determine the solaris version.</p>
|
|
|
|
<p><strong>Linux build note</strong></p>
|
|
|
|
<p>Under linux-x86 only, when SHARED_LIBRARIES=YES it is now possible to have
|
|
one or more directory paths burned into products as run-time locations for
|
|
the shared libraries. In configure/os/CONFIG_SITE.Common.linux-x86 add any
|
|
such absolute paths to the new make variable SHRLIB_SEARCH_DIRS
|
|
(lib/<arch> will be automatically appended to each directory given).</p>
|
|
|
|
<p><strong>RULES.Db</strong></p>
|
|
|
|
<p>A <code>*[nn].db</code> file will be created from an
|
|
<code>*.template</code> and a <code>*[nn].substitutions</code> file ,where
|
|
<code>nn</code> has a value between 0 and 99.</p>
|
|
|
|
<p><strong>Support for 64 bit long</strong></p>
|
|
|
|
<p>Many changes were made to support architectures on which a long is a 64
|
|
bit integer. The basic change was to change:</p>
|
|
<ul>
|
|
<li>long => epicsInt32 for anything that might get transfered to/from
|
|
network buffers</li>
|
|
<li>unsigned long => epicsUInt32 for anything that might get transfered
|
|
to/from network buffers</li>
|
|
</ul>
|
|
|
|
<p>The changes include the following:</p>
|
|
<ul>
|
|
<li>cvtFast</li>
|
|
<li>xxxRecord.h NOTE: In addition to the changes for long all enum fields
|
|
are now epicsEnum16</li>
|
|
<li>dbStaticLib</li>
|
|
<li>db_access</li>
|
|
<li>dbConvert and dbFastLinkConv</li>
|
|
</ul>
|
|
|
|
<p><strong>Hardware Link Definitions</strong></p>
|
|
|
|
<p>The various parts of hardware link definitions now accept HEX values,
|
|
e.g.</p>
|
|
<pre>field(INP,"L0 A1 C0 S0xa @")</pre>
|
|
|
|
<p>NOTES:</p>
|
|
<ul>
|
|
<li>This may not be compatible with Database Configuration Tools</li>
|
|
<li>If records are written via dbStaticLib the falues will NOT be written
|
|
in HEX.</li>
|
|
</ul>
|
|
|
|
<p><strong>dbDumpFldDes</strong></p>
|
|
|
|
<p>A macro has been defined so that client code can be written that is
|
|
compatible between 3.13 and 3.14.</p>
|
|
|
|
<p><span style="font-weight: bold">epicsMutex for posix</span></p>
|
|
<ul>
|
|
<li>No longer supports epicsMutexLockWithTimeout. This was done to allow a
|
|
more efficient posix implementation.</li>
|
|
<li>If PTHREAD_MUTEX_RECURSIVE is provided then the implementation uses
|
|
only pthread_mutex. This is much faster (2 to 3 times as fast) as the
|
|
previous implementation.</li>
|
|
</ul>
|
|
|
|
<p><strong>Mac OS X</strong></p>
|
|
|
|
<p>Now supported as development platform and as IOC.</p>
|
|
|
|
<p><strong>RTEMS</strong></p>
|
|
|
|
<p>Additional RTEMS-pc386 network drivers are available</p>
|
|
|
|
<p><strong>iocsh</strong></p>
|
|
|
|
<p>Configurable iocsh command-line editing support (none, readline,
|
|
libtecla)</p>
|
|
|
|
<p><strong>CA Reference Manual</strong></p>
|
|
|
|
<p>Many additions.</p>
|
|
|
|
<p><strong>CA Client Library</strong></p>
|
|
|
|
<p>Bugs related to connection speed when creating new channels and other
|
|
channels are not found fixed. Bugs related to proper schedualing in file
|
|
descriptor manager based clients fixed. Many other bugs were fixed.
|
|
Performance was significantly improved.</p>
|
|
|
|
<p><strong>Original CA Server Library (still employed in R3.14 by
|
|
iocCore)</strong></p>
|
|
|
|
<p>A bug was fixed where the server was in rare situations using excessive
|
|
CPU.</p>
|
|
|
|
<p><strong>Portable CA Server LIbrary</strong></p>
|
|
|
|
<p>Several bugs were fixed when performing integration testing with the
|
|
channel access gateway.</p>
|
|
|
|
<p><strong>GDD</strong></p>
|
|
|
|
<p>Many bugs and missing features fixed.</p>
|
|
|
|
<center>
|
|
<h2>Changes since beta1</h2>
|
|
</center>
|
|
|
|
<p><strong>dbCommon.dbd</strong></p>
|
|
|
|
<p>Field UDF now has a promptgroup. This allows users to set UDF false via
|
|
DCTs.</p>
|
|
|
|
<p><strong>errlog</strong></p>
|
|
|
|
<p>errlog no longer contains an atexit that calls errlogFlush. This did not
|
|
work on all operating systems. cantProceed, iocsh, and ca_task_exit all call
|
|
errlogFlush. Other applications may also have to call if before
|
|
terminating.</p>
|
|
|
|
<p><strong>mbboRecord</strong></p>
|
|
|
|
<p>mbboRecord now implements method cvt_dbaddr for the VAL field. If no state
|
|
vales or state strings are defined then it sets field_type and dbr_field_type
|
|
to DBF_USHORT.</p>
|
|
|
|
<p><strong>timeStamp changes</strong></p>
|
|
|
|
<p>Changes have been made to:</p>
|
|
<ul>
|
|
<li>Allow device support to set the time stamp (field TIME) of a
|
|
record.</li>
|
|
<li>Allow a record to receive it's time stamp from another record,</li>
|
|
</ul>
|
|
|
|
<p>epicsTime.h now has the definitions:</p>
|
|
<pre>#define epicsTimeEventBestTime -1
|
|
#define epicsTimeEventDeviceTime -2</pre>
|
|
|
|
<p>These are values for the TSE field of dbCommon.</p>
|
|
<ul>
|
|
<li><strong>epicsTimeEventBestTime</strong> means that code supplying the
|
|
time stamp should get the most accurate time possible. Currently this
|
|
only has meaning on vxWorks and if drvTS is supplying the time via some
|
|
hardware timing system. It means get the latest time from the hardware
|
|
system rather than from the vxWorks tick time. drvTs previously accepted
|
|
a hardcoded value of -1.</li>
|
|
<li><strong>epicsTimeEventDeviceTime</strong> means that recGblGetTimeStamp
|
|
doesn't modify the time field. This allows device support to supply the
|
|
time stamp.</li>
|
|
</ul>
|
|
|
|
<p>If the <strong>TSEL</strong> field refers to the <strong>TIME</strong>
|
|
field of a record then <strong>recGblGetTimeStamp</strong> sets
|
|
<strong>TIME</strong> equal to the time it gets from the record the
|
|
<strong>TSEL</strong> references. This works for both database and channel
|
|
access links. In this case field TSE is not used.</p>
|
|
<pre> </pre>
|
|
|
|
<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
|
|
ena bled, database puts to the record will not make the record process until
|
|
a CA pu t is again issued. This is 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><strong>dbCa</strong></p>
|
|
|
|
<p>Whenever a connection is made, a request to retrieve the control, display,
|
|
and alarm linits and the precision and units is automatically issued.
|
|
Previously this was only done if dbCaGetAttributes was called. This it is no
|
|
longer necessary to call dbCaGetAttributes.</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>Record Name Length</strong></p>
|
|
|
|
<p>The size of the name field has been expanded from 29 to 61, i.e. record
|
|
names can now have 60 characters.</p>
|
|
|
|
<p><strong>iocInit</strong></p>
|
|
|
|
<p>initialProcess is now called before interruptAccept. This means that
|
|
initial processing will be done before periodically scanned and I/O Inter
|
|
scanned records start processing.</p>
|
|
|
|
<p><strong>ellLib</strong></p>
|
|
|
|
<p>Casts have been removed that suppressed valuable error messages</p>
|
|
|
|
<p><strong>mbbiRecord</strong></p>
|
|
|
|
<p>All existing manipulations of UDF in process() are removed and udf is set
|
|
FALSE when the raw value is successfully read.</p>
|
|
|
|
<p><strong>selRecord</strong></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>cdCommands file</strong></p>
|
|
|
|
<p>Fixed a bug and revised the use of the IOCS_APPL_TOP setting in an
|
|
application's <top>/configure/CONFIG file (which specifies the path to
|
|
<top> as seen by the IOC) to apply the same modifications to all paths
|
|
output in the cdCommands file.</p>
|
|
|
|
<p><strong>dbStaticLib</strong></p>
|
|
|
|
<p>All routines with Recdes of Fielddes in their name are obsolete and
|
|
removed. A new routine dbDumpField replaces dbDumpFldDes.</p>
|
|
|
|
<center>
|
|
<h2>Changes since alpha2</h2>
|
|
</center>
|
|
All changes for release 3.13.5 that also apply to 3.14 have been made.
|
|
|
|
<p><b>devAiSoftRaw and devAoSoftRaw</b></p>
|
|
|
|
<p>A new state is defined for the LINR field. The name is "SLOPE", which
|
|
allows any device type to be used with manual settings of the EOFF and ESLO
|
|
fields. With this setting, the device support's special_linconv() routine is
|
|
only called when LINR=LINEAR.</p>
|
|
|
|
<p>The RTEMS TFTP remote filesystem driver now supports a limited form of the
|
|
chdir() system call. One restriction is that all pathnames passed to chdir()
|
|
must end in a / character, so IOC shell commands to change directories must
|
|
be given as</p>
|
|
|
|
<p>cd ../db/</p>
|
|
|
|
<center>
|
|
<h1>EPICS Release base 3.14.0alpha2</h1>
|
|
</center>
|
|
Since the alpha1 release some major changes were made to the build system, to
|
|
some of the libCom facilities, and to the iocsh facilities.
|
|
|
|
<p>The unbundled version of the sequencer has been build and tested with this
|
|
release. You must obtain a version of the sequencer that has been built
|
|
against alpha2.</p>
|
|
|
|
<p>A verion of the HPlanGpib support has been built and tested with this
|
|
release. Again you must obtain a version that builds with alpha2.</p>
|
|
|
|
<p>A new update to the Application Developer's Guide is available for this
|
|
release.</p>
|
|
|
|
<h3>Build changes</h3>
|
|
<ul>
|
|
<li>Operating system independant builds are now done in an O.Common
|
|
subdirectory and then installed instead of being performed directly in an
|
|
install directory.</li>
|
|
<li>Build definition names (e.g. RECTYPES, MENUS, DBDNAME, and BPTS) have
|
|
been changed to specify the name of the file to be created and installed
|
|
instead of the source file name.</li>
|
|
<li>All db and dbd related definitions and rules have been moved into
|
|
base/configure/RULES.Db file. The rules now allow multiple dbd files and
|
|
registerRecordDeviceDriver files to be created in a single Makefile.</li>
|
|
<li>"gnumake depends" no longer depends on a complete buildInstall.</li>
|
|
</ul>
|
|
|
|
<h3>Converting alpha1 applications to alpha2</h3>
|
|
Build modifications in alpha2 require the following changes to existing R3.14
|
|
applications.
|
|
<ul>
|
|
<li>Remove the now unused RULES files
|
|
|
|
<blockquote>
|
|
./configure/RULES.Db<br>
|
|
./configure/RULES.registerRecordDeviceDriver</blockquote>
|
|
</li>
|
|
<li>Delete the following line in ./configure/RULES
|
|
|
|
<blockquote>
|
|
include $(TOP)/configure/RULES.registerRecordDeviceDriver</blockquote>
|
|
</li>
|
|
<li>In <top>/configure/Makefile change
|
|
|
|
<blockquote>
|
|
@$(PERL) $(TOOLS)/makeConfigAppInclude.pl $(T_A) $@ $(TOP)</blockquote>
|
|
to
|
|
|
|
<blockquote>
|
|
@$(PERL) $(TOOLS)/makeConfigAppInclude.pl $(EPICS_HOST_ARCH) $(T_A) $@
|
|
$(TOP)</blockquote>
|
|
and add the line
|
|
|
|
<blockquote>
|
|
depends: install</blockquote>
|
|
to the bottom of the Makefile.</li>
|
|
<li>In all *App/*Db/Makefiles change
|
|
|
|
<blockquote>
|
|
include $(TOP)/configure/RULES.Db</blockquote>
|
|
to
|
|
|
|
<blockquote>
|
|
include $(TOP)/configure/RULES</blockquote>
|
|
</li>
|
|
<li>In all *App/src/Makefile files change
|
|
|
|
<blockquote>
|
|
DBDNAME = <name>App</blockquote>
|
|
to
|
|
|
|
<blockquote>
|
|
DBD += <name></blockquote>
|
|
and remove the line<br>
|
|
|
|
|
|
<blockquote>
|
|
DBDEXPAND = <name>Include.dbd </blockquote>
|
|
NOTE: If any of your *App/*Db/Makefiles contain "DBDNAME =" lines you
|
|
should make these same changes in that *Db dirctory.</li>
|
|
<li>In all *App/src/Makefile Makefiles change
|
|
|
|
<blockquote>
|
|
RECTYPES=<name>.h </blockquote>
|
|
to
|
|
|
|
<blockquote>
|
|
DBDINC+=<name> </blockquote>
|
|
change
|
|
|
|
<blockquote>
|
|
MENUS=<name>.h </blockquote>
|
|
to
|
|
|
|
<blockquote>
|
|
DBDINC+=<name> </blockquote>
|
|
change
|
|
|
|
<blockquote>
|
|
BPTS </blockquote>
|
|
to
|
|
|
|
<blockquote>
|
|
DBD </blockquote>
|
|
change
|
|
|
|
<blockquote>
|
|
INSTALLDB </blockquote>
|
|
to
|
|
|
|
<blockquote>
|
|
DB </blockquote>
|
|
change
|
|
|
|
<blockquote>
|
|
DBDINSTALL </blockquote>
|
|
to
|
|
|
|
<blockquote>
|
|
DBD </blockquote>
|
|
</li>
|
|
<li>In all example *App/src/Makefile files change
|
|
|
|
<blockquote>
|
|
example_SRCS_DEFAULT += registerRecordDeviceDriver.c </blockquote>
|
|
to
|
|
|
|
<blockquote>
|
|
example_SRCS_DEFAULT += <name>_registerRecordDeviceDriver.cpp
|
|
</blockquote>
|
|
where <name> is the base name of a <name>.dbd file which was
|
|
created from a <name>Include.dbd file and which will be loaded in a
|
|
st.cmd or stcmd.host script (e.g. example).</li>
|
|
<li>In ./iocBoot/ioc<name>/st.cmd files change
|
|
|
|
<blockquote>
|
|
dbLoadDatabase("dbd/exampleApp.dbd") </blockquote>
|
|
to
|
|
|
|
<blockquote>
|
|
dbLoadDatabase("dbd/example.dbd") </blockquote>
|
|
</li>
|
|
<li>In <top>/iocBoot/ioc<name>/stcmd.host files change
|
|
|
|
<blockquote>
|
|
dbLoadDatabase("../../dbd/exampleApp.dbd",0,0)</blockquote>
|
|
to
|
|
|
|
<blockquote>
|
|
dbLoadDatabase("../../dbd/example.dbd",0,0)</blockquote>
|
|
</li>
|
|
</ul>
|
|
|
|
<h3>EPICS_HOST_ARCH changes</h3>
|
|
|
|
<p>GNU compiler builds are now determined by the value of EPICS_HOST_ARCH and
|
|
are no longer specified in CONFIG_SITE. All references to the ANSI
|
|
(ACC/GCC) and CPLUSPLUS (CCC/G++) macros have been removed.</p>
|
|
|
|
<h3>libCom</h3>
|
|
|
|
<p>Most of the library routines and files starting with the prefix osi have
|
|
been changed to start with epics. Several also had major changes to their
|
|
user interface. See the latest version of the Application Developer's Guide
|
|
for details.</p>
|
|
|
|
<center>
|
|
<h2>EPICS Release base 3.14.0alpha1 Notes</h2>
|
|
</center>
|
|
|
|
<p><br>
|
|
</p>
|
|
|
|
<p>This is the first release of 3.14. This is the first release that supports
|
|
iocCore on platforms besides vxWorks.</p>
|
|
|
|
<p>iocCore is now supported on the following platforms:</p>
|
|
<ul>
|
|
<li>vxWorks
|
|
|
|
<blockquote>
|
|
Tornado II is required.</blockquote>
|
|
</li>
|
|
<li>RTEMS
|
|
|
|
<blockquote>
|
|
An open source real time operating system. It has been tested on
|
|
MVME167 and MC68360 processors. RTEMS also supports
|
|
powerPC.</blockquote>
|
|
</li>
|
|
<li>solaris
|
|
|
|
<blockquote>
|
|
Has been tested on solaris 2.6 and solaris 8 with Sun workshop 6.0 (C++
|
|
5.2). Sun workshop 5.0 (C++ 5.0) will not compile this version of
|
|
EPICS.</blockquote>
|
|
</li>
|
|
<li>Linux
|
|
|
|
<blockquote>
|
|
Has been tested on Redhat x86 platforms.</blockquote>
|
|
</li>
|
|
<li>winNT
|
|
|
|
<blockquote>
|
|
Testing has been done with visual C++ 6.0.</blockquote>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>A new version of the Application Developers Guide is available. The
|
|
following gives links to the new Application Developer's Guide and to RTEMS
|
|
information.</p>
|
|
|
|
<blockquote>
|
|
<a
|
|
href="http://www.aps.anl.gov/epics/modules/base/R3-14.php">http://www.aps.anl.gov/epics/modules/base/R3-14.php</a></blockquote>
|
|
|
|
<p>Most of the Application Developer's Guide has only minor changes. The
|
|
following are new.</p>
|
|
<ul>
|
|
<li>Chapter 2 describes the new features for 3.14.</li>
|
|
<li>Chapter 4 describes the build facility for 3.14</li>
|
|
<li>Chapters 19 and 20 describe libCom, which was not previously
|
|
documented.</li>
|
|
</ul>
|
|
|
|
<p><br>
|
|
It must be emphasized that this is an alpha release.</p>
|
|
<ul>
|
|
<li>Please don't use it for existing operational systems</li>
|
|
<li>Don't build your operational CA clients with it.</li>
|
|
<li>The APIs for new components in libCom are still evolving so if you use
|
|
them be prepared for changes.</li>
|
|
<li>HPUX - No support currently because we could not find good support for
|
|
multithreading.</li>
|
|
</ul>
|
|
|
|
<h4>Building Applications</h4>
|
|
<ul>
|
|
<li>For new applications see Chapters 2 (New Features) and Chapter 4 (Build
|
|
Facility) of the Application Developer's Guide.</li>
|
|
<li>For existing applications the old config rules are still supported.
|
|
Some changes, however, are needed. Documentation is being prepared and
|
|
will appear in these release notes sooon.</li>
|
|
</ul>
|
|
</body>
|
|
</html>
|