EPICS Base Release 3.15.0.x

EPICS Base 3.15.0.x releases are not intended for use in production systems.

Changes between 3.14.x and 3.15.0.x

epicsStdioRedirect.h merged into epicsStdio.h

The definitions from the header file epicsStdioRedirect.h have been moved into epicsStdio.h so all calls to printf(), puts() and putchar() in files that include that OSI header will now be subject to stdout redirection. In past releases (3.14.7 and later) it was necessary to request the redirection support by including the epicsStdioRedirect.h header file. The header file is still provided, but now it just includes epicsStdio.h.

Named Soft Events

Soft events can now be given meaningful names instead of just using the numbers 1-255. The EVNT field is now a DBF_STRING. The post_event() API is now deprecated but still works. It should be replaced by code that in advance looks up the EVNTPVT event handle associated with the named event by calling eventNameToHandle(char *), and when that event occurs passes that handle to the new postEvent(EVNTPVT) routine (which may be called from interrupt level). A new iocsh command postEvent name will trigger a named event from the command-line or a startup script (on vxWorks the expression postEvent(eventNameToHandle("name")) must be used instead though).

Parallel Builds

As EPICS sites get computers with more CPUs they report additional bugs in our parallel build rules. Various issues have been fixed by separating out the build rules that generate dependency (.d) files, ensuring that they are constructed at the appropriate time in the build.

These rule changes can cause additional warning messages to appear when building support modules. Where an application provides its own Makefile rules it may now have to add rules to construct an associated dependency file. In many cases though the change needed is just to replace a dependency for a target$(OBJ) with the target$(DEP) so this

    myLib$(OBJ): myLib_lex.c

becomes

    myLib$(DEP): myLib_lex.c

To debug build issues assocated with dependency files, use the command make --debug=m which tells GNUmake to display information about what it is doing during the first pass when it updates its makefiles.

Removed tsDefs.h

The deprecated tsDefs API was provided for 3.13 compatibility only, and has now been removed. Convert any remaining code that used it to call the epicsTime API instead.

Changes to epicsVersion.h

The two macros EPICS_UPDATE_LEVEL and EPICS_CVS_SNAPSHOT have been deleted from the epicsVersion.h file; they were deprecated in R3.14 and can be replaced with EPICS_PATCH_LEVEL and EPICS_DEV_SNAPSHOT respectively.

A new pair of macros has been added to make version number comparisons easier. Code that will not work with a version of Base before 3.15.0 can now be written like this to prevent it from compiling:

#if defined(VERSION_INT) && EPICS_VERSION_INT < VERSION_INT(3,15,0,0)
#  error EPICS Base R3.15.0 or later is required
#endif

Added support for iocLogPrefix

Added a iocLogPrefix command to iocsh. This adds a prefix to all messages from this IOC (or other log client) as they get sent to the iocLogServer. This lets sites use the "fac=<facility>" syntax for displaying the facility, process name etc. in log viewers like the cmlogviewer.

Reworked the epicsEvent C & C++ APIs

Enabled histogram record type

The histogram record was not included in the base.dbd file in any 3.14 release, but has now been added along with its associated soft device support. The build system now generates the list of all the record.dbd files in base automatically in src/std/rec/Makefile.

Reorganization of src/

Reorganization of subdirectories of src/ to better represent the relation between different parts as described in the following table.

This change also allows the number of libraries built to be reduced to: libCap5.so, libca.so, libdbCore.so, libdbStaticHost.so, libCom.so, libcas.so, libdbRecStd.so, and libgdd.so

Component Dependency Library name Description
src/tools Build system scripts
src/libCom src/tools Com Utility routines and OS-independant API
src/template src/tools User application templates (e.g. makeBaseApp)
src/ca/client src/libCom ca Channel Access client
src/ca/legacy/gdd src/ca/client gdd Generic data layer for PCAS
src/ca/legacy/pcas src/ca/legacy/gdd cas Portable Channel Access Server
src/ioc src/ca dbCore Core database processing functions
src/std src/ioc dbRecStd Standard records, soft device support and the softIoc

In order to better reflect these relations the following directories and files were moved as described:

Relocations
PreviousNew
libCom
src/RTEMS src/libCom/RTEMS
src/toolsComm/flex src/libCom/flex
src/toolsComm/antelope src/libCom/yacc
src/dbStatic/alarm.h
.../alarmString.h
src/libCom/misc/
IOC Core Components
src/bpt src/ioc/bpt
src/db src/ioc/db
src/dbStatic src/ioc/dbStatic
src/dbtools src/ioc/dbtemplate
src/misc src/ioc/misc
src/registry src/ioc/registry
src/rsrv src/ioc/rsrv 1
Standard Record Definitions
src/dev/softDev src/std/dev
src/rec src/std/rec
src/softIoc src/std/softIoc
Channel Access
src/ca src/ca/client
src/catools src/ca/client/tools
src/cap5 src/ca/client/perl
src/gdd src/ca/legacy/gdd
src/cas src/ca/legacy/pcas
src/excas src/ca/legacy/pcas/ex
User Templates
src/makeBaseApp src/template/base
src/makeBaseExt src/template/ext
Dispersed
src/util 2 src/ca/client
src/ca/client/test
src/libCom/log
src/as 3 src/libCom/as
src/ioc/as

1 RSRV is built as part of dbCore due to its tight (bidirectional) coupling with the other database code.

2 The contents for src/util/ moved to three locations. The caRepeater init script was moved to src/ca/client/. ca_test is now in src/ca/client/test/. The iocLogServer was moved into the same directory (src/libCom/log) as the log client code.

3 The Access Security code has been divided, with the parts not related to the database (lexer/parser and trap registration) becoming part of libCom. The remaining components are included in the dbCore library

Moved src/RTEMS/base directory

These files are now found under src/RTEMS.

Removed 3.13 compatibility

Removed the 3.13 <top>/config directory and build compatibility rules and variables, and various conversion documents.