From f41d1276c30bebecdfb0a0472a8f62e890dcaf94 Mon Sep 17 00:00:00 2001
From: Jeff Hill Configure files are now available to support the win32-x86-mingw (MinGW C++
-compiler) and win32-x86-cygwin (WIN32 API with cygwin C++ compiler) host
+
+ Configure files are now available to support the win32-x86-mingw (MinGW
+C++ compiler) and win32-x86-cygwin (WIN32 API with cygwin C++ compiler) host
targets. Configure files were also added for linux-x86_64 and solaris-sparc64
-but these files are for experimental purposes only and to show that we
-are working on these targets. Currently these two 64 bit targets are not
-passing our test suite, so they must not be used in production systems. Configure files were also added for linux-x86_64 and solaris-sparc64 but
+these files are for experimental purposes only and to show that we are
+working on these targets. Currently these two 64 bit targets are not passing
+our test suite, so they must not be used in production systems. 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 of changes to a record's hardware address, and is
-given the chance to approve or reject that change. 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
+of changes to a record's hardware address, and is given the chance to approve
+or reject that change. As a result of introducing this notification mechanism, any device
-support that was capable of handling runtime address changes in prior
-versions of Base will have to be updated to provide the new interface,
-since the absence of extended device support is now taken to mean that
-runtime address changes are not understood by the device support.
-This requirement is not expected to affect many EPICS sites. As a result of introducing this notification mechanism, any device support
+that was capable of handling runtime address changes in prior versions of
+Base will have to be updated to provide the new interface, since the absence
+of extended device support is now taken to mean that runtime address changes
+are not understood by the device support. This requirement is not expected to
+affect many EPICS sites. POSIX thread priority scheduling is now supported. There is a new
-user option USE_POSIX_THREAD_PRIORITY_SCHEDULING in the CONFIG_SITE
-configure file for using POSIX thread priority scheduling.
-For now the default value is NO. This has only been tested
-on a few versions of linux. On linux, in order, to use real time
-priorities the option must be set to YES and the ioc must be started with
-root privilages. POSIX thread priority scheduling is now supported. There is a new user
+option USE_POSIX_THREAD_PRIORITY_SCHEDULING in the CONFIG_SITE configure file
+for using POSIX thread priority scheduling. For now the default value is NO.
+This has only been tested on a few versions of linux. On linux, in order, to
+use real time priorities the option must be set to YES and the ioc must be
+started with root privilages. The definition VX_DIR was removed from configure/RELEASE and moved to
configure/os/CONFIG_SITE.Common.vxWorksCommon. The configure/RELEASE* files
should contain location definitions for EPICS modules only. The definition RTEMS_BASE (and RTEMS_VERSION) were removed from
-configure/RELEASE and moved to configure/os/CONFIG_SITE.Common.RTEMS. The
-configure/RELEASE* files should contain location definitions for EPICS modules
-only. The definition RTEMS_BASE (and RTEMS_VERSION) were removed from
+configure/RELEASE and moved to configure/os/CONFIG_SITE.Common.RTEMS. The
+configure/RELEASE* files should contain location definitions for EPICS
+modules only. The following files have been removed from base:
-drvTS.h drvTS.c, egDefs.h egRecord.c egRecord.dbd egeventRecord.c
-egeventRecord.c egeventRecord.dbd erDefs.h erDefs.h erRecord.c
-erRecord.dbd ereventDefs.h ereventRecord.c ereventRecord.dbd These are removed from EPICS base. The version that previously came with base
-was the version that worked with the APS event system. It is available from
-APS. The version that works with the newer event systems that evolved from
-the APS system is available from the Swiss Light Source. The following files have been removed from base: drvTS.h drvTS.c, egDefs.h
+egRecord.c egRecord.dbd egeventRecord.c egeventRecord.c egeventRecord.dbd
+erDefs.h erDefs.h erRecord.c erRecord.dbd ereventDefs.h ereventRecord.c
+ereventRecord.dbd These are removed from EPICS base. The version that previously came with
+base was the version that worked with the APS event system. It is available
+from APS. The version that works with the newer event systems that evolved
+from the APS system is available from the Swiss Light Source. It was possible for taskwd (task watchdog) to not detect when some
-of the standard tasks failed. This is because they were passing
-their threadid rather than using epicsThreadGetIdSelf.
-It was possible to call taskwdInsert before the threadid was actually set. It was possible for taskwd (task watchdog) to not detect when some of the
+standard tasks failed. This is because they were passing their threadid
+rather than using epicsThreadGetIdSelf. It was possible to call taskwdInsert
+before the threadid was actually set. dbLockGetLockId incorrectly always returned 0. dbBkpt (database breakpoint
-facility) is the only code that needed this. This caused unknown errors
-if the dbBkpt facility is used.EPICS Base Release 3.14.8
-
28 November 2005Changes since 3.14.7
New host targets
-Runtime Hardware Address Changes
-POSIX thread priority scheduling
-VX_DIR
+
RTEMS_BASE
-event generator and event receiver record support
+
event generator and event receiver record support
All apsEvent specific record support has been removed from base
drvTS and apsEvent support
-task watchdog
-dbLock and dbBkpt
+
The maximum size was initialized to 65636 instead of 65536.
Add additional cast to prevent 'strict aliaising' warnings.
I/O redirection from vxWorks startup scripts now works.
-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.
-Set POSIX TZ environment variable from NVRAM, or failing that, from -EPICS_TIMEZONE.
-Cleaned up support for obtaining network configuration from NVRAM.
-Added support for some additional boards.
-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 -server required.
-Set IOC_NAME and IOC_STARTUP_SCRIPT environment variables from bootstrap -parameters.
- -Builds on Tiger.
-Readline now used by default.
-This new variable which can be controlled using the iocsh var command (or by simple assignment in the vxWorks shell) allows users to change the behaviour of dbLoadRecords() when it finds a duplicate record definition. The default behaviour has always been to permit multiple record() statements for the same record name when loading record instances, but by setting dbRecordsOnceOnly to any non-zero value, duplicates will -instead generate an error message instead. It is expected that this will only -be used in special circumstances, to detect the presence of unintentional -duplicates where it is known that they should not exist.
+instead generate an error message instead. It is expected that this will +only be used in special circumstances, to detect the presence of +unintentional duplicates where it is known that they should not exist.This record now sets and posts monitors on its SELN field indicating which of -the inputs was selected, independent of which selection mechanism was selected -via the SELM field. This makes it much more useful, especially when the High, -Low or Median mechanisms are chosen.
+ +This record now sets and posts monitors on its SELN field indicating which +of the inputs was selected, independent of which selection mechanism was +selected via the SELM field. This makes it much more useful, especially when +the High, Low or Median mechanisms are chosen.
Macro expansions in any program using the macLib facility from libCom can now -include a default value which will be used if the macro named is not defined at -the moment of substitution. The syntax for this is $(name=default) or -${name=default}. The default string can itself contain other macros -like this: $(name=$(default)). This feature has actually been present -since R3.14.6.
-On vxWorks epicsThreadCreate returned -1 instead of 0 if a thread could -not be created. This is fixed.
+Macro expansions in any program using the macLib facility from libCom can +now include a default value which will be used if the macro named is not +defined at the moment of substitution. The syntax for this is +$(name=default) or ${name=default}. The default string can +itself contain other macros like this: $(name=$(default)). This +feature has actually been present since R3.14.6.
On a powerPC, during iocInit, a crash could occur. In particular the SYNAPPS -version of save_restore experienced crashes. This is now fixed.
+On a powerPC, during iocInit, a crash could occur. In particular the +SYNAPPS version of save_restore experienced crashes. This is now fixed.
+ +Mantis entries fixed.
+ +221 - should shutdown full duplex comm on udp sockets if not used
+ +192 - concurrency bug in channel access to local DB
+ +181 - ca_host_name() now returns the host name of the client, not the +host:port of the server
+ +161 - issues surrounding manipulation of CA contexts
+ +153 - CA (caput) client does not reconnect after server +suspend-continue-shutdown cycle
+ +111 - non-preemptive clients disconnect if ca_poll() isnt called +regularly
+ +Mantis entries fixed.
+ +196 - portable server library intermittent hang on UNIX systems
+ +191 - corrupt value when doing a put through portable server (little +endian host)
+ +175 - example portable server array PV 'alan' does not have time stamps
+ +Mantis entries fixed.
+ +211 - GDD: aitConvertStringEnum16 does nothing if +pEnumStringTable==NULL
+ +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.
+ +Set POSIX TZ environment variable from NVRAM, or failing that, from +EPICS_TIMEZONE.
+ +Cleaned up support for obtaining network configuration from NVRAM.
+ +Added support for some additional boards.
+ +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 +server required.
+ +Set IOC_NAME and IOC_STARTUP_SCRIPT environment variables from bootstrap +parameters.
+ +Fixed mantis entry.
+ +179 -base does not build with vxWorks 6.0
+ +225 - On vxWorks epicsThreadCreate returned -1 instead of 0 if a thread +could not be created. This is fixed.
+ +Builds on Tiger.
+ +Readline now used by default.
+ +Fixed mantis entries.
+ +195 - explicitly unloading Com.dll causes crash
+ +230 - assert fail of caget, caput, etc under msvc 8
+ +231 - manifest files not installed under visual C++ 8
+ +Fixed mantis entries.
+ +186 - failure after exit command if log client is running
+ +222 - osiSpawnDetachedProcess doesnt close open files in dupicate process +on POSIX
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.
+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.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.
+follows: if the VAL field contains a NaN value, the UDF field will be set and +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().
+ +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().
+epicsStdlib.h also declares epicsScanFloat() and epicsScanDouble() which replace calls to sscanf with routines which handle NAN/INF on all architectures.
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.
+ +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.
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.
+is called. Previously it just returned. NOTE CAREFULLY. This means that the +userCallback must not free the putNotify structure.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.
+server - leads to "precision" info (e.g. the PREC field of an EPICS record) +being honoured.Signals are blocked in all but the main thread. Applications/drivers which require signal delivery to a subthread will need to be modified.
Three new functions are implemented: epicsExit, epicsExitCallAtExits, and epicsAtExit. These are similar to -exit and atexit, 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 exit and atexit. Note that -they apply to an IOC stopping NOT to a thread exiting.
+exit and atexit, 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 exit and +atexit. Note that they apply to an IOC stopping NOT to a thread +exiting.In order to support iocsh redirection of stdin, stdout, and -stderr, epicsStdio.h defines the following new functions: -epicsGetStdin, epicsGetStdout, epicsGetStderr, -epicsSetStdin, epicsSetStdout, epicsSetStderr, and -epicsStdoutPrintf. epicsStdioRedirect.h defines macros that -redefine stdin, stdout, stderr, and -printf.
+In order to support iocsh redirection of stdin, stdout, +and stderr, epicsStdio.h defines the following new +functions: epicsGetStdin, epicsGetStdout, +epicsGetStderr, epicsSetStdin, epicsSetStdout, +epicsSetStderr, and epicsStdoutPrintf. +epicsStdioRedirect.h defines macros that redefine stdin, +stdout, stderr, and printf.
Any code that includes epicsStdioRedirect.h will automatically have it's stdio redirected. It has been added to many files in base. If code @@ -225,30 +318,41 @@ vxWorks shell the following command can be given:
iocshCmd("dbl > reportName")
errlog now calls epicsAtExit and releases all resources when epicsExitCallAtExits is called.
epicsStrGlobMatch() routine added.
Input/output redirection added.
+iocshCmd routine added (callable from vxWorks shell).
+help command uses globbing.
The ODLY (Output Delay) was not handled properly. This is fixed.
make sure reset gets called when size of INP array changes.
Data Base Request Option DBR_ENUM_STRS for the DTYP field of soft records can cause an IOC to crash.
RTEMS implementation of epicsMessageQueuePending() now works.
+Added support for MVME2100 BSP.
+Added support for building RTEMS bootable images.
registrar(iocshSystemCommand) to an application
database description file.
-
Thanks to Mark Rivers for initially reporting the bug and energetically assisting with identifying the cause.
-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.
-macParseDefns did not check for handle==NULL. The documentation for macParseDefns was not correct.
-Many bugs and missing features fixed.
-All routines with Recdes of Fielddes in their name are obsolete and removed. A new routine dbDumpField replaces dbDumpFldDes.
-- DBDEXPAND = <name>Include.dbd+ 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+ RECTYPES=<name>.h to
- DBDINC+=<name>+ DBDINC+=<name> change
- MENUS=<name>.h+ MENUS=<name>.h to
- DBDINC+=<name>+ DBDINC+=<name> change
- BPTS+ BPTS to
- DBD+ DBD change
- INSTALLDB+ INSTALLDB to
- DB+ DB change
- DBDINSTALL+ DBDINSTALL to
- DBD+ DBD
- example_SRCS_DEFAULT += registerRecordDeviceDriver.c+ example_SRCS_DEFAULT += registerRecordDeviceDriver.c 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")+ dbLoadDatabase("dbd/exampleApp.dbd") to
- dbLoadDatabase("dbd/example.dbd")+ dbLoadDatabase("dbd/example.dbd")
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.- - http://www.aps.anl.gov/epics/base/R3-14/index.php+ http://www.aps.anl.gov/epics/base/R3-14/index.php
Most of the Application Developer's Guide has only minor changes. The following are new.