diff --git a/configure/CONFIG_BASE_VERSION b/configure/CONFIG_BASE_VERSION
index 1dedd2b07..b889bc76e 100644
--- a/configure/CONFIG_BASE_VERSION
+++ b/configure/CONFIG_BASE_VERSION
@@ -7,7 +7,7 @@
# in the file LICENSE that is included with this distribution.
#*************************************************************************
#
-# Revision-Id: jba@aps.anl.gov-20101124205038-hr4w7l8eki0rmwm0
+# Revision-Id: anj@aps.anl.gov-20110426203619-3oqagan3wqf5n0gx
#
# EPICS Version information
#
@@ -30,7 +30,7 @@ EPICS_MODIFICATION = 12
# EPICS_PATCH_LEVEL must be a number (win32 resource file requirement)
# Not included if zero
-EPICS_PATCH_LEVEL = 0
+EPICS_PATCH_LEVEL = 1
# This will end in -DEV between official releases
#EPICS_DEV_SNAPSHOT=-DEV
@@ -58,7 +58,7 @@ EPICS_SHORT_VERSION=$(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)$(EP
EPICS_VERSION_NUMBER=$(EPICS_SHORT_VERSION)$(EPICS_DEV_SNAPSHOT)$(EPICS_SITE_VSTRING)
EPICS_VERSION_STRING="EPICS Version $(EPICS_VERSION_NUMBER)"
-COMMIT_DATE="\$Date: 2010/11/29 10:38:06 $"
+COMMIT_DATE="\$Date: 2011/05/18 14:43:13 $"
# Provide these in case anyone is still using the old names
EPICS_CVS_SNAPSHOT=$(EPICS_DEV_SNAPSHOT)
diff --git a/configure/RULES.Db b/configure/RULES.Db
index ed6e10978..9eb27e527 100644
--- a/configure/RULES.Db
+++ b/configure/RULES.Db
@@ -109,7 +109,8 @@ ACF_CMD = $(CPP) $(ACF_CPPFLAGS) $(ACF_INCLUDES) $< > $@
HINC += $(addsuffix .h,$(DBDINC_NAME))
COMMON_DBDINC += $(addprefix $(COMMON_DIR)/,$(HINC))
-DBDDEPENDS_FILES += $(addsuffix $(DEP),$(HINC) $(DBS) \
+DBDDEPENDS_FILES += $(addsuffix $(DEP),$(HINC) \
+ $(patsubst $(COMMON_DIR)/%,%,$(COMMON_DBS)) \
$(patsubst $(COMMON_DIR)/%,%,$(COMMON_DBDS)))
DBDDEPENDS_FLAGS = $(subst -I,,$(filter-out -S%,$(DBDFLAGS)))
diff --git a/documentation/KnownProblems.html b/documentation/KnownProblems.html
index 9a15e68c8..eadac0179 100644
--- a/documentation/KnownProblems.html
+++ b/documentation/KnownProblems.html
@@ -4,11 +4,21 @@
- Known Problems in R3.14.12
+ Known Problems in R3.14.12.1
-EPICS Base R3.14.12: Known Problems
+EPICS Base R3.14.12.1: Known Problems
+
+Any patch files linked below should be applied at the root of the
+base-3.14.12.1 tree. Download them, then use the GNU Patch program as
+follows:
+
+% cd /path/to/base-3.14.12.1
+% patch -p0 < /path/to/file.patch
+
+The following significant problems have been reported with this
+version of EPICS Base:
diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html
index d1f3eae29..5c957e771 100644
--- a/documentation/RELEASE_NOTES.html
+++ b/documentation/RELEASE_NOTES.html
@@ -3,15 +3,140 @@
- EPICS Base R3.14.12 Release Notes
+ EPICS Base R3.14.12.1 Release Notes
-EPICS Base Release 3.14.12
+EPICS Base Release 3.14.12.1
+
+
+
+Changes between 3.14.12 and 3.14.12.1
+
+This release only contains changes that fix bugs or add build configuration
+files for new or updated target architectures. No functionality has been
+changed, and as this is a patch release the software has not gone through as
+rigorous a testing regime as it does for a normal minor release.
+
+Launchpad Bugs Resolved
+
+The following are links to bugs in the Launchpad bug tracker that have been
+fixed in this release:
+
+
+
+New/Updated target architectures
+
+The following target architectures have been added or updated:
+
+
+- vxWorks-mpc8548
+- vxWorks-mpc8548-debug
+- This PowerPC CPU is used on the Emerson MVME4100
+ VME CPU board (from Ernest Williams, SLAC).
+
+- vxWorks-ppc32
+- vxWorks-ppc32sf
+- vxWorks-ppc32-debug
+- vxWorks-ppc32sf-debug
+- New generic 32-bit PowerPC targets for vxWorks
+ 6.x, using hardware or software floating-point. These targets can be used
+ instead of the CPU-specific ppc603, ppc604, mpc8540 and mpc8548 targets (and
+ their _long alternatives, these targets are all compiled with the -mlongcall
+ flag) to reduce the number of distinct build targets needed when supporting
+ multiple PowerPC board types.
+
+- ios-386
+- ios-arm
+- Updated for iOS 4.3, which is now the default OS
+ version (from Tom Palaia, ORNL).
+
+
+
+IOCSH_STARTUP_SCRIPT environment variable
+
+The function iocsh(const char *pathname) now sets the environment
+variable IOCSH_STARTUP_SCRIPT to the value of its pathname
+argument before it starts executing the script commands.
+
+RTEMS-mvme5500
+
+This target now automatically links binary files with the bspExt library, and
+adds the extension .elf to their filenames, matching the other mvme
+targets.
+
+RTEMS Network Buffer Configuration
+
+Add the macros RTEMS_NETWORK_CONFIG_MBUF_SPACE and
+RTEMS_NETWORK_CONFIG_MBUF_SPACE to rtems_netconfig.c to allow
+customization of the network buffer space allocated. The configuration files
+for the RTEMS-mvme3100, RTEMS-mvme5500 and RTEMS-beatnik targets now default to
+allocating 2MB for mbufs and 5MB for clusters; other RTEMS targets will continue
+to use 180KB and 350KB rspectively.
+
+RTEMS TFTP filesystem
+
+Use the new mount API to initialize TFTP on newer RTEMS versions.
+
+C++ build issues on older Solaris compiler
+
+Dirk Zimoch reported some problems building with an older SUNWspro C++
+compiler which have been resolved where possible.
+
+FreeBSD broadcast problem
+
+The ifreq_size macro in freebsd/osdsock.h must be different in BSD
+4.4.
+
+Thread exit synchronization
+
+When finished waiting for a thread to exit, signal the event in case other
+ threads are waiting also.
+
+Win32 osdTime provider fix
+
+Jeff Hill fixed the last time compare in PLL drift factor update loop.
+
+Errlog can lose messages
+
+Systems that generate large numbers of errlog messages or have a slow message
+ listener could overwrite older messages in the message buffer after the buffer
+ wraps. This also corrects and annotates the test code to describe what's being
+ checked.
+
+When the IOC is shutting down, the errlog thread should process all queued
+ messages before it quits.
+
+Back-slash escapes for Win32
+
+Stephen Norum pointed out the need for various Perl scripts to escape
+back-slash characters in Windows file paths.
+
+catools on Windows
+
+Windows 7 does not properly support line-mode buffering of stdio streams; the
+catools programs used this mode to ensure that they could be used in pipelines,
+but in Windows 7 they became fully buffered and are not flushed when the program
+exits, so buffering of stdout has now been completely disabled on Windows.
Changes between 3.14.11 and 3.14.12
-
Launchpad Bugs Resolved
diff --git a/src/RTEMS/base/rtems_init.c b/src/RTEMS/base/rtems_init.c
index 16280e300..1ec392dd3 100644
--- a/src/RTEMS/base/rtems_init.c
+++ b/src/RTEMS/base/rtems_init.c
@@ -6,7 +6,7 @@
\*************************************************************************/
/*
* RTEMS startup task for EPICS
- * Revision-Id: anj@aps.anl.gov-20101005192737-disfz3vs0f3fiixd
+ * Revision-Id: anj@aps.anl.gov-20110405222154-yxqbrt7rvbn21o5z
* Author: W. Eric Norum
* eric.norum@usask.ca
* (306) 966-5394
@@ -209,7 +209,17 @@ initialize_remote_filesystem(char **argv, int hasLocalFilesystem)
{
#ifdef OMIT_NFS_SUPPORT
printf ("***** Initializing TFTP *****\n");
+#if __RTEMS_MAJOR__>4 || \
+ (__RTEMS_MAJOR__==4 && __RTEMS_MINOR__>9) || \
+ (__RTEMS_MAJOR__==4 && __RTEMS_MINOR__==9 && __RTEMS_REVISION__==99)
+ mount_and_make_target_path(NULL,
+ "/TFTP",
+ RTEMS_FILESYSTEM_TYPE_TFTPFS,
+ RTEMS_FILESYSTEM_READ_WRITE,
+ NULL);
+#else
rtems_bsdnet_initialize_tftp_filesystem ();
+#endif
if (!hasLocalFilesystem) {
char *path;
int pathsize = 200;
diff --git a/src/RTEMS/base/rtems_netconfig.c b/src/RTEMS/base/rtems_netconfig.c
index 102c5c8cb..024f4efa0 100644
--- a/src/RTEMS/base/rtems_netconfig.c
+++ b/src/RTEMS/base/rtems_netconfig.c
@@ -1,12 +1,11 @@
/*************************************************************************\
* Copyright (c) 2002 The University of Saskatchewan
-* EPICS BASE Versions 3.13.7
-* and higher are distributed subject to a Software License Agreement found
+* EPICS BASE is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
/*
* RTEMS network configuration for EPICS
- * Revision-Id: anj@aps.anl.gov-20101005192737-disfz3vs0f3fiixd
+ * Revision-Id: anj@aps.anl.gov-20110426174446-11te76tq9ieughhv
* Author: W. Eric Norum
* eric.norum@usask.ca
* (306) 966-5394
@@ -93,6 +92,17 @@ static struct rtems_bsdnet_ifconfig bsp_driver_config = {
# define MY_DO_BOOTP rtems_bsdnet_do_bootp
#endif
+/*
+ * Allow site- and BSP-specific network buffer space configuration.
+ * The macro values are specified in KBytes.
+ */
+#ifndef RTEMS_NETWORK_CONFIG_MBUF_SPACE
+# define RTEMS_NETWORK_CONFIG_MBUF_SPACE 180
+#endif
+#ifndef RTEMS_NETWORK_CONFIG_CLUSTER_SPACE
+# define RTEMS_NETWORK_CONFIG_CLUSTER_SPACE 350
+#endif
+
/*
* Network configuration
*/
@@ -104,8 +114,8 @@ struct rtems_bsdnet_config rtems_bsdnet_config = {
/* EPICS scan thread. */
/* If non-zero then the network daemons will run */
/* at this *RTEMS* priority */
- 180*1024, /* MBUF space */
- 350*1024, /* MBUF cluster space */
+ RTEMS_NETWORK_CONFIG_MBUF_SPACE*1024,
+ RTEMS_NETWORK_CONFIG_CLUSTER_SPACE*1024,
NULL, /* Host name */
MY_DOMAINNAME, /* Domain name */
};
diff --git a/src/catools/caget.c b/src/catools/caget.c
index 8489ecbcb..1ce588615 100644
--- a/src/catools/caget.c
+++ b/src/catools/caget.c
@@ -391,7 +391,7 @@ int main (int argc, char *argv[])
int nPvs; /* Number of PVs */
pv* pvs = 0; /* Array of PV structures */
- setvbuf(stdout,NULL,_IOLBF,BUFSIZ); /* Set stdout to line buffering */
+ LINE_BUFFER(stdout); /* Configure stdout buffering */
while ((opt = getopt(argc, argv, ":taicnhsSe:f:g:l:#:d:0:w:p:F:")) != -1) {
switch (opt) {
diff --git a/src/catools/cainfo.c b/src/catools/cainfo.c
index e86cdb4d5..a287f6984 100644
--- a/src/catools/cainfo.c
+++ b/src/catools/cainfo.c
@@ -6,8 +6,7 @@
* Operator of Los Alamos National Laboratory.
* Copyright (c) 2002 Berliner Elektronenspeicherringgesellschaft fuer
* Synchrotronstrahlung.
-* EPICS BASE Versions 3.13.7
-* and higher are distributed subject to a Software License Agreement found
+* EPICS BASE is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
@@ -136,7 +135,7 @@ int main (int argc, char *argv[])
int nPvs; /* Number of PVs */
pv* pvs = 0; /* Array of PV structures */
- setvbuf(stdout,NULL,_IOLBF,BUFSIZ); /* Set stdout to line buffering */
+ LINE_BUFFER(stdout); /* Configure stdout buffering */
while ((opt = getopt(argc, argv, ":nhw:s:p:")) != -1) {
switch (opt) {
diff --git a/src/catools/camonitor.c b/src/catools/camonitor.c
index b11334b91..617ee7622 100644
--- a/src/catools/camonitor.c
+++ b/src/catools/camonitor.c
@@ -6,8 +6,7 @@
* Operator of Los Alamos National Laboratory.
* Copyright (c) 2002 Berliner Elektronenspeicherringgesellschaft fuer
* Synchrotronstrahlung.
-* EPICS BASE Versions 3.13.7
-* and higher are distributed subject to a Software License Agreement found
+* EPICS BASE is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
@@ -214,7 +213,7 @@ int main (int argc, char *argv[])
int nPvs; /* Number of PVs */
pv* pvs = 0; /* Array of PV structures */
- setvbuf(stdout,NULL,_IOLBF,BUFSIZ); /* Set stdout to line buffering */
+ LINE_BUFFER(stdout); /* Configure stdout buffering */
while ((opt = getopt(argc, argv, ":nhm:sSe:f:g:l:#:0:w:t:p:F:")) != -1) {
switch (opt) {
diff --git a/src/catools/caput.c b/src/catools/caput.c
index cf72ae298..9aaba38dc 100644
--- a/src/catools/caput.c
+++ b/src/catools/caput.c
@@ -275,8 +275,8 @@ int main (int argc, char *argv[])
int nPvs; /* Number of PVs */
pv* pvs = 0; /* Array of PV structures */
- setvbuf(stdout,NULL,_IOLBF,BUFSIZ); /* Set stdout to line buffering */
- putenv("POSIXLY_CORRECT="); /* Behave correct on GNU getopt systems */
+ LINE_BUFFER(stdout); /* Configure stdout buffering */
+ putenv("POSIXLY_CORRECT="); /* Behave correct on GNU getopt systems */
while ((opt = getopt(argc, argv, ":cnlhatsS#:w:p:F:")) != -1) {
switch (opt) {
diff --git a/src/catools/tool_lib.h b/src/catools/tool_lib.h
index baebf7939..fb5c4af3c 100644
--- a/src/catools/tool_lib.h
+++ b/src/catools/tool_lib.h
@@ -5,8 +5,7 @@
* Operator of Los Alamos National Laboratory.
* Copyright (c) 2002 Berliner Elektronenspeicherringgesellschaft fuer
* Synchrotronstrahlung.
-* EPICS BASE Versions 3.13.7
-* and higher are distributed subject to a Software License Agreement found
+* EPICS BASE is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
@@ -50,6 +49,13 @@
#define DEFAULT_CA_PRIORITY 0 /* Default CA priority */
#define DEFAULT_TIMEOUT 1.0 /* Default CA timeout */
+#ifndef _WIN32
+# define LINE_BUFFER(stream) setvbuf(stream, NULL, _IOLBF, BUFSIZ)
+#else
+/* Windows doesn't support line mode, turn buffering off completely */
+# define LINE_BUFFER(stream) setvbuf(stream, NULL, _IONBF, 0)
+#endif
+
/* Type of timestamp */
typedef enum { absolute, relative, incremental, incrementalByChan } TimeT;
diff --git a/src/libCom/error/errlog.c b/src/libCom/error/errlog.c
index 322eb9c4f..1cf1575bf 100644
--- a/src/libCom/error/errlog.c
+++ b/src/libCom/error/errlog.c
@@ -495,9 +495,7 @@ static void errlogThread(void)
epicsAtExit(exitHandler,0);
while (TRUE) {
epicsEventMustWait(pvtData.waitForWork);
- if (pvtData.atExit) break;
while ((pmessage = msgbufGetSend(&noConsoleMessage))) {
- if (pvtData.atExit) break;
epicsMutexMustLock(pvtData.listenerLock);
if (pvtData.toConsole && !noConsoleMessage) {
fprintf(stderr,"%s",pmessage);
diff --git a/src/libCom/iocsh/iocsh.cpp b/src/libCom/iocsh/iocsh.cpp
index ce15ed9a1..a3cbd22a1 100644
--- a/src/libCom/iocsh/iocsh.cpp
+++ b/src/libCom/iocsh/iocsh.cpp
@@ -798,6 +798,8 @@ iocshBody (const char *pathname, const char *commandLine)
int epicsShareAPI
iocsh (const char *pathname)
{
+ if (pathname)
+ epicsEnvSet("IOCSH_STARTUP_SCRIPT", pathname);
return iocshBody(pathname, NULL);
}
diff --git a/src/libCom/osi/epicsThread.cpp b/src/libCom/osi/epicsThread.cpp
index ba7f4cbd8..e1e27ea97 100644
--- a/src/libCom/osi/epicsThread.cpp
+++ b/src/libCom/osi/epicsThread.cpp
@@ -7,7 +7,7 @@
* in file LICENSE that is included with this distribution.
\*************************************************************************/
//
-// Revision-Id: anj@aps.anl.gov-20101005192737-disfz3vs0f3fiixd
+// Revision-Id: johill@lanl.gov-20110115010153-9kqbkxz263lpqcf0
//
// Author: Jeff Hill
//
@@ -169,6 +169,8 @@ bool epicsThread::exitWait ( const double delay ) throw ()
"epicsThread::exitWait()\n" );
epicsThreadSleep ( epicsMin ( delay, 5.0 ) );
}
+ // the event mechanism is used for other purposes
+ this->event.signal ();
return this->terminated;
}
diff --git a/src/libCom/osi/epicsTime.cpp b/src/libCom/osi/epicsTime.cpp
index 70f282e21..ef6437ffa 100644
--- a/src/libCom/osi/epicsTime.cpp
+++ b/src/libCom/osi/epicsTime.cpp
@@ -74,8 +74,6 @@ public:
bool useDiffTimeOptimization;
};
-static const epicsTimeLoadTimeInit lti;
-
//
// epicsTimeLoadTimeInit ()
//
@@ -125,6 +123,9 @@ inline void epicsTime::addNanoSec (long nSecAdj)
//
epicsTime::epicsTime ( const time_t_wrapper & ansiTimeTicks )
{
+ // avoid c++ static initialization order issues
+ static epicsTimeLoadTimeInit & lti = * new epicsTimeLoadTimeInit ();
+
//
// try to directly map time_t into an unsigned long integer because this is
// faster on systems w/o hardware floating point and a simple integer type time_t.
@@ -212,6 +213,8 @@ epicsTime epicsTime::getEvent (const epicsTimeEvent &event)
//
epicsTime::operator time_t_wrapper () const
{
+ // avoid c++ static initialization order issues
+ static epicsTimeLoadTimeInit & lti = * new epicsTimeLoadTimeInit ();
time_t_wrapper wrap;
if ( lti.useDiffTimeOptimization ) {
diff --git a/src/libCom/osi/os/WIN32/osdThread.c b/src/libCom/osi/os/WIN32/osdThread.c
index d2a12bdcb..8e4e80057 100644
--- a/src/libCom/osi/os/WIN32/osdThread.c
+++ b/src/libCom/osi/os/WIN32/osdThread.c
@@ -9,7 +9,7 @@
\*************************************************************************/
/*
- * Revision-Id: anj@aps.anl.gov-20101005192737-disfz3vs0f3fiixd
+ * Revision-Id: anj@aps.anl.gov-20110211223358-q0hz1pcfll3an46f
*
* Author: Jeff Hill
*
@@ -124,7 +124,7 @@ BOOL WINAPI DllMain (
#if _WIN32_WINNT >= 0x0501
/*
* Only in WXP
- * Thats a shame becaus ethis is probably much faster
+ * Thats a shame because this is probably much faster
*/
success = GetModuleHandleEx (
GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
@@ -268,7 +268,8 @@ static void threadCleanupWIN32 ( void )
return;
}
- while ( ( pParm = ( win32ThreadParam * ) ellFirst ( & pGbl->threadList ) ) ) {
+ while ( ( pParm = ( win32ThreadParam * )
+ ellFirst ( & pGbl->threadList ) ) ) {
epicsParmCleanupWIN32 ( pParm );
}
@@ -446,7 +447,8 @@ epicsShareFunc epicsThreadBooleanStatus epicsShareAPI epicsThreadHighestPriority
/*
* epicsThreadGetStackSize ()
*/
-epicsShareFunc unsigned int epicsShareAPI epicsThreadGetStackSize ( epicsThreadStackSizeClass stackSizeClass )
+epicsShareFunc unsigned int epicsShareAPI
+ epicsThreadGetStackSize ( epicsThreadStackSizeClass stackSizeClass )
{
static const unsigned stackSizeTable[epicsThreadStackBig+1] = {4000, 6000, 11000};
@@ -635,9 +637,9 @@ epicsShareFunc epicsThreadId epicsShareAPI epicsThreadCreate (const char *pName,
wstat = ResumeThread ( pParmWIN32->handle );
if (wstat==0xFFFFFFFF) {
- EnterCriticalSection ( & pGbl->mutex );
- ellDelete ( & pGbl->threadList, & pParmWIN32->node );
- LeaveCriticalSection ( & pGbl->mutex );
+ EnterCriticalSection ( & pGbl->mutex );
+ ellDelete ( & pGbl->threadList, & pParmWIN32->node );
+ LeaveCriticalSection ( & pGbl->mutex );
CloseHandle ( pParmWIN32->handle );
free ( pParmWIN32 );
return NULL;
@@ -958,10 +960,17 @@ static void epicsThreadShowPrivate ( epicsThreadId id, unsigned level )
(void *) pParm, idForFormat, pParm->epicsPriority,
epics_GetThreadPriorityAsString ( pParm->handle ),
epicsThreadIsSuspended ( id ) ? "suspend" : "ok" );
+ if ( level ) {
+ fprintf (epicsGetStdout(), " %-8p %-8p ",
+ (void *) pParm->handle, (void *) pParm->parm );
+ }
}
else {
fprintf (epicsGetStdout(),
"NAME EPICS-ID WIN32-ID EPICS-PRI WIN32-PRI STATE " );
+ if ( level ) {
+ fprintf (epicsGetStdout(), " HANDLE FUNCTION PARAMETER" );
+ }
}
fprintf (epicsGetStdout(),"\n" );
}
diff --git a/src/libCom/osi/os/WIN32/osdTime.cpp b/src/libCom/osi/os/WIN32/osdTime.cpp
index cd5a8e090..c6ba8a7b5 100644
--- a/src/libCom/osi/os/WIN32/osdTime.cpp
+++ b/src/libCom/osi/os/WIN32/osdTime.cpp
@@ -8,7 +8,7 @@
\*************************************************************************/
//
-// Revision-Id: anj@aps.anl.gov-20101005192737-disfz3vs0f3fiixd
+// Revision-Id: johill@lanl.gov-20110115005649-10sil49p7idx8lpe
//
// Author: Jeff Hill
//
@@ -409,8 +409,8 @@ epicsTimerNotify::expireStatus currentTime::expire ( const epicsTime & )
EnterCriticalSection ( & this->mutex );
- LONGLONG perfCounterDiff = curPerfCounter.QuadPart - this->lastPerfCounterPLL;
- if ( curPerfCounter.QuadPart >= this->lastPerfCounter ) {
+ LONGLONG perfCounterDiff;
+ if ( curPerfCounter.QuadPart >= this->lastPerfCounterPLL ) {
perfCounterDiff = curPerfCounter.QuadPart - this->lastPerfCounterPLL;
}
else {
diff --git a/src/libCom/osi/os/freebsd/osdSock.h b/src/libCom/osi/os/freebsd/osdSock.h
index 0b9e51508..8c270b72a 100644
--- a/src/libCom/osi/os/freebsd/osdSock.h
+++ b/src/libCom/osi/os/freebsd/osdSock.h
@@ -77,7 +77,11 @@ typedef socklen_t osiSocklen_t;
# define SHUT_RDWR 2
#endif
-#define ifreq_size(pifreq) (sizeof(pifreq->ifr_name))
+#if BSD4_4
+# define ifreq_size(pifreq) (pifreq->ifr_addr.sa_len + sizeof(pifreq->ifr_name))
+#else
+# define ifreq_size(pifreq) sizeof(*pifreq)
+#endif
#endif /*osdSockH*/
diff --git a/src/libCom/test/epicsCalcTest.cpp b/src/libCom/test/epicsCalcTest.cpp
index 929c04a60..4b82f8163 100644
--- a/src/libCom/test/epicsCalcTest.cpp
+++ b/src/libCom/test/epicsCalcTest.cpp
@@ -4,7 +4,7 @@
* EPICS BASE is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
-// Revision-Id: anj@aps.anl.gov-20101007191624-sqws79ec9gxn7reb
+// Revision-Id: anj@aps.anl.gov-20110407222502-um4y5q4rzq5vlk3e
// Author: Andrew Johnson
#include "epicsUnitTest.h"
@@ -224,6 +224,14 @@ static inline double MIN(double a, double b, double c, double d, double e,
return MIN(MIN(a,b,c,d,e,f,g,h,i,j,k),l);
}
+/* The test code below generates lots of spurious warnings because
+ * it's making sure that our operator priorities match those of C.
+ * Disable them to quieten the compilation process where possible.
+ */
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)
+# pragma GCC diagnostic ignored "-Wparentheses"
+#endif
+
MAIN(epicsCalcTest)
{
int repeat;
diff --git a/src/libCom/test/epicsErrlogTest.c b/src/libCom/test/epicsErrlogTest.c
index 01448c75a..08389e438 100644
--- a/src/libCom/test/epicsErrlogTest.c
+++ b/src/libCom/test/epicsErrlogTest.c
@@ -260,28 +260,30 @@ MAIN(epicsErrlogTest)
for (i = 0; i < N; i++) {
errlogPrintfNoConsole(msg);
}
+ epicsThreadSleep(0.1); /* should really be a second Event */
testOk1(pvt.count == 0);
- epicsThreadSleep(0.1); /* should really be a second Event */
-
- pvt.jam = -2; /* Block before #th message */
+ /* Extract the first 2 messages, 2*(sizeof(msgNode) + 128) bytes */
+ pvt.jam = -2;
epicsEventSignal(pvt.jammer);
epicsThreadSleep(0.1);
- testDiag("Drain %u messages", pvt.count);
+ testDiag("Drained %u messages", pvt.count);
testOk1(pvt.count == 2);
- testDiag("Add two more (%d total)", (int) N+2);
- errlogPrintfNoConsole(msg);
+ /* The buffer has space for 1 more message: sizeof(msgNode) + 256 bytes */
+ errlogPrintfNoConsole(msg); /* Use up that space */
+
+ testDiag("Overflow the buffer");
errlogPrintfNoConsole(msg);
testOk1(pvt.count == 2);
- epicsEventSignal(pvt.jammer);
+ epicsEventSignal(pvt.jammer); /* Empty */
errlogFlush();
- testDiag("Logged %u messages", pvt.count);
+ testDiag("Logged %u messages", pvt.count);
testOk1(pvt.count == N+1);
/* Clean up */
diff --git a/src/libCom/test/epicsExceptionTest.cpp b/src/libCom/test/epicsExceptionTest.cpp
index c87fd65d9..a15b49672 100644
--- a/src/libCom/test/epicsExceptionTest.cpp
+++ b/src/libCom/test/epicsExceptionTest.cpp
@@ -55,6 +55,7 @@ class exThread : public epicsThreadRunable {
public:
exThread ();
void waitForCompletion ();
+ ~exThread() {};
private:
epicsThread thread;
bool done;
diff --git a/src/tools/convertRelease.pl b/src/tools/convertRelease.pl
index 512121b77..d84c98486 100644
--- a/src/tools/convertRelease.pl
+++ b/src/tools/convertRelease.pl
@@ -9,7 +9,7 @@ eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
# in file LICENSE that is included with this distribution.
#*************************************************************************
#
-# Revision-Id: anj@aps.anl.gov-20101026142747-yfjkhakzmp4rnj0g
+# Revision-Id: anj@aps.anl.gov-20101216230215-3416a76xyxueijr9
#
# Convert configure/RELEASE file(s) into something else.
#
diff --git a/src/tools/fullPathName.pl b/src/tools/fullPathName.pl
index aec2cc811..c35b738bd 100644
--- a/src/tools/fullPathName.pl
+++ b/src/tools/fullPathName.pl
@@ -7,7 +7,7 @@ eval 'exec perl -S -w $0 ${1+"$@"}' # -*- Mode: perl -*-
# in file LICENSE that is included with this distribution.
#*************************************************************************
-# Revision-Id: anj@aps.anl.gov-20101026142747-yfjkhakzmp4rnj0g
+# Revision-Id: anj@aps.anl.gov-20101216230215-3416a76xyxueijr9
# Determines an absolute pathname for its argument,
# which may be either a relative or absolute path and
diff --git a/startup/cygwin.bat b/startup/cygwin.bat
index 30a39ecd4..c140f1420 100755
--- a/startup/cygwin.bat
+++ b/startup/cygwin.bat
@@ -8,82 +8,116 @@ REM EPICS BASE Versions 3.13.7
REM and higher are distributed subject to a Software License Agreement found
REM in file LICENSE that is included with this distribution.
REM *************************************************************************
-REM Revision-Id: anj@aps.anl.gov-20101005192737-disfz3vs0f3fiixd
+REM Revision-Id: jba@aps.anl.gov-20110419162804-n948b5t79d7ctygo
REM
REM Site-specific EPICS environment settings
REM
REM sites should modify these definitions
-
-REM ===================================================
+REM ======================================================
REM ====== REQUIRED ENVIRONMENT VARIABLES FOLLOW ======
-REM
-REM --------------- WINDOWS ---------------------------
-REM ----- WIN95 -----
-REM set PATH=C:\WINDOWS;C:\WINDOWS\COMMAND
-REM ----- WINNT -----
-REM set PATH=C:\WINNT;C:\WINNT\SYSTEM32
-REM ----- WINXP -----
-set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\Wbem
+REM ======================================================
-REM --------------- GNU tools -------------------------
-REM -- cygwin contains GNU make, perl, gcc, g++, vim, ...
-REM -- Can be preceeded or replaced with paths to GNU make and perl
-REM -- need grep from here NOT from cvs directory
-REM -- some tools may need a tmp directory
+REM ======================================================
+REM ---------------- WINDOWS ---------------------------
+REM ======================================================
+REM ----- WIN95 -----
+REM set PATH=C:\WINDOWS;C:\WINDOWS\COMMAND
+REM ----- WINNT, WIN2000 -----
+REM set PATH=C:\WINNT;C:\WINNT\SYSTEM32
+REM ----- WINXP, Vista, Windows 7 -----
+set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\SYSTEM32\Wbem
+
+REM ======================================================
+REM ---------------- make and perl ---------------------
+REM ======================================================
+
+REM --------------- ActiveState perl -------------------
+set PATH=C:\Perl\bin;%PATH%
+
+REM --------------- mingw make ------------------------
+REM set PATH=C:\mingw-make\bin;%PATH%
+REM set PATH=C:\mingw-make82-3\bin;%PATH%
+
+REM --------------- gnuwin32 make ----------------------
+set PATH=C:\gnuwin32\bin;%PATH%
+
+REM ======================================================
+REM ---------------- cygwin tools ------------------------
+REM ======================================================
+REM (make & perl if above perl and make are REMs)
+REM Dont use cygwin GNU make and Perl!
+REM cygwin contains tk/tcl, vim, perl, and many unix tools
+REM need grep from here NOT from cvs directory
+set PATH=%PATH%;.;..
set PATH=%PATH%;c:\cygwin\bin
-REM --------------- EPICS -----------------------------
-REM -- R3.14 requirements
+REM ======================================================
+REM --------------- EPICS --------------------------------
+REM ======================================================
set EPICS_HOST_ARCH=cygwin-x86
set PATH=%PATH%;G:\epics\base\bin\%EPICS_HOST_ARCH%
set PATH=%PATH%;G:\epics\extensions\bin\%EPICS_HOST_ARCH%
-REM ===================================================
-REM ====== OPTIONAL ENVIRONMENT VARIABLES FOLLOW ======
+REM ======================================================
+REM ------- OPTIONAL ENVIRONMENT VARIABLES FOLLOW --------
+REM ======================================================
-REM ---------------- EPICS tools ----------------------
-REM -- HOST_ARCH needed for Makefile.Host builds
-set HOST_ARCH=cygwin32
+REM ======================================================
+REM ----------------- remote CVS -------------------------
+REM ======================================================
+REM set CVS_RSH=c:/cygwin/bin/ssh.exe
+REM set CVSROOT=:ext:jba@aps.anl.gov:/usr/local/epicsmgr/cvsroot
+REM set HOME=c:/users/%USERNAME%
+REM set HOME=c:/users/jba
-REM --------------- GNU make flags --------------------
-REM set MAKEFLAGS=-w
+REM ======================================================
+REM ------------------- Bazaar ---------------------------
+REM ======================================================
+set PATH=%PATH%;C:\Program files\Bazaar
-REM --------------- EPICS Channel Access --------------
-REM -- Uncomment and modify the following lines
-REM -- to override the base/configure/CONFIG_ENV defaults
-REM set EPICS_CA_ADDR_LIST=n.n.n.n n.n.n.n
+REM ======================================================
+REM ----------------- GNU make flags ---------------------
+REM ======================================================
+set MAKEFLAGS=-w
+
+REM ======================================================
+REM -------------- vim (use cygwin vim ) -----------------
+REM ======================================================
+REM HOME needed by vim to write .viminfo file.
+REM VIM needed by vim to find _vimrc file.
+REM set VIM=c:\cygwin
+
+REM ======================================================
+REM --------------- Epics Channel Access -----------------
+REM Modify and uncomment the following lines
+REM to override the base/configure/CONFIG_ENV defaults
+REM ======================================================
+REM set EPICS_CA_ADDR_LIST=n.n.n.n n.n.n.n
REM set EPICS_CA_AUTO_ADDR_LIST=YES
-REM --------------- cygwin vim ------------------------
-REM -- HOME needed by vim to find _vimrc file.
-REM set HOME=/home/%USERNAME%
-REM -- VIM needed by vim to find help files.
-REM set VIM=/usr/share/vim/vim61
+REM set EPICS_CA_CONN_TMO=30.0
+REM set EPICS_CA_BEACON_PERIOD=15.0
+REM set EPICS_CA_REPEATER_PORT=5065
+REM set EPICS_CA_SERVER_PORT=5064
+REM set EPICS_TS_MIN_WEST=420
-REM --------------- remote cvs (use cygwin cvs) -------
-REM -- HOME needed by cvs for .cvsrc file (set in vim above)
-REM set CVSROOT=:ext:%USERNAME%@venus.aps.anl.gov:/usr/local/epicsmgr/cvsroot
-REM set CVS_RSH=/bin/ssh.exe
-
-REM --------------- JAVA ------------------------------
-REM -- Needed for java extensions
-REM set PATH=%PATH%;C:\j2sdk1.4.1_01\bin
+REM ======================================================
+REM --------------- JAVA ---------------------------------
+REM ======================================================
+REM Needed for java extensions
REM set CLASSPATH=G:\epics\extensions\javalib
+REM set PATH=%PATH%;C:\j2sdk1.4.1_01\bin
+REM set CLASSPATH=%CLASSPATH%;C:\j2sdk1.4.1_01\lib\tools.jar
+
+REM ======================================================
+REM --------------- Exceed -------------------------------
+REM Needed for X11 extensions
+REM ======================================================
+REM set EX_VER=7.10
+REM set EX_VER=12.00
+REM set EX_VER=14.00
+REM set PATH=%PATH%;C:\Exceed%EX_VER%\XDK\
+REM set PATH=%PATH%;C:\Program Files\Hummingbird\Connectivity\%EX_VER%\Exceed\
-REM --------------- X11+Motif--------------------------
-REM -- Exceed or cygwin Xfree86 needed for Xwindows extensions
-REM
-REM -- Exceed ( Cygwin should preceed Exceed in path)
-REM set PATH=%PATH%;C:\Exceed
-REM ------ Exceed 2007 ------
-REM set PATH=%PATH%;C:\Program Files\Hummingbird\Connectivity\12.00\Exceed\
-REM ------ Exceed 2008 ------
-REM set PATH=%PATH%;C:\Program Files\Hummingbird\Connectivity\13.00\Exceed\
-REM --
-REM -- or
-REM ----- cygwin Xfree86 -----
-REM set PATH=%PATH%;c:\cygwin\usr\X11R6\bin
-REM set DISPLAY=localhost:0
-REM ===================================================
diff --git a/startup/win32.bat b/startup/win32.bat
index 247e997b6..a300bee8d 100755
--- a/startup/win32.bat
+++ b/startup/win32.bat
@@ -8,93 +8,141 @@ REM EPICS BASE Versions 3.13.7
REM and higher are distributed subject to a Software License Agreement found
REM in file LICENSE that is included with this distribution.
REM *************************************************************************
-REM Revision-Id: anj@aps.anl.gov-20101005192737-disfz3vs0f3fiixd
+REM Revision-Id: jba@aps.anl.gov-20110419162804-n948b5t79d7ctygo
REM
REM Site-specific EPICS environment settings
REM
REM sites should modify these definitions
-
-REM ===================================================
+REM ======================================================
REM ====== REQUIRED ENVIRONMENT VARIABLES FOLLOW ======
-REM
-REM --------------- WINDOWS ---------------------------
-REM ----- WIN95 -----
+REM ======================================================
+
+REM ======================================================
+REM ---------------- WINDOWS ---------------------------
+REM ======================================================
+REM ----- WIN95 -----
REM set PATH=C:\WINDOWS;C:\WINDOWS\COMMAND
-REM ----- WINNT -----
+REM ----- WINNT, WIN2000 -----
REM set PATH=C:\WINNT;C:\WINNT\SYSTEM32
-REM ----- WINXP -----
-set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\Wbem
+REM ----- WINXP, Vista, Windows 7 -----
+set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\SYSTEM32\Wbem
-REM --------------- GNU tools -------------------------
-REM -- cygwin contains GNU make, perl, tk/tcl, vim, ...
-REM -- Can be preceeded or replaced with paths to GNU make and perl
-REM -- need grep from here NOT from cvs directory
-REM -- some tools may need a tmp directory
-set PATH=%PATH%;c:\cygwin\bin
+REM ======================================================
+REM ---------------- make and perl ---------------------
+REM ======================================================
-REM --------------- Visual c++ ------------------------
-REM ---- Visual c++ 6.0 ------
-REM call "C:\Program files\Microsoft Visual Studio\Vc98\bin\vcvars32.bat"
-REM ---- Visual Studio .NET 2003 ------
-REM call "C:\Program files\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat"
-REM ---- Visual Studio 2005 -----
-REM call "C:\Program files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
-REM ---- Visual Studio 2008 -----
-call "C:\Program files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"
+REM --------------- ActiveState perl -------------------
+set PATH=C:\Perl\bin;%PATH%
+REM --------------- mingw make ------------------------
+REM set PATH=C:\mingw-make\bin;%PATH%
+REM set PATH=C:\mingw-make82-3\bin;%PATH%
-REM --------------- EPICS -----------------------------
-REM -- R3.14 requirements
+REM --------------- gnuwin32 make ----------------------
+set PATH=C:\gnuwin32\bin;%PATH%
+
+REM ======================================================
+REM ---------------- cygwin tools ------------------------
+REM ======================================================
+REM (make & perl if above perl and make are REMs)
+REM Dont use cygwin GNU make and Perl!
+REM cygwin contains tk/tcl, vim, perl, and many unix tools
+REM need grep from here NOT from cvs directory
+REM set PATH=%PATH%;.;..
+REM set PATH=%PATH%;c:\cygwin\bin
+
+REM ======================================================
+REM --------------- Visual c++ -------------------------
+REM ======================================================
+
+REM ------ Microsoft Visual Studio 2005 ------
+REM call "C:\Program files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86_amd64
+REM set PATH=%PATH%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin
+REM set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\include
+REM REM set LIBPATH=%LIBPATH%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib
+REM set LIB=%LIB%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib
+
+REM ------ Microsoft Visual Studio 2008 ------
+REM call "C:\Program files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"
+REM call "C:\Program files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_amd64
+REM set PATH=C:\Program Files\Microsoft SDKs\Windows\v7.0\bin;%PATH%
+REM set INCLUDE=C:\Program Files\Microsoft SDKs\Windows\v7.0\include;%INCLUDE%
+REM set LIBPATH=C:\Program Files\Microsoft SDKs\Windows\v7.0\lib;%LIBPATH%
+REM set LIB=C:\Program Files\Microsoft SDKs\Windows\v7.0\lib;%LIB%
+
+REM ----- Visual Studion 2010 -----
+REM -- windows-x64 ---
+REM call "C:\Program files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x64
+REM -- win32-x86 ---
+call "C:\Program files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
+
+REM ======================================================
+REM --------------- EPICS --------------------------------
+REM ======================================================
+REM set EPICS_HOST_ARCH=windows-x64
set EPICS_HOST_ARCH=win32-x86
set PATH=%PATH%;G:\epics\base\bin\%EPICS_HOST_ARCH%
set PATH=%PATH%;G:\epics\extensions\bin\%EPICS_HOST_ARCH%
-REM ===================================================
-REM ====== OPTIONAL ENVIRONMENT VARIABLES FOLLOW ======
+REM ======================================================
+REM ------- OPTIONAL ENVIRONMENT VARIABLES FOLLOW --------
+REM ======================================================
-REM ---------------- EPICS tools ----------------------
-REM -- HOST_ARCH needed for Makefile.Host builds --
-set HOST_ARCH=WIN32
+REM ======================================================
+REM ----------------- remote CVS -------------------------
+REM ======================================================
+REM set CVS_RSH=c:/cygwin/bin/ssh.exe
+REM set CVSROOT=:ext:jba@aps.anl.gov:/usr/local/epicsmgr/cvsroot
+REM set HOME=c:/users/%USERNAME%
+REM set HOME=c:/users/jba
-REM --------------- GNU make flags --------------------
-REM set MAKEFLAGS=-w
+REM ======================================================
+REM ------------------- Bazaar ---------------------------
+REM ======================================================
+set PATH=%PATH%;C:\Program files\Bazaar
-REM --------------- EPICS Channel Access --------------
-REM -- Uncomment and modify the following lines
-REM -- to override the base/configure/CONFIG_ENV defaults
-REM set EPICS_CA_ADDR_LIST=n.n.n.n n.n.n.n
+REM ======================================================
+REM ----------------- GNU make flags ---------------------
+REM ======================================================
+set MAKEFLAGS=-w
+
+REM ======================================================
+REM -------------- vim (use cygwin vim ) -----------------
+REM ======================================================
+REM HOME needed by vim to write .viminfo file.
+REM VIM needed by vim to find _vimrc file.
+REM set VIM=c:\cygwin
+
+REM ======================================================
+REM --------------- Epics Channel Access -----------------
+REM Modify and uncomment the following lines
+REM to override the base/configure/CONFIG_ENV defaults
+REM ======================================================
+REM set EPICS_CA_ADDR_LIST=n.n.n.n n.n.n.n
REM set EPICS_CA_AUTO_ADDR_LIST=YES
-REM --------------- cygwin vim ------------------------
-REM -- HOME needed by vim to find _vimrc file.
-REM set HOME=/home/%USERNAME%
-REM -- VIM needed by vim to find help files.
-REM set VIM=/usr/share/vim/vim61
+REM set EPICS_CA_CONN_TMO=30.0
+REM set EPICS_CA_BEACON_PERIOD=15.0
+REM set EPICS_CA_REPEATER_PORT=5065
+REM set EPICS_CA_SERVER_PORT=5064
+REM set EPICS_TS_MIN_WEST=420
-REM --------------- remote cvs (use cygwin cvs) -------
-REM -- HOME needed by cvs for .cvsrc file (set in vim above)
-REM set CVSROOT=:ext:%USERNAME%@venus.aps.anl.gov:/usr/local/epicsmgr/cvsroot
-REM set CVS_RSH=/bin/ssh.exe
-
-REM --------------- JAVA ------------------------------
-REM -- Needed for java extensions
-REM set PATH=%PATH%;C:\j2sdk1.4.1_01\bin
+REM ======================================================
+REM --------------- JAVA ---------------------------------
+REM ======================================================
+REM Needed for java extensions
REM set CLASSPATH=G:\epics\extensions\javalib
+REM set PATH=%PATH%;C:\j2sdk1.4.1_01\bin
+REM set CLASSPATH=%CLASSPATH%;C:\j2sdk1.4.1_01\lib\tools.jar
-REM --------------- X11+Motif--------------------------
-REM -- Exceed or cygwin Xfree86 needed for Xwindows extensions
-REM
-REM -- Exceed ( Cygwin should preceed Exceed in path)
-REM set PATH=%PATH%;C:\Exceed
-REM ------ Exceed 2007 ------
-REM set PATH=%PATH%;C:\Program Files\Hummingbird\Connectivity\12.00\Exceed\
-REM ------ Exceed 2008 ------
-REM set PATH=%PATH%;C:\Program Files\Hummingbird\Connectivity\13.00\Exceed\
-REM --
-REM -- or
-REM ----- cygwin Xfree86 -----
-REM set PATH=%PATH%;c:\cygwin\usr\X11R6\bin
-REM set DISPLAY=localhost:0
+REM ======================================================
+REM --------------- Exceed -------------------------------
+REM Needed for X11 extensions
+REM ======================================================
+REM set EX_VER=7.10
+REM set EX_VER=12.00
+REM set EX_VER=14.00
+REM set PATH=%PATH%;C:\Exceed%EX_VER%\XDK\
+REM set PATH=%PATH%;C:\Program Files\Hummingbird\Connectivity\%EX_VER%\Exceed\
-REM ===================================================