diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html index ca84f0535..c212f664d 100644 --- a/documentation/RELEASE_NOTES.html +++ b/documentation/RELEASE_NOTES.html @@ -2,7 +2,7 @@ "http://www.w3.org/TR/html4/loose.dtd">
- +iocInit() installs an signal handler for ignoring SIGHUP. This fixes a +problem that appeared with soft IOCs run as a procServ child on some Linux +systems, where a disconnecting CA client would cause the soft IOC to get a +SIGHUP and exit.
+Several changes have been made to the build system, although these changes -should not affect the contents of Makefiles or any applications using -Base. They do however require that the version of GNU Make used be 3.80 (3.81?) -or later. These changes are briefly:
- +should not affect the contents of Makefiles or any applications +using Base. They do however require that the version of GNU Make used be 3.80 +(3.81?) or later. These changes are briefly:A new tool is provided that expands out @VAR@ macros. By - default it knows the value of @TOP@, @ARCH@ and any paths - defined in the application's configure/RELEASE file, but additional - macros can be defined in the Makefile that uses it by adding to the - EXPAND_VARS macro like the example following, which creates an - @EXE@ macro that expands out to .exe on windows and to - nothing on other platforms:
- +A new tool is provided that expands out @VAR@ macros. By + default it knows the value of @TOP@, @ARCH@ and any + paths defined in the application's configure/RELEASE file, but + additional macros can be defined in the Makefile that uses it by + adding to the EXPAND_VARS macro like the example following, + which creates an @EXE@ macro that expands out to .exe + on windows and to nothing on other platforms:
EXPAND_VARS += EXE=$(EXE)- -
Files that contain @VAR@ macros to be substituted must have an - at sign @ as the last character of their name and be listed - in the EXPAND variable of their Makefile. The expanded - file will have the same name as the original with the @ - suffix removed, and is then available for compiling or installing using any - other build mechanism.
+Files that contain @VAR@ macros to be substituted must have + an at sign @ as the last character of their name and be + listed in the EXPAND variable of their Makefile. The + expanded file will have the same name as the original with the + @ suffix removed, and is then available for compiling or + installing using any other build mechanism.
Support has been added for installing Perl library modules. The +
Support has been added for installing Perl library modules. The Makefile variable PERL_MODULES can be set to a list of - names of files to be installed into the $(TOP)/lib/perl directory. - The above macro expansion facility can then be used in perl programs that - use these libraries to set the perl search path to include that directory. - The syntax for this is as follows:
- + names of files to be installed into the $(TOP)/lib/perl + directory. The above macro expansion facility can then be used in perl + programs that use these libraries to set the perl search path to include + that directory. The syntax for this is as follows:use lib '@TOP@/lib/perl'; use MyModule;-
The filenames listed in PERL_MODULES can include subdirectory path components and the build system will preserve these in the installed result.
Rules and macros were added for creating an *.acf file, access security -configuration file, from an *.acs file using the C preprocessor. -An .acs file has the same format as an .acf file with the addition of -'#include "<filename>"' and '#define <macroname> <value>' -lines. The C preprocessor includes the #include files and performs the -macro substitutions. -
+Rules and macros were added for creating an *.acf file, access security +configuration file, from an *.acs file using the C preprocessor. An .acs file +has the same format as an .acf file with the addition of '#include +"<filename>"' and '#define <macroname> <value>' lines. The +C preprocessor includes the #include files and performs the macro +substitutions.
In previous versions the INDX field of a subArray record was set to zero if -the array that it reads through its INP field became empty. From this release -the INDX field will only be modified by the record's process() routine if INDX -is greater than MALM. In the event that the no data is read through the INP -link, the subArray's UDF field will be set and a UDF/INVALID alarm will be -generated.
+In previous versions the INDX field of a subArray record was set to zero +if the array that it reads through its INP field became empty. From this +release the INDX field will only be modified by the record's process() +routine if INDX is greater than MALM. In the event that the no data is read +through the INP link, the subArray's UDF field will be set and a UDF/INVALID +alarm will be generated.
The following target architectures have been added to this release, although -the core developers lack the ability to test all of them:
- +The following target architectures have been added to this release, +although the core developers lack the ability to test all of them:
The compile line list of directories to search for header files now includes -O.Common and the existing os subdirectories of SRC_DIRS -<src_dir>/os/<OS_CLASS>, <src_dir>/os/posix, and +
The compile line list of directories to search for header files now +includes O.Common and the existing os subdirectories of SRC_DIRS +<src_dir>/os/<OS_CLASS>, <src_dir>/os/posix, and <src_dir>/os/default.
The -j jobs option is now supported for users of GNU Make -version 3.80 or later. The -j option speeds up building by allowing +version 3.80 or later. The -j option speeds up building by allowing multiple jobs (build commands) to be run in parallel; this will have the most effect on hosts with multiple symmetric processors, but can also speed up -uni-processor builds. Builds still work as before when run without -j, -but using the -j option with an earlier version of GNU make will fail -since this relies on the $(eval) function which was introduced in GNU -Make 3.80.
+uni-processor builds. Builds still work as before when run without +-j, but using the -j option with an earlier version of GNU +make will fail since this relies on the $(eval) function which was +introduced in GNU Make 3.80. -The -j option has been tested with this version of EPICS Base, but -it may not work for Extensions or IOC applications unless their dependancies are -specified correctly.
+The -j option has been tested with this version of EPICS Base, +but it may not work for Extensions or IOC applications unless their +dependancies are specified correctly.
New DIRS directory dependancy specifications are required to determine the -directory build order with -j. For example if we have 2 directories, +directory build order with -j. For example if we have 2 directories, src and configure, and the configure directory must be built before the src directory, the Makefile should contain:
--DIRS = configure src +DIRS = configure src src_DEPEND_DIRS = configure
The directory dependancy specifications are only needed when -j is -given to make. Without the -j the order of directories in the DIRS -definition determines the build order as before.
+The directory dependancy specifications are only needed when -j +is given to make. Without the -j the order of directories in the +DIRS definition determines the build order as before.
Some sites may be using breakpoint tables that are not monotonic in one -direction. In R3.14.9 both axes of a breaktable had to be monotonic; a table -will not be loaded if either the raw or engineering values change direction. -There are situations where this check is too strict however, so a new variable -named dbBptNotMonotonic has been added that disables this check if its -value is non-zero.
+direction. In R3.14.9 both axes of a breaktable had to be monotonic; a table +will not be loaded if either the raw or engineering values change direction. +There are situations where this check is too strict however, so a new +variable named dbBptNotMonotonic has been added that disables this +check if its value is non-zero. -Breakpoint tables are often included in an IOC's .dbd file, but they can also -be loaded from a .db file (although VDCT will probably not understand them). -Since there is no way to set the above variable inside the dbExpand -program that expands out an IOC's .dbd file (which also rejects non-monotonic -breaktables), all applications that use such tables will have to load those -tables separately, using either dbLoadDatabase or -dbLoadRecords.
+Breakpoint tables are often included in an IOC's .dbd file, but they can +also be loaded from a .db file (although VDCT will probably not understand +them). Since there is no way to set the above variable inside the +dbExpand program that expands out an IOC's .dbd file (which also +rejects non-monotonic breaktables), all applications that use such tables +will have to load those tables separately, using either +dbLoadDatabase or dbLoadRecords.
Added support for more 'Global Environment Variables'. Documented in -the EPICS/RTEMS tutorial.
+Added support for more 'Global Environment Variables'. Documented in the +EPICS/RTEMS tutorial.
Set NTP server as well as nameserver and log server from server -bootstrap settting.
+Set NTP server as well as nameserver and log server from server bootstrap +settting.
To prevent an interactive shell from being started, give a -S (upper -case) option on the softIoc command line. The old -s (lower case) -option is still accepted, but now does nothing.
+To prevent an interactive shell from being started, give a -S +(upper case) option on the softIoc command line. The old -s (lower +case) option is still accepted, but now does nothing.
Some error messages output by the dbLoadRecords parser should be easier to -understand, having been reworded to report what was actually the problem rather -than just which routine found the error...
+understand, having been reworded to report what was actually the problem +rather than just which routine found the error...The iocsh command registration data and routines have been moved out of the -src/iocsh directory (which now no longer exists) into a file for each -library. At the same time, the iocsh implementation code has been moved into -libCom. There is no libiocsh.a library created any more, so any -applications (such as the sequencer) which explicitly list iocsh in a -xxx_LIBS definition in their Makefile(s) will need to be modified to -have the library name removed. In most cases though the library will have been -included using the EPICS_BASE_IOC_LIBS or EPICS_BASE_HOST_LIBS -variables that are set in Base, and thus no changes will be needed.
- +The iocsh command registration data and routines have been moved out of +the src/iocsh directory (which now no longer exists) into a file for +each library. At the same time, the iocsh implementation code has been moved +into libCom. There is no libiocsh.a library created any more, so any +applications (such as the sequencer) which explicitly list iocsh in +a xxx_LIBS definition in their Makefile(s) will need to be modified +to have the library name removed. In most cases though the library will have +been included using the EPICS_BASE_IOC_LIBS or +EPICS_BASE_HOST_LIBS variables that are set in Base, and thus no +changes will be needed.
The cygwin make version 3.81-1 does not handle MS-DOS path names and thus does not work for EPICS builds with RELEASE file definitions. From the -discussion on the cygwin mailing list it looks like this will be fixed in make -version 3.82. In the meantime make version 3.80 or a fixed make can be -downloaded from -this -website. +discussion on the cygwin mailing list it looks like this will be fixed in +make version 3.82. In the meantime make version 3.80 or a fixed make can be +downloaded from this +website.
The following target architectures have been added to this release, although -the core developers lack the ability to test all of them:
- +The following target architectures have been added to this release, +although the core developers lack the ability to test all of them:
Wind River Systems do not support optimization levels beyond -O2 for -vxWorks applications compiled using gcc, so optimized vxWorks builds are now set -to -O2 only (we currently use -O3 everywhere else).
+Wind River Systems do not support optimization levels beyond -O2 +for vxWorks applications compiled using gcc, so optimized vxWorks builds are +now set to -O2 only (we currently use -O3 everywhere +else).
There was a bug in the portable channel access server library that prevented -the PV Gateway from being able to handle and pass on alarm acknowledgements from -the EPICS Alarm Handler ALH. This has been fixed in this release and should only -require that the gatewey be recomplied against this version of Base.
+There was a bug in the portable channel access server library that +prevented the PV Gateway from being able to handle and pass on alarm +acknowledgements from the EPICS Alarm Handler ALH. This has been fixed in +this release and should only require that the gatewey be recomplied against +this version of Base.
The parser for the substitutions file accepted by dbLoadTemplate() has been -revised, and is now stricter than it used to be — unmatched characters -that were accepted and discarded without warning before will now generate -errors. The quote characters at the two ends of a quoted string value must now -match, although either single or double quotes can be used. Escaped characters -inside a quoted string should pass safely through to the underlying -dbLoadRecord() command. The characters permitted in a bareword parameter (i.e. a -filename or value that is not inside quotes) have been reduced from the overly -wide set allowed before; the permitted characters now comprise: a-z A-Z 0-9 -_ - + : . / \ [ ] < > ;
+The parser for the substitutions file accepted by dbLoadTemplate() has +been revised, and is now stricter than it used to be — unmatched +characters that were accepted and discarded without warning before will now +generate errors. The quote characters at the two ends of a quoted string +value must now match, although either single or double quotes can be used. +Escaped characters inside a quoted string should pass safely through to the +underlying dbLoadRecord() command. The characters permitted in a bareword +parameter (i.e. a filename or value that is not inside quotes) have been +reduced from the overly wide set allowed before; the permitted characters now +comprise: a-z A-Z 0-9 _ - + : . / \ [ ] < > ;
Field value strings loaded from a database file by dbLoadRecords() can now use C89-compatible escaped character codes such as \", \', \t, \n, \064 and -\x7e. The parser also now checks for and reports strings that have a newline +\x7e. The parser also now checks for and reports strings that have a newline character in them as an error - if you want a newline in a field, use the \n -escaped version. These escapes only apply to the value part of a field() entry -in .db file though; no other strings have escape codes translated.
+escaped version. These escapes only apply to the value part of a field() +entry in .db file though; no other strings have escape codes translated.These test programs are no longer installed into the bin/arch -directory. Running all these programs on any host architecture is as simple as -typing make runtests in the base top level directory or in any -appropriate subdirectory. The runtests target uses Perl's Test::Harness module -to execute all of the test programs and summarize the result. It is also -possible to run individual tests as desired, by executing them from the relevent -O.<arch> directory; the program output is designed to be comprehensible to -humans.
+directory. Running all these programs on any host architecture is as simple +as typing make runtests in the base top level directory or in any +appropriate subdirectory. The runtests target uses Perl's Test::Harness +module to execute all of the test programs and summarize the result. It is +also possible to run individual tests as desired, by executing them from the +relevent O.<arch> directory; the program output is designed to be +comprehensible to humans. -For vxWorks and RTEMS, a test harness has been created that will run all of -the test programs in a suitable order. At a vxWorks target shell, type:
+For vxWorks and RTEMS, a test harness has been created that will run all +of the test programs in a suitable order. At a vxWorks target shell, type:
-@@ -311,53 +308,56 @@ summarize the results of the individual test programs.ld </path/to/base/bin/vxWorks-arch/vxTestHarness.munch +ld </path/to/base/bin/vxWorks-arch/vxTestHarness.munch cd "/path/to/writable/directory" epicsRunLibComTests
The handling of breakpoint table data has been reworked. It is now possible -to give table data in either ascending or descending order, and the breakpoint -data may have a negative slope such that the engineering values increase while -the raw values decrease and vice versa. The only restriction on the data is that -is must be monatonically increasing or decreasing, so you can't use a breakpoint -table for curves that have local minima or maxima. This restriction is checked -for when the breakpoint table is loaded.
+The handling of breakpoint table data has been reworked. It is now +possible to give table data in either ascending or descending order, and the +breakpoint data may have a negative slope such that the engineering values +increase while the raw values decrease and vice versa. The only restriction +on the data is that is must be monatonically increasing or decreasing, so you +can't use a breakpoint table for curves that have local minima or maxima. +This restriction is checked for when the breakpoint table is loaded.
The build configuration support for vxWorks 6.x has changed significantly, having been recombined with the older vxWorks 5.x support. The two target architectures vxWorks6-mv2100 and vxWorks6-mv5100 have been -removed; IOCs built under vxWorks 6.x using these architectures must revert to -the original vxWorks-ppc603_long and vxWorks-ppc604_long -architectures instead. The configuration file CONFIG_SITE.Common.vxWorksCommon -now specifies the vxWorks version number, as well as the filesystem path to -the installation of vxWorks using the WIND_BASE variable.
+removed; IOCs built under vxWorks 6.x using these architectures must revert +to the original vxWorks-ppc603_long and vxWorks-ppc604_long +architectures instead. The configuration file +CONFIG_SITE.Common.vxWorksCommon now specifies the vxWorks version number, as +well as the filesystem path to the installation of vxWorks using the +WIND_BASE variable.The calc expression parser and exective have undergone a signficant overhaul, -although the API and expression language supported are backwards compatible with -one minor exception, described below. Significant improvements have been made to -both the API and the expression language: Multiple values can be calculated and -assignments made in a calc expression; Error reporting for humans is now -supported by the expression parser, and code can discover what inputs and -outputs are needed and generated by an expression.
+The calc expression parser and exective have undergone a signficant +overhaul, although the API and expression language supported are backwards +compatible with one minor exception, described below. Significant +improvements have been made to both the API and the expression language: +Multiple values can be calculated and assignments made in a calc expression; +Error reporting for humans is now supported by the expression parser, and +code can discover what inputs and outputs are needed and generated by an +expression.
Assignment operations are now possible, using the new := operator which must have an expression variable (A through L) to its -immediate left. Multiple expressions can be included in the calculation string, -separated by a semicolon ;, all but one of which must be assignments. -The value of the whole string is determined by the single non-assignment -expression, which may appear anywhere in the string. For example, the following -string causes a single CALC record to output the successive values of a sine -curve in 1 degree intervals: sin(a); a:=a+d2r
+immediate left. Multiple expressions can be included in the calculation +string, separated by a semicolon ;, all but one of which must be +assignments. The value of the whole string is determined by the single +non-assignment expression, which may appear anywhere in the string. For +example, the following string causes a single CALC record to output the +successive values of a sine curve in 1 degree intervals: +sin(a); a:=a+d2rPreviously any expression that performed an invalid operation which would -generate a NaN or Inf result would be stopped immediately and return an error to -the caller. Now it is possible to perform operations that generate NaN or +generate a NaN or Inf result would be stopped immediately and return an error +to the caller. Now it is possible to perform operations that generate NaN or infinite results, and the results are returned as normal. The result of the expression or the value assigned to a variable may thus be a NaN or an -infinity. To permit this to be checked within the expression, the new operators -finite(), isinf() and isnan() have been added to the -expression language. The literal values Inf and NaN are also -now supported in expressions.
+infinity. To permit this to be checked within the expression, the new +operators finite(), isinf() and isnan() have been +added to the expression language. The literal values Inf and +NaN are also now supported in expressions.The only incompatible change to the expression language was to change the NOT operator from performing a unary minus operation to an integer @@ -365,52 +365,52 @@ bitwise not; the former meaning is illogical and as a result was probably not used much, if at all — nobody complained when I discussed this on tech-talk...
-The extended API and the expression language are now discussed in detail in -chapter 19 (libCom) of the R3.14.9 version of the IOC Application Developer's -Guide.
+The extended API and the expression language are now discussed in detail +in chapter 19 (libCom) of the R3.14.9 version of the IOC Application +Developer's Guide.
As a result of the above changes to the calc expression parser and executive, -both the calc and calcout records and the Access Security library have been -modified to take advantage of the new error diagnostics. The Access Security -library has been made to reject any expression that contains an assignment -operation, to prevent any possible security holes that might be caused by this -significant change to the expression rules.
+As a result of the above changes to the calc expression parser and +executive, both the calc and calcout records and the Access Security library +have been modified to take advantage of the new error diagnostics. The Access +Security library has been made to reject any expression that contains an +assignment operation, to prevent any possible security holes that might be +caused by this significant change to the expression rules.
The calc and calcout records have had some subtle changes applied: To mitigate the effects of the Inf/NaN behaviour change, the result of an -expression is checked for NaN, which will result in the UDF field being set and -an Undefined/INVALID_ALARM being raised as a result.
+expression is checked for NaN, which will result in the UDF field being set +and an Undefined/INVALID_ALARM being raised as a result. -An empty string is no longer a legal expression, therefor the CALC and OCAL -fields have been changed so that their default value is a literal "0" -string. Also any calcout record device support must now add the line -#include "postfix.h" before the -#include "calcoutRecord.h" line in the source code.
+An empty string is no longer a legal expression, therefor the CALC and +OCAL fields have been changed so that their default value is a literal +"0" string. Also any calcout record device support must now add the +line #include "postfix.h" before the +#include "calcoutRecord.h" line in the source code.
The recGblResetAlarms() routine (which is called by all record types -towards the end of record processing) now optionally calls a single hook routine -via the function pointer recGblAlarmHook after it has updated a -record's alarm status and severity. See regGbl.h for the hook routine prototype -definition, the routine is also given the previous values of the record's status -and severity. The hook routine must not block, since this would hold up record -processing.
+The recGblResetAlarms() routine (which is called by all record +types towards the end of record processing) now optionally calls a single +hook routine via the function pointer recGblAlarmHook after it has +updated a record's alarm status and severity. See regGbl.h for the hook +routine prototype definition, the routine is also given the previous values +of the record's status and severity. The hook routine must not block, since +this would hold up record processing.
These record types now support raw simulation mode. If the value of the SIMM -field is 2 (enum string "RAW"), the SIOL link value is placed into the RVAL -field and passed through the raw to engineering units conversion process just -like the real device support's raw value would be.
+These record types now support raw simulation mode. If the value of the +SIMM field is 2 (enum string "RAW"), the SIOL link value is placed into the +RVAL field and passed through the raw to engineering units conversion process +just like the real device support's raw value would be.
The TIME field of a record is now displayed in a human readable format. TIME -used to have an interest level of 4 since it was output in hex and not very easy -to understand, but it has now been moved to interest level 2.
+The TIME field of a record is now displayed in a human readable format. +TIME used to have an interest level of 4 since it was output in hex and not +very easy to understand, but it has now been moved to interest level 2.
A new facility is provided in libCom for use in generating automated test -programs. Many (but not all) of the test programs in libCom/test have -been converted to use this facility.
+programs. Many (but not all) of the test programs in libCom/test +have been converted to use this facility.Off-by-one buffer overflow error fixed in dbFindField() which only seemed to -affect vxWorks-(intel) targets.
+Off-by-one buffer overflow error fixed in dbFindField() which only seemed +to affect vxWorks-(intel) targets.
Create a POSIX-compliant TZ environment variable from EPICS_TIMEZONE. +
Create a POSIX-compliant TZ environment variable from EPICS_TIMEZONE. Previous versions had an incorrect format which was ignored by tzset().
-Added space for user extensions. This provides the infrastructure for the + +
Added space for user extensions. This provides the infrastructure for the spy command.
+Fixed error in epicsThreadGetName for non-EPICS threads.
-Added hooks for application routines to supply special network configuration -parameters. -The RTEMS startup code calls epicsRtemsInitPreSetBootConfigFromNVRAM just -before reading values from NVRAM and -epicsRtemsInitPostSetBootConfigFromNVRAM just afterwards. See + +
Added hooks for application routines to supply special network +configuration parameters. The RTEMS startup code calls +epicsRtemsInitPreSetBootConfigFromNVRAM just before reading values from NVRAM +and epicsRtemsInitPostSetBootConfigFromNVRAM just afterwards. See epicsRtemsInitHooks.h for prototypes and global variables.
e_flex has been modified to accept DOS line endings as well as Unix -ones. The scan.c file was recreated using e_flex itself and -the flex.skel file on the modified scan.l.DISTRIB source. -initscan.c is not required or used for the EPICS build, so it has been -removed.
+e_flex has been modified to accept DOS line endings as well as +Unix ones. The scan.c file was recreated using e_flex +itself and the flex.skel file on the modified +scan.l.DISTRIB source. initscan.c is not required or used +for the EPICS build, so it has been removed.
devLib is now built for all architectures, whereas before it was only built -on RTEMS and vxWorks. However for it to be usable there must be an appropriate -table of OS-specific routines provided. For those OSs that don't implement these -routines a default table is defined which will result in an error on any attempt -to use devLib routines, but the default table can be overridden in an external -library that provides an appropriate table. This subtle change was implemented -to allow use of the SIS 3100 PCI to VME bridge from Linux, and needs no change -to the other implementations of devLibOSD.c.
+devLib is now built for all architectures, whereas before it was only +built on RTEMS and vxWorks. However for it to be usable there must be an +appropriate table of OS-specific routines provided. For those OSs that don't +implement these routines a default table is defined which will result in an +error on any attempt to use devLib routines, but the default table can be +overridden in an external library that provides an appropriate table. This +subtle change was implemented to allow use of the SIS 3100 PCI to VME bridge +from Linux, and needs no change to the other implementations of +devLibOSD.c.
mallocMustSucceed and callocMustSucceed accept 0-byte requests. Note that +
mallocMustSucceed and callocMustSucceed accept 0-byte requests. Note that these routines may return a NULL pointer in such cases.
Added support for EPICS_HOST_ARCH=darwin-ppcx86 for building libraries/applications -which will run on both PowerPC and Intel x86 targets.
-Added support for EPICS_HOST_ARCH=darwin-x86.
+Added support for EPICS_HOST_ARCH=darwin-ppcx86 for building +libraries/applications which will run on both PowerPC and Intel x86 +targets.
+Added support for EPICS_HOST_ARCH=darwin-x86.
On architectures whose native version of strtod() actually works properly (i.e. converts +/-Inf[inity] and NaN strings to their double equivalents) we -managed to break the use of this in the R3.14.8.1 release. This is now +managed to break the use of this in the R3.14.8.1 release. This is now fixed.
-This release adds a fourth level of version number, which we haven't used -since R3.13.1.1. The intention is to imply that R3.14.8.1 includes some small +since R3.13.1.1. The intention is to imply that R3.14.8.1 includes some small but important changes since R3.14.8 but no signficant new behaviours or API -modifications. This fourth level has required us to modify the version number -system and the macros in the epicsVersion.h file slightly though. We have taken -the opportunity to introduce a new variable EPICS_SITE_VERSION to the -file configure/CONFIG_SITE that adds an optional site-specific version number; -sites that were achieving this by editing the configure/CONFIG_BASE_VERSION file -should switch to setting EPICS_SITE_VERSION instead.
+modifications. This fourth level has required us to modify the version number +system and the macros in the epicsVersion.h file slightly though. We have +taken the opportunity to introduce a new variable EPICS_SITE_VERSION +to the file configure/CONFIG_SITE that adds an optional site-specific version +number; sites that were achieving this by editing the +configure/CONFIG_BASE_VERSION file should switch to setting +EPICS_SITE_VERSION instead.These changes are required to allow software outside of Base to be built on -win32 architectures.
- +These changes are required to allow software outside of Base to be built +on win32 architectures.
The win32 Pascal calling convention (epicsShareAPI) has been removed from the following header files in libCom/misc: adjustment.h, cantProceed.h, epicsConvert.h, epicsStdlib.h, epicsString.h.
A new function epicsStrtok_r has been added because win32 does not implement strtok_r.
All function described in epicsStdlib.h are now implemented in epicsStdlib.c
The type name mapping array mapdbfType defined in dbFldTypes.h has had the correct export modifier keywords added to it for use on win32.
An Extended Device Support mechanism has been introduced which is designed as a safe way to widen the API between iocCore and the device support -software it interfaces with. An extended device support can now be notified +software it interfaces with. An extended device support can now be notified of changes to a record's hardware address, and is given the chance to approve or reject that change.
@@ -591,7 +593,7 @@ configure/RELEASE* files should contain location definitions for EPICS modules only.Added support for setting NFS server/mount information from PPCBUG argument strings.
-rtems_shutdown_executive is now called on IOC exit. On many BSPs this -will return control to the bootstrap PROM.
+rtems_shutdown_executive is now called on IOC exit. On many BSPs this will +return control to the bootstrap PROM.
Set POSIX TZ environment variable from NVRAM, or failing that, from EPICS_TIMEZONE.
@@ -718,7 +720,7 @@ EPICS_TIMEZONE.Set iocsh prompt from host name.
Initialize in-memory filesystem from tar image following executable in -bootstrap flash memory. This allows for fully standalone IOCs -- no TFTP/NFS +bootstrap flash memory. This allows for fully standalone IOCs -- no TFTP/NFS server required.
Set IOC_NAME and IOC_STARTUP_SCRIPT environment variables from bootstrap @@ -777,8 +779,8 @@ an undefined value alarm will be triggered.
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().
+which handles NAN/INF on all architectures. All uses of strtod() in base have +been converted to use epicsStrtod().epicsStdlib.h also declares epicsScanFloat() and epicsScanDouble() which replace calls to sscanf with routines which handle NAN/INF on all @@ -788,10 +790,10 @@ architectures.
The posix implementation of epicsThreadCreate() now makes pthread calls to set the stack size. The sizes returned by epicsThreadGetStackSize() for the -inputs epicsThreadStackSmall, epicsThreadStackMedium and epicsThreadStackBig are -128K, 256K and 512K respectively on at least the architectures Linux, Solaris, -HPUX and Darwin (different values are used on vxWorks and RTEMS). This allows -creation of many more threads on most systems.
+inputs epicsThreadStackSmall, epicsThreadStackMedium and epicsThreadStackBig +are 128K, 256K and 512K respectively on at least the architectures Linux, +Solaris, HPUX and Darwin (different values are used on vxWorks and RTEMS). +This allows creation of many more threads on most systems.Signals are blocked in all but the main thread. Applications/drivers -which require signal delivery to a subthread will need to be modified.
+Signals are blocked in all but the main thread. Applications/drivers which +require signal delivery to a subthread will need to be modified.
Is now:
dbl > reportNameNote that this does NOT work on the vxWorks shell only on iocsh. On the -vxWorks shell the following command can be given: +vxWorks shell the following command can be given:
iocshCmd("dbl > reportName")
These files are now parsed by a program that recognizes and ignores -comment lines. Previous versions of this parser would extract settings from +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 @@ -954,7 +956,7 @@ was returned as -1.17549435E-38. This is now fixed.
A new dbd rule will create a <name>Include.dbd from files specified +
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
@@ -1010,17 +1012,17 @@ 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 @@ -1033,33 +1035,33 @@ channels)
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 @@ -1069,43 +1071,43 @@ channels)
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.
+ 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 @@ -1120,23 +1122,23 @@ channels)
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.
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.
record(stringin, "$(user)now")
{
field(DESC, "Current time and date")
@@ -1319,7 +1321,7 @@ standard C escape characters to \xxx characters.
IOC shell system command
-The 'system' command has been added to the IOC shell. To enable this
+
The 'system' command has been added to the IOC shell. To enable this
command, add registrar(iocshSystemCommand) to an application
database description file.
@@ -1409,7 +1411,7 @@ support allocating A24 addresss and an init method.
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.
+has been added to the Application Developer's Guide.
Close-On-Exec flag set for all sockets created in EPICS base
@@ -1527,13 +1529,13 @@ handler function.
epicsMessageQueue
-The epicsMessageQueue API has been changed. All functions and methods to
+
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.
+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
+
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
@@ -1958,17 +1960,17 @@ removed. A new routine dbDumpField replaces dbDumpFldDes.
Changes since alpha2
-All changes for release 3.13.5 that also apply to 3.14 have been made.
+All changes for release 3.13.5 that also apply to 3.14 have been made.
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
+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()
+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
@@ -1978,7 +1980,7 @@ be given as
EPICS Release base 3.14.0alpha2
Since the alpha1 release some major changes were made to the build system, to
-some of the libCom facilities, and to the iocsh facilities.
+some of the libCom facilities, and to the iocsh facilities.
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
@@ -2006,47 +2008,47 @@ release.
Converting alpha1 applications to alpha2
Build modifications in alpha2 require the following changes to existing R3.14
-applications.
+applications.
./configure/RULES.Db
./configure/RULES.registerRecordDeviceDriver
include $(TOP)/configure/RULES.registerRecordDeviceDriver
@$(PERL) $(TOOLS)/makeConfigAppInclude.pl $(T_A) $@ $(TOP)- to + to
@$(PERL) $(TOOLS)/makeConfigAppInclude.pl $(EPICS_HOST_ARCH) $(T_A) $@ $(TOP)- and add the line + and add the line
depends: installto the bottom of the Makefile.
include $(TOP)/configure/RULES.Db- to + to
include $(TOP)/configure/RULES
DBDNAME = <name>App- to + to
DBD += <name>@@ -2057,73 +2059,73 @@ applications. DBDEXPAND = <name>Include.dbd NOTE: If any of your *App/*Db/Makefiles contain "DBDNAME =" lines you should make these same changes in that *Db dirctory.
RECTYPES=<name>.h- to + to
DBDINC+=<name>- change + change
MENUS=<name>.h- to + to
DBDINC+=<name>- change + change
BPTS- to + to
DBD- change + change
INSTALLDB- to + to
DB- change + change
DBDINSTALL- to + to
DBD
example_SRCS_DEFAULT += registerRecordDeviceDriver.c- to + to
example_SRCS_DEFAULT += <name>_registerRecordDeviceDriver.cpp -+ 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).
dbLoadDatabase("dbd/exampleApp.dbd")- to + to
dbLoadDatabase("dbd/example.dbd")
dbLoadDatabase("../../dbd/exampleApp.dbd",0,0)- to + to
dbLoadDatabase("../../dbd/example.dbd",0,0)@@ -2133,8 +2135,8 @@ applications.
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.
+are no longer specified in CONFIG_SITE. All references to the ANSI (ACC/GCC) +and CPLUSPLUS (CCC/G++) macros have been removed.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.diff --git a/src/misc/iocInit.c b/src/misc/iocInit.c index 36c9fd462..be7795438 100644 --- a/src/misc/iocInit.c +++ b/src/misc/iocInit.c @@ -53,6 +53,7 @@ epicsShareFunc int epicsShareAPI asInit (void); #include "db_access_routines.h" #include "initHooks.h" #include "epicsTime.h" +#include "epicsSignal.h" #define epicsExportSharedSymbols #include "epicsRelease.h" @@ -85,6 +86,7 @@ int epicsShareAPI iocInit() errlogPrintf("iocInit aborting because No database\n"); return(-1); } + epicsSignalInstallSigHupIgnore(); initHooks(initHookAtBeginning); coreRelease(); /* After this point, further calls to iocInit() are disallowed. */