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.
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.
This is really a demo and a complete EPICS IOC application, not a template. It will be made available separately.
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
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.
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 EPICS_TIMEZONE
parameter was added
after the uncommented version.
Many of the commands crashed if given no arguments. They are now more crash proof.
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.
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
DBD=xxx.dbd xxx_DBD = f1.dbd f2.dbd f3.dbd
an xxxInclude.dbd file will be created containing the lines
include "f1.dbd" include "f2.dbd" include "f1.dbd"
and dbExpand will be invoked to create the xxx.dbd file from the xxxInclude.dbd.
Old solaris 6 specific compiler options have been removed.
The new top level Makefile only target, cvsclean, removes cvs .#* files in all dirs of the top directory tree.
The new archclean target is like the clean target except that O.Common directories are not removed.
Add epicsSnStrPrintEscaped.
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.
epicsRegisterFunction(name) in conjunction with the dbd 'function' keyword can be used to register functions referred to by record subroutine name fields.
The access security configuration rules now accept quoted strings where just names were allowed previously.
All dump routines now have FP version.
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)
This bug was introduced in R3.14.5 and does not exist in any other release.
Subscription updates intermittently do not resume depending on circumstances when unresponsive circuit reconnects
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.
This bug probably exists in all R3.14 releases.
Passing a nill function pointer to ca_replace_access_rights_event() should install a noop handler, but this currently causes a failure.
Regression tests have been installed to detect this mistake.
This bug was introduced in R3.14.5 and does not exist in any other release.
CA client library crash when clear channel request occurs in get callback handler
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.
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
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.
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.
Probably introduced in a previous R3.14 release.
An intermittent C++ exceptions during regression testing.
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 not 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().
This bug is only present in the portable CA server and so it does not 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.
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.
A call to "assert (! this->pValue->unreference ())" failed in ..\..\..\..\include\smartGDDPointer.h line 88.
Thanks to Stephanie Alison at SLAC for discovering the bug and to Ken Evans at the APS for reminding me to fix it.
Don't seg-fault if no argument is passed to dbtr.
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.
A new function epicsStrnCaseCmp has been added. It is like strncmp except that it ignores case.
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:
This will install the compatibility files needed to build R3.13 extensions built with this R3.14 base.
This will install the compatibility files needed to build R3.13 extensions and IOC applications built with this R3.14 base.
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.
To install the templates, use the following commands:
mkdircd <base>/bin/<arch>/makeBaseApp.pl -t vlinac vlinac <base>/bin/<arch>/makeBaseApp.pl -i -t vlinac vlinac
For further information, see:
<top>/vlinacApp/misc/README <top>/vlinacApp/misc/Virtual_Linac_Info.pdf
record(stringin, "$(user)now") { field(DESC, "Current time and date") field(DTYP, "Soft Timestamp") field(INP, "@%Y-%m-%d %H:%M:%S.%03f") }
Better error messages are now generated.
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.
dbCaAddLinkCallback is a new function. The caller can provide a connect and monitor callback. See the Application Developer's Guide for details.
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:
field(DTYP,"Async Soft Channel")
The CALC and OCAL fields now have a size of 40 so that they are the same as the calcRecord.
calcoutRecord now has associated device support. The default support will act just like the old calcout. Support bis also available that uses dbCaPutLinkCallback.
The fields ZRST,...,FFST are now special(SPC_MOD).
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.
A new function has been added epicsStrPrintEscaped, which converts the standard C escape characters to \xxx characters.
The 'system' command has been added to the IOC shell. To enable this
command, add registrar(iocshSystemCommand)
to an application
database description file.
This has been removed from base.
'printf-style' functions like errlogPrintf have their arguments verified against their format string when compiled with gcc.
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.
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.
Thanks to Ernest Williams at the SNS for discovering and helping to diagnose the problem.
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.
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.
Thanks to Mark Rivers for initially reporting the bug and energetically assisting with identifying the cause.
The record processing trace output generated when the .TPRO
field of a record is non-zero now includes the name of the thread that is
actually doing the processing.
Previously if a dbGetLink failed on one of the input links, dbGetLink was not called for the remaining links. Now it is.
put notify did not act properly if a record had disp=TRUE, i.e. if puts are disabled. It now returns putNotifyPutDisabled.
This is no longer supported
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.
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.
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().
For operating systems other than vxWorks, there is now a target file
created in each iocBoot/ioc
directory called
envPaths
, which performs the same functions as the
cdCommands
file in vxWorks but using environment variables. The
entries in envPaths
are derived from the contents of the
application's configure/RELEASE
file.
Database (.db
and .dbd
) filenames passed to
dbLoadDatabase
, dbLoadRecords
and inside
dbLoadTemplate
substitutions files will now have environment
variable macros expanded before opening. These are expressed using the
standard ${MACRO}
syntax. Inside a template substitutions file
the filename must be enclosed in double quotation marks if macros are
used.
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 registerRecordDeviceDriver
. Assuming
that your application's fully expanded dbd file is called
example.dbd
you would modify the lines
dbLoadDatabase("dbd/example.dbd",0,0) registerRecordDeviceDriver(pdbbase)
to become
dbLoadDatabase("dbd/example.dbd",0,0) example_registerRecordDeviceDriver(pdbbase)
-o outfile
optionA commandline option -o
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.
variable()
supported in dbd filesDatabase definition (.dbd) files can now contain declarations of simple
static variables, a facility intended for driver debugging purposes. These
variable(name)
or variable(name,type)
declarations
are preserved by dbExpand (type
is int
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
epicsExportAddress(type,name)
. Only plain int
and
double
types are supported.
macEnvExpand
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.
iocsh var command
For simple applications such as controlling the value of debugging flags.
Devlopers with more complex expression handling requirements should consider
use of the cexp package. The available variables are defined
by the new variable
dbd file keyword.
iocshArgPersistentString
Tell iocsh to make a copy of the argument string before passing it to the handler function.
epicsStrDup
Operating-system independent replacement for strdup().
epicsMessageQueue
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.
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
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.
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.
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.
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.
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.
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.
Build System
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:
ConvertingR3.14.1AppsToR3.14.2
for details. If you are using the function DBD keyword it no longer exists. Please read this conversion document for details.
Application Developer's Guide
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.
dbGetLink
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:
prset->get_array_info(paddr,&no_elements,&offset); write nNew elements into array >> prset->put_array_info(paddr,nNew);
This sets NORD = nNew. But because of the dbGetLink bug, the soft device support attached to the waveform record sets NORD to NELM.
This problem is fixed. The actual bug was in macros in dbAccessDefs.h
Access Security
The host names are now converted to lower case. This fixes incompatibilities between various platforms.
string records
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).
epicsMessageQueue
A new facility that provides the capabilities of vxWorks msgQLib. See the Application Developer's Guide (libCom OSI) for details.
epicsStdio and errlogPrintf
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.
The errlogPrintf facility has been modified to use this facility. Thus it is not longer subject to a possible buffer overflow.
scanPeriod
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.
New epicsString.h function
A new function epicsStrCaseCmp has been added. It is like strcmp except that it ignores case.
macLib
macParseDefns did not check for handle==NULL. The documentation for macParseDefns was not correct.
function - New Database Definition Keyword
dbStaticLib and related programs now accept a new keyword in DBD files:
function(name)
Where name
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.
dbStaticLib has two additional routines to support this, dbDumpFunction() and dbWriteFunctionFP(). dbDumpFunction has been added to the iocsh command table.
iocsh
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.
Solaris build requirement
uname
must be defined for builds on solaris hosts because it
is used to determine the solaris version.
Linux build note
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).
RULES.Db
A *[nn].db
file will be created from an
*.template
and a *[nn].substitutions
file ,where
nn
has a value between 0 and 99.
Support for 64 bit long
Many changes were made to support architectures on which a long is a 64 bit integer. The basic change was to change:
The changes include the following:
Hardware Link Definitions
The various parts of hardware link definitions now accept HEX values, e.g.
field(INP,"L0 A1 C0 S0xa @")
NOTES:
dbDumpFldDes
A macro has been defined so that client code can be written that is compatible between 3.13 and 3.14.
epicsMutex for posix
Mac OS X
Now supported as development platform and as IOC.
RTEMS
Additional RTEMS-pc386 network drivers are available
iocsh
Configurable iocsh command-line editing support (none, readline, libtecla)
CA Reference Manual
Many additions.
CA Client Library
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.
Original CA Server Library (still employed in R3.14 by iocCore)
A bug was fixed where the server was in rare situations using excessive CPU.
Portable CA Server LIbrary
Several bugs were fixed when performing integration testing with the channel access gateway.
GDD
Many bugs and missing features fixed.
dbCommon.dbd
Field UDF now has a promptgroup. This allows users to set UDF false via DCTs.
errlog
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.
mbboRecord
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.
timeStamp changes
Changes have been made to:
epicsTime.h now has the definitions:
#define epicsTimeEventBestTime -1 #define epicsTimeEventDeviceTime -2
These are values for the TSE field of dbCommon.
If the TSEL field refers to the TIME field of a record then recGblGetTimeStamp sets TIME equal to the time it gets from the record the TSEL references. This works for both database and channel access links. In this case field TSE is not used.
aiRecord and aoRecord: Setting eoff=egul
Instead of init_record executing code like
if ((pai->linr == menuConvertLINEAR) && pdset->special_linconv) { pai->eoff = pai->egul; }
It now executes:
if ((pai->eslo==1.0) && (pai->eoff==0.0)) { pai->eoff = pai->egul; }
aoRecord has a similar change
This was done so that old device support which does not implement special_linconv still works.
CA puts to disabled record
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.
TPRO - trace processing
If dbProcess is called recursively by different tasks, it did not properly handle TPRO. Consider the following database:
record(ao,"mrkao") { field(OUT,"mrkai CA") field(TPRO,"1") } record(ai,"mrkai") { field(TPRO,"1") }
If a channel access put is sent to mrkao, no message is issued when mrkai is processed.
This is now fixed.
TSconfigure
If in your st.cmd file you issue the command.
TSconfigure(0,0,0,0,0,0,1)
And set the TSE field of any record to a non zero value, then a crash will occur when recGblGetTimeStamp is called.
This is now fixed.
calcoutRecord
nsev not sevr must be checked to decide if dbPutLink should be called.
dbCa
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.
calcPerform
This now returns a non zero value if the result is nan (not a number).
Record Name Length
The size of the name field has been expanded from 29 to 61, i.e. record names can now have 60 characters.
iocInit
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.
ellLib
Casts have been removed that suppressed valuable error messages
mbbiRecord
All existing manipulations of UDF in process() are removed and udf is set FALSE when the raw value is successfully read.
selRecord
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.
cdCommands file
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.
dbStaticLib
All routines with Recdes of Fielddes in their name are obsolete and removed. A new routine dbDumpField replaces dbDumpFldDes.
devAiSoftRaw and devAoSoftRaw
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.
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
cd ../db/
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.
A verion of the HPlanGpib support has been built and tested with this release. Again you must obtain a version that builds with alpha2.
A new update to the Application Developer's Guide is available for this release.
./configure/RULES.Db
./configure/RULES.registerRecordDeviceDriver
include $(TOP)/configure/RULES.registerRecordDeviceDriver
@$(PERL) $(TOOLS)/makeConfigAppInclude.pl $(T_A) $@ $(TOP)to
@$(PERL) $(TOOLS)/makeConfigAppInclude.pl $(EPICS_HOST_ARCH) $(T_A) $@ $(TOP)and add the line
depends: installto the bottom of the Makefile.
include $(TOP)/configure/RULES.Dbto
include $(TOP)/configure/RULES
DBDNAME = <name>Appto
DBD += <name>and remove the line
DBDEXPAND = <name>Include.dbdNOTE: If any of your *App/*Db/Makefiles contain "DBDNAME =" lines you should make these same changes in that *Db dirctory.
RECTYPES=<name>.hto
DBDINC+=<name>change
MENUS=<name>.hto
DBDINC+=<name>change
BPTSto
DBDchange
INSTALLDBto
DBchange
DBDINSTALLto
DBD
example_SRCS_DEFAULT += registerRecordDeviceDriver.cto
example_SRCS_DEFAULT += <name>_registerRecordDeviceDriver.cppwhere <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).
dbLoadDatabase("dbd/exampleApp.dbd")to
dbLoadDatabase("dbd/example.dbd")
dbLoadDatabase("../../dbd/exampleApp.dbd",0,0)to
dbLoadDatabase("../../dbd/example.dbd",0,0)
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.
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.
This is the first release of 3.14. This is the first release that supports iocCore on platforms besides vxWorks.
iocCore is now supported on the following platforms:
Tornado II is required.
An open source real time operating system. It has been tested on MVME167 and MC68360 processors. RTEMS also supports powerPC.
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.
Has been tested on Redhat x86 platforms.
Testing has been done with visual C++ 6.0.
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.
http://www.aps.anl.gov/epics/base/R3-14/6.php
Most of the Application Developer's Guide has only minor changes. The following are new.
It must be emphasized that this is an alpha release.