diff --git a/configure/CONFIG_COMMON b/configure/CONFIG_COMMON index 5c14e4e0d..4bd8737f3 100644 --- a/configure/CONFIG_COMMON +++ b/configure/CONFIG_COMMON @@ -82,7 +82,8 @@ COMMON_DIR = ../O.Common #------------------------------------------------------- # Make echo output - suppress echoing if make's '-s' flag is set -ECHO := $(if $(findstring s,$(MAKEFLAGS)),\#,@echo) +COMMENT = \# +ECHO = $(if $(findstring s,$(MAKEFLAGS)),$(COMMENT),@echo) #------------------------------------------------------- ifdef T_A diff --git a/configure/CONFIG_SITE b/configure/CONFIG_SITE index f6bfa7e59..fb76306e9 100644 --- a/configure/CONFIG_SITE +++ b/configure/CONFIG_SITE @@ -78,12 +78,15 @@ # vxWorks-68040lc # vxWorks-68060 # vxWorks-pentium +# vxWorks-ppc32 (32-bit PowerPC CPUs with full FPU) +# vxWorks-ppc32sf (32-bit PowerPC CPUs without FPU) # vxWorks-ppc603 # vxWorks-ppc603_long # vxWorks-ppc604 # vxWorks-ppc604_long # vxWorks-ppc604_altivec # vxWorks-mpc8540 +# vxWorks-mpc8548 # RTEMS-at91rm9200ek # RTEMS-beatnik # RTEMS-gen68360 @@ -103,7 +106,7 @@ # override # CROSS_COMPILER_TARGET_ARCHS= -#CROSS_COMPILER_TARGET_ARCHS=vxWorks-68040 +#CROSS_COMPILER_TARGET_ARCHS=vxWorks-ppc32 # If only a subset of the host architectures perform # the build for the CROSS_COMPILER_TARGET_ARCHS 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/configure/os/CONFIG.Common.RTEMS-beatnik b/configure/os/CONFIG.Common.RTEMS-beatnik index f3260fc5f..714bb3782 100644 --- a/configure/os/CONFIG.Common.RTEMS-beatnik +++ b/configure/os/CONFIG.Common.RTEMS-beatnik @@ -1,17 +1,19 @@ # # CONFIG.Common.RTEMS-beatnik -# A migration from Eric Norum's CONFIG.Common.RTEMS-mvme5500 -# Author: Dayle Kotturi -# SLAC -# dayle@slac.stanford.edu +# $Revision-Id$ +# Author: Dayle Kotturi # # All RTEMS targets use the same Makefile fragment # -override EXE=.elf +EXE = .elf RTEMS_TARGET_CPU = powerpc -GNU_TARGET=powerpc-rtems +GNU_TARGET = powerpc-rtems ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL ARCH_DEP_CFLAGS += -DHAVE_MOTLOAD +ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048 +ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120 + +OP_SYS_LDLIBS += -lbspExt MUNCH_SUFFIX = .boot MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX)) @@ -19,16 +21,13 @@ define MUNCH_CMD $(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary $< $@ endef -CROSS_COMPILER_TARGET_ARCHS=RTEMS-beatnik - include $(CONFIG)/os/CONFIG.Common.RTEMS + RTEMSSYMS=$(PRODNAME:%$(EXE)=%.sym) RTEMSIMGS=$(PRODNAME:%$(EXE)=%.bin) INSTALL_RTEMSSYMS=$(RTEMSSYMS:%=$(INSTALL_BIN)/%) INSTALL_RTEMSIMGS=$(RTEMSIMGS:%=$(INSTALL_BIN)/%) -OP_SYS_LDLIBS += -lbspExt - %.sym: %$(EXE) $(XSYMS) $^ $@ diff --git a/configure/os/CONFIG.Common.RTEMS-mvme2100 b/configure/os/CONFIG.Common.RTEMS-mvme2100 index a09a064f3..9f7eeefca 100644 --- a/configure/os/CONFIG.Common.RTEMS-mvme2100 +++ b/configure/os/CONFIG.Common.RTEMS-mvme2100 @@ -1,15 +1,18 @@ # +# CONFIG.Common.RTEMS-mvme3100 # $Revision-Id$ -# Author: W. Eric Norum -# Canadian Light Source -# eric@cls.usask.ca +# Author: W. Eric Norum # # All RTEMS targets use the same Makefile fragment # +EXE = .elf RTEMS_TARGET_CPU = powerpc +GNU_TARGET = powerpc-rtems ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL ARCH_DEP_CFLAGS += -DHAVE_PPCBUG +OP_SYS_LDLIBS += -lbspExt + MUNCH_SUFFIX = .boot MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX)) define MUNCH_CMD @@ -24,6 +27,4 @@ define MUNCH_CMD rm -f rtems.gz endef -OP_SYS_LDLIBS += -lbspExt - include $(CONFIG)/os/CONFIG.Common.RTEMS diff --git a/configure/os/CONFIG.Common.RTEMS-mvme3100 b/configure/os/CONFIG.Common.RTEMS-mvme3100 index bea023374..5ee0757e5 100644 --- a/configure/os/CONFIG.Common.RTEMS-mvme3100 +++ b/configure/os/CONFIG.Common.RTEMS-mvme3100 @@ -1,11 +1,19 @@ # +# CONFIG.Common.RTEMS-mvme3100 +# $Revision-Id$ +# Author: W. Eric Norum +# # All RTEMS targets use the same Makefile fragment # -override EXE=.elf +EXE = .elf RTEMS_TARGET_CPU = powerpc -GNU_TARGET=powerpc-rtems +GNU_TARGET = powerpc-rtems ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL ARCH_DEP_CFLAGS += -DHAVE_MOTLOAD +ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048 +ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120 + +OP_SYS_LDLIBS += -lbspExt MUNCH_SUFFIX = .boot MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX)) @@ -13,16 +21,13 @@ define MUNCH_CMD $(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary $< $@ endef -CROSS_COMPILER_TARGET_ARCHS=RTEMS-beatnik - include $(CONFIG)/os/CONFIG.Common.RTEMS + RTEMSSYMS=$(PRODNAME:%$(EXE)=%.sym) RTEMSIMGS=$(PRODNAME:%$(EXE)=%.bin) INSTALL_RTEMSSYMS=$(RTEMSSYMS:%=$(INSTALL_BIN)/%) INSTALL_RTEMSIMGS=$(RTEMSIMGS:%=$(INSTALL_BIN)/%) -OP_SYS_LDLIBS += -lbspExt - %.sym: %$(EXE) $(XSYMS) $^ $@ diff --git a/configure/os/CONFIG.Common.RTEMS-mvme5500 b/configure/os/CONFIG.Common.RTEMS-mvme5500 index 2544445a5..082e46b38 100644 --- a/configure/os/CONFIG.Common.RTEMS-mvme5500 +++ b/configure/os/CONFIG.Common.RTEMS-mvme5500 @@ -1,16 +1,21 @@ # +# CONFIG.Common.RTEMS-mvme5500 # $Revision-Id$ -# Author: W. Eric Norum -# Advanced Photon Source -# norume@aps.anl.gov +# Author: W. Eric Norum # # All RTEMS targets use the same Makefile fragment # +EXE = .elf RTEMS_TARGET_CPU = powerpc +GNU_TARGET = powerpc-rtems ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL ARCH_DEP_CFLAGS += -DHAVE_MOTLOAD +ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048 +ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120 ARCH_DEP_CFLAGS += -DBSP_NVRAM_BASE_ADDR=0xf1110000 +OP_SYS_LDLIBS += -lbspExt + MUNCH_SUFFIX = .boot MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX)) define MUNCH_CMD diff --git a/configure/os/CONFIG.Common.vxWorks-ppc32-debug b/configure/os/CONFIG.Common.vxWorks-ppc32-debug new file mode 100644 index 000000000..bb46c7aba --- /dev/null +++ b/configure/os/CONFIG.Common.vxWorks-ppc32-debug @@ -0,0 +1,14 @@ +# CONFIG.Common.vxWorks-ppc32-debug +# +# $Revision-Id$ +# This file is maintained by the build community. +# +# Definitions for vxWorks-ppc32-debug target archs +# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-ppc32-debug +#------------------------------------------------------- + +# Include definitions common to all vxWorks archs +include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc32 + +CROSS_OPT = NO + diff --git a/configure/os/CONFIG.Common.vxWorks-ppc32sf-debug b/configure/os/CONFIG.Common.vxWorks-ppc32sf-debug new file mode 100644 index 000000000..dd2a350bb --- /dev/null +++ b/configure/os/CONFIG.Common.vxWorks-ppc32sf-debug @@ -0,0 +1,14 @@ +# CONFIG.Common.vxWorks-ppc32sf-debug +# +# $Revision-Id$ +# This file is maintained by the build community. +# +# Definitions for vxWorks-ppc32sf-debug target archs +# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-ppc32sf-debug +#------------------------------------------------------- + +# Include definitions common to all vxWorks archs +include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc32sf + +CROSS_OPT = NO + diff --git a/configure/os/CONFIG.win32-x86-borland.Common b/configure/os/CONFIG.win32-x86-borland.Common index 0d20d35e7..0ad43a3b1 100644 --- a/configure/os/CONFIG.win32-x86-borland.Common +++ b/configure/os/CONFIG.win32-x86-borland.Common @@ -12,6 +12,7 @@ MV = $(PERL) -MExtUtils::Command -e mv RM = $(PERL) -MExtUtils::Command -e rm_f MKDIR = $(PERL) -MExtUtils::Command -e mkpath RMDIR = $(PERL) -MExtUtils::Command -e rm_rf +COMMENT = REM WIND_HOST_TYPE = x86-win32 OSITHREAD_USE_DEFAULT_STACK = NO diff --git a/configure/os/CONFIG.win32-x86-mingw.Common b/configure/os/CONFIG.win32-x86-mingw.Common index 2e72d8668..dedfc1b8e 100644 --- a/configure/os/CONFIG.win32-x86-mingw.Common +++ b/configure/os/CONFIG.win32-x86-mingw.Common @@ -15,6 +15,7 @@ MV = $(PERL) -MExtUtils::Command -e mv RM = $(PERL) -MExtUtils::Command -e rm_f MKDIR = $(PERL) -MExtUtils::Command -e mkpath RMDIR = $(PERL) -MExtUtils::Command -e rm_rf +COMMENT = REM WIND_HOST_TYPE = x86-win32 OSITHREAD_USE_DEFAULT_STACK = NO diff --git a/configure/os/CONFIG.win32-x86.Common b/configure/os/CONFIG.win32-x86.Common index 8d6565815..ce6f439b1 100644 --- a/configure/os/CONFIG.win32-x86.Common +++ b/configure/os/CONFIG.win32-x86.Common @@ -12,6 +12,7 @@ MV = $(PERL) -MExtUtils::Command -e mv RM = $(PERL) -MExtUtils::Command -e rm_f MKDIR = $(PERL) -MExtUtils::Command -e mkpath RMDIR = $(PERL) -MExtUtils::Command -e rm_rf +COMMENT = REM WIND_HOST_TYPE = x86-win32 OSITHREAD_USE_DEFAULT_STACK = NO diff --git a/src/RTEMS/rtems_netconfig.c b/src/RTEMS/rtems_netconfig.c index 93c3cf80a..910961153 100644 --- a/src/RTEMS/rtems_netconfig.c +++ b/src/RTEMS/rtems_netconfig.c @@ -1,7 +1,6 @@ /*************************************************************************\ * 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. \*************************************************************************/ /* @@ -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/ca/cac.h b/src/ca/cac.h index 4bac0cdb1..ae20eef27 100644 --- a/src/ca/cac.h +++ b/src/ca/cac.h @@ -266,8 +266,8 @@ private: // **** lock hierarchy **** // 1) callback lock must always be acquired before // the primary mutex if both locks are needed - mutable epicsMutex & mutex; - mutable epicsMutex & cbMutex; + epicsMutex & mutex; + epicsMutex & cbMutex; epicsEvent iiuUninstall; ipAddrToAsciiEngine & ipToAEngine; epicsTimerQueueActive & timerQueue; diff --git a/src/ca/udpiiu.h b/src/ca/udpiiu.h index 0f3d1a313..3c9327547 100644 --- a/src/ca/udpiiu.h +++ b/src/ca/udpiiu.h @@ -149,8 +149,8 @@ private: double rtteMean; double rtteMeanDev; cac & cacRef; - mutable epicsMutex & cbMutex; - mutable epicsMutex & cacMutex; + epicsMutex & cbMutex; + epicsMutex & cacMutex; epics_auto_ptr < epics_auto_ptr < class searchTimer >, eapt_array > ppSearchTmr; unsigned nBytesInXmitBuf; unsigned nTimers; 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/db/dbCAC.h b/src/db/dbCAC.h index b25fe301e..3032023dc 100644 --- a/src/db/dbCAC.h +++ b/src/db/dbCAC.h @@ -196,8 +196,8 @@ private: dbContextReadNotifyCache readNotifyCache; dbEventCtx ctx; unsigned long stateNotifyCacheSize; - mutable epicsMutex & mutex; - mutable epicsMutex & cbMutex; + epicsMutex & mutex; + epicsMutex & cbMutex; cacContextNotify & notify; epics_auto_ptr < cacContext > pNetContext; char * pStateNotifyCache; 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/test/epicsCalcTest.cpp b/src/libCom/test/epicsCalcTest.cpp index 5436330f4..df30e68a5 100644 --- a/src/libCom/test/epicsCalcTest.cpp +++ b/src/libCom/test/epicsCalcTest.cpp @@ -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/timer/timerQueueActiveMgr.cpp b/src/libCom/timer/timerQueueActiveMgr.cpp index 1b04bee98..803b96bba 100644 --- a/src/libCom/timer/timerQueueActiveMgr.cpp +++ b/src/libCom/timer/timerQueueActiveMgr.cpp @@ -58,20 +58,21 @@ epicsTimerQueueActiveForC & timerQueueActiveMgr :: void timerQueueActiveMgr :: release ( epicsTimerQueueActiveForC & queue ) { - timerQueueActiveMgrPrivate * pPriv = & queue; { epicsGuard < epicsMutex > locker ( this->mutex ); assert ( queue.timerQueueActiveMgrPrivate::referenceCount > 0u ); queue.timerQueueActiveMgrPrivate::referenceCount--; - if ( queue.timerQueueActiveMgrPrivate::referenceCount == 0u ) { - if ( queue.sharingOK () ) { - this->sharedQueueList.remove ( queue ); - } + if ( queue.timerQueueActiveMgrPrivate::referenceCount > 0u ) { + return; + } + else if ( queue.sharingOK () ) { + this->sharedQueueList.remove ( queue ); } } // delete only after we release the guard in case the embedded // reference is the last one and this object is destroyed // as a side effect + timerQueueActiveMgrPrivate * pPriv = & queue; delete pPriv; } diff --git a/src/tools/EPICS/Path.pm b/src/tools/EPICS/Path.pm index f67f25010..ba6ad4a9b 100644 --- a/src/tools/EPICS/Path.pm +++ b/src/tools/EPICS/Path.pm @@ -64,7 +64,6 @@ put into a file. It converts paths from the Unix form that Perl understands to any necessary external representation, and also removes automounter prefixes to put the path into its canonical form. -On cygwin we convert cygdrive paths to their equivalent Windows drive specs. Before Leopard, the Mac OS X automounter inserted a verbose prefix, and in case anyone is still using SunOS it adds its own prefix as well. @@ -72,9 +71,7 @@ anyone is still using SunOS it adds its own prefix as well. sub LocalPath { my ($newpath) = @_; - if ($^O eq 'cygwin') { - $newpath =~ s{^/cygdrive/([a-zA-Z])/}{$1:/}; - } elsif ($^O eq 'darwin') { + if ($^O eq 'darwin') { # Darwin automounter $newpath =~ s{^/private/var/auto\.}{/}; } elsif ($^O eq 'sunos') { diff --git a/src/util/iocLogServer.c b/src/util/iocLogServer.c index fc824bf00..c2d190699 100644 --- a/src/util/iocLogServer.c +++ b/src/util/iocLogServer.c @@ -1,17 +1,16 @@ /*************************************************************************\ -* Copyright (c) 2002 The University of Chicago, as Operator of Argonne +* Copyright (c) 2011 UChicago Argonne LLC, as Operator of Argonne * National Laboratory. * Copyright (c) 2002 The Regents of the University of California, as * Operator of Los Alamos National Laboratory. -* 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. \*************************************************************************/ /* iocLogServer.c */ -/* base/src/util $Revision-Id$ */ +/* $Revision-Id$ */ /* - * archive logMsg() from several IOC's to a common rotating file + * archive logMsg() from several IOC's to a common rotating file * * * Author: Jeffrey O. Hill @@ -903,40 +902,35 @@ static void serviceSighupRequest(void *pParam) } /* - * If it's changed, open the new file. + * Try (re)opening the file. */ - if (strcmp(ioc_log_file_name, pserver->outfile) == 0) { + status = openLogFile(pserver); + if(status<0){ fprintf(stderr, - "iocLogServer: log file name unchanged; not re-opened\n"); - } - else { + "File access problems to `%s' because `%s'\n", + ioc_log_file_name, + strerror(errno)); + /* Revert to old filename */ + strcpy(ioc_log_file_name, pserver->outfile); status = openLogFile(pserver); if(status<0){ fprintf(stderr, - "File access problems to `%s' because `%s'\n", + "File access problems to `%s' because `%s'\n", ioc_log_file_name, strerror(errno)); - strcpy(ioc_log_file_name, pserver->outfile); - status = openLogFile(pserver); - if(status<0){ - fprintf(stderr, - "File access problems to `%s' because `%s'\n", - ioc_log_file_name, - strerror(errno)); - return; - } - else { - fprintf(stderr, - "iocLogServer: re-opened old log file %s\n", - ioc_log_file_name); - } + return; } else { fprintf(stderr, - "iocLogServer: opened new log file %s\n", + "iocLogServer: re-opened old log file %s\n", ioc_log_file_name); } } + else { + fprintf(stderr, + "iocLogServer: opened new log file %s\n", + ioc_log_file_name); + } } diff --git a/startup/cygwin.bat b/startup/cygwin.bat index 22f965dbf..2d3a1567e 100755 --- a/startup/cygwin.bat +++ b/startup/cygwin.bat @@ -14,76 +14,110 @@ 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 6f86bb4d9..5c0448fe8 100755 --- a/startup/win32.bat +++ b/startup/win32.bat @@ -14,87 +14,135 @@ 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 ===================================================