Compare commits
33 Commits
R3.14.12-p
...
R3.14.12-r
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e406440316 | ||
|
|
94a48d23d0 | ||
|
|
cf18208579 | ||
|
|
7cf01b091b | ||
|
|
e1c1dd45a6 | ||
|
|
8e40be47a0 | ||
|
|
9777c63e23 | ||
|
|
18594e1a34 | ||
|
|
99e7e7727a | ||
|
|
adb201a048 | ||
|
|
56ada25dd7 | ||
|
|
23bbe233f7 | ||
|
|
c48fe29e89 | ||
|
|
b5c185877d | ||
|
|
b82db48335 | ||
|
|
da8ae994e4 | ||
|
|
8d2cd8b96c | ||
|
|
91631919e5 | ||
|
|
181c4e126a | ||
|
|
32ebff1881 | ||
|
|
e65253f8b9 | ||
|
|
3398950f9d | ||
|
|
2477bf52e6 | ||
|
|
e7179fc289 | ||
|
|
f340b3e153 | ||
|
|
b4d7b6f851 | ||
|
|
36175b1368 | ||
|
|
e372a83096 | ||
|
|
3ad06eb0a3 | ||
|
|
93c39c86f7 | ||
|
|
46b912bc16 | ||
|
|
1e6464cdc4 | ||
|
|
c84c3d49ad |
@@ -36,9 +36,9 @@ EPICS_PATCH_LEVEL = 0
|
||||
#EPICS_DEV_SNAPSHOT=-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-pre1
|
||||
#EPICS_DEV_SNAPSHOT=-pre1-DEV
|
||||
EPICS_DEV_SNAPSHOT=-pre2
|
||||
#EPICS_DEV_SNAPSHOT=-pre2
|
||||
#EPICS_DEV_SNAPSHOT=-pre2-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-rc1
|
||||
EPICS_DEV_SNAPSHOT=-rc1
|
||||
#EPICS_DEV_SNAPSHOT=-rc1-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-rc2
|
||||
#EPICS_DEV_SNAPSHOT=-rc2-DEV
|
||||
|
||||
@@ -258,6 +258,7 @@ LOADABLE_SHRLIB_SUFFIX=$(SHRLIB_SUFFIX)
|
||||
COMMANDLINE_LIBRARY = EPICS
|
||||
OP_SYS_LDLIBS += $(LDLIBS_$(COMMANDLINE_LIBRARY))
|
||||
OP_SYS_LDFLAGS += $(LDFLAGS_$(COMMANDLINE_LIBRARY))
|
||||
RUNTIME_LDFLAGS += $(RUNTIME_LDFLAGS_$(COMMANDLINE_LIBRARY))
|
||||
|
||||
#--------------------------------------------------
|
||||
# Flags
|
||||
|
||||
@@ -29,4 +29,11 @@ ifeq ($(BUILD_CLASS),CROSS)
|
||||
# Provide a link-time path for products
|
||||
PRODDIR_RPATH_LDFLAGS_YES += $(PROD_DEPLIB_DIRS:%=-Wl,-rpath-link,%)
|
||||
PRODDIR_LDFLAGS += $(PRODDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
|
||||
# Provide a link-time path for readline
|
||||
RUNTIME_LDFLAGS_READLINE_YES = -Wl,-rpath-link,$(GNU_DIR)/lib
|
||||
RUNTIME_LDFLAGS_READLINE = $(RUNTIME_LDFLAGS_READLINE_$(LINKER_USE_RPATH))
|
||||
RUNTIME_LDFLAGS_READLINE_CURSES = $(RUNTIME_LDFLAGS_READLINE_$(LINKER_USE_RPATH))
|
||||
RUNTIME_LDFLAGS_READLINE_NCURSES = $(RUNTIME_LDFLAGS_READLINE_$(LINKER_USE_RPATH))
|
||||
|
||||
endif
|
||||
|
||||
@@ -35,8 +35,6 @@ SHRLIBDIR_LDFLAGS += $(SHRLIBDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
PRODDIR_RPATH_LDFLAGS_YES += $(PROD_DEPLIB_DIRS:%=-R%)
|
||||
PRODDIR_LDFLAGS += $(PRODDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
|
||||
RUNTIME_LDFLAGS += $(RUNTIME_LDFLAGS_$(COMMANDLINE_LIBRARY))
|
||||
|
||||
GNU_TARGET=sparc-sun-solaris2
|
||||
|
||||
STLPORT_CFLAGS_YES= -library=stlport4
|
||||
@@ -61,9 +59,9 @@ OP_SYS_LDLIBS += $(OP_SYS_LDLIBS_$(SOLARIS_VERSION))
|
||||
# Definitions used when COMMANDLINE_LIBRARY is READLINE
|
||||
READLINE_DIR = $(GNU_DIR)
|
||||
INCLUDES_READLINE = -I$(READLINE_DIR)/include
|
||||
RUNTIME_LDFLAGS_READLINE += -R$(READLINE_DIR)/lib
|
||||
RUNTIME_LDFLAGS_READLINE_YES += -R$(READLINE_DIR)/lib
|
||||
RUNTIME_LDFLAGS_READLINE += $(RUNTIME_LDFLAGS_READLINE_$(LINKER_USE_RPATH))
|
||||
LDFLAGS_READLINE += -L$(READLINE_DIR)/lib
|
||||
LDLIBS_READLINE = -lreadline -lcurses
|
||||
# Use archive if there is a problem with the readline shared library
|
||||
#LDLIBS_READLINE = -Bstatic -lreadline -Bdynamic -lcurses
|
||||
|
||||
|
||||
@@ -36,8 +36,6 @@ SHRLIBDIR_LDFLAGS += $(SHRLIBDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
PRODDIR_RPATH_LDFLAGS_YES += $(PROD_DEPLIB_DIRS:%=-R%)
|
||||
PRODDIR_LDFLAGS += $(PRODDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
|
||||
RUNTIME_LDFLAGS += $(RUNTIME_LDFLAGS_$(COMMANDLINE_LIBRARY))
|
||||
|
||||
GNU_TARGET=x86-sun-solaris2
|
||||
|
||||
STLPORT_CFLAGS_YES= -library=stlport4
|
||||
@@ -61,7 +59,8 @@ OP_SYS_LDLIBS += $(STLPORT_LDLIBS_$(USE_STLPORT))
|
||||
# Definitions used when COMMANDLINE_LIBRARY is READLINE
|
||||
READLINE_DIR = $(GNU_DIR)
|
||||
INCLUDES_READLINE = -I$(READLINE_DIR)/include
|
||||
RUNTIME_LDFLAGS_READLINE += -R$(READLINE_DIR)/lib
|
||||
RUNTIME_LDFLAGS_READLINE_YES += -R$(READLINE_DIR)/lib
|
||||
RUNTIME_LDFLAGS_READLINE += $(RUNTIME_LDFLAGS_READLINE_$(LINKER_USE_RPATH))
|
||||
LDFLAGS_READLINE += -L$(READLINE_DIR)/lib
|
||||
LDLIBS_READLINE = -lreadline -lcurses
|
||||
# Use archive if there is a problem with the readline shared library
|
||||
|
||||
@@ -7,8 +7,10 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.cygwin-x86.cygwin-x86-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.cygwin-x86
|
||||
include $(CONFIG)/os/CONFIG.cygwin-x86.cygwin-x86
|
||||
-include $(CONFIG)/os/CONFIG.Common.cygwin-x86
|
||||
-include $(CONFIG)/os/CONFIG.cygwin-x86.cygwin-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.cygwin-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.cygwin-x86.cygwin-x86
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
-include $(CONFIG)/os/CONFIG.Common.darwin-ppc
|
||||
-include $(CONFIG)/os/CONFIG.darwin-ppc.darwin-ppc
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.darwin-ppc
|
||||
-include $(CONFIG)/os/CONFIG_SITE.darwin-ppc.darwin-ppc
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
HOST_OPT = NO
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
|
||||
-include $(CONFIG)/os/CONFIG.Common.darwin-x86
|
||||
-include $(CONFIG)/os/CONFIG.darwin-x86.darwin-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.darwin-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.darwin-x86.darwin-x86
|
||||
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
HOST_OPT = NO
|
||||
|
||||
@@ -7,8 +7,9 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-x86.linux-x86-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
-include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
#-include $(CONFIG)/os/CONFIG_SITE.Common.linux-x86
|
||||
#-include $(CONFIG)/os/CONFIG_SITE.linux-x86.linux-x86
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
HOST_OPT=NO
|
||||
|
||||
|
||||
@@ -7,8 +7,9 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-x86_64.linux-x86_64-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
-include $(CONFIG)/os/CONFIG.linux-x86_64.linux-x86_64
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.linux-x86_64
|
||||
-include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.linux-x86_64
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
|
||||
HOST_OPT = NO
|
||||
|
||||
@@ -7,7 +7,9 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.solaris-sparc.solaris-sparc-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.solaris-sparc.solaris-sparc
|
||||
-include $(CONFIG)/os/CONFIG.solaris-sparc.solaris-sparc
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.solaris-sparc
|
||||
-include $(CONFIG)/os/CONFIG_SITE.solaris-sparc.solaris-sparc
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
HOST_OPT=NO
|
||||
|
||||
@@ -7,8 +7,10 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.solaris-x86.solaris-x86-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.solaris-x86
|
||||
include $(CONFIG)/os/CONFIG.solaris-x86.solaris-x86
|
||||
-include $(CONFIG)/os/CONFIG.Common.solaris-x86
|
||||
-include $(CONFIG)/os/CONFIG.solaris-x86.solaris-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.solaris-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.solaris-x86.solaris-x86
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
|
||||
|
||||
@@ -26,7 +26,4 @@ LOADABLE_SHRLIB_LDFLAGS = -shared -Wl,--out-implib,$(LIB_PREFIX)$*$(LIB_SUFFIX)
|
||||
# Override linking with gcc library from CONFIG.gnuCommon
|
||||
GNU_LDLIBS_YES =
|
||||
|
||||
OPT_CFLAGS_NO = -O3 -g
|
||||
OPT_CXXFLAGS_NO = -O3 -g
|
||||
|
||||
OP_SYS_LDLIBS = -lws2_32
|
||||
|
||||
@@ -7,8 +7,10 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.win32-x86-mingw.win32-x86-mingw-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.win32-x86-mingw
|
||||
include $(CONFIG)/os/CONFIG.win32-x86-mingw.win32-x86-mingw
|
||||
-include $(CONFIG)/os/CONFIG.Common.win32-x86-mingw
|
||||
-include $(CONFIG)/os/CONFIG.win32-x86-mingw.win32-x86-mingw
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.win32-x86-mingw
|
||||
-include $(CONFIG)/os/CONFIG_SITE.win32-x86-mingw.win32-x86-mingw
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
|
||||
@@ -7,10 +7,14 @@
|
||||
# Sites may override these definitions in CONFIG_SITE.win32-x86.win32-x86-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.win32-x86-debug.win32-x86-debug
|
||||
-include $(CONFIG)/os/CONFIG.Common.win32-x86
|
||||
-include $(CONFIG)/os/CONFIG.win32-x86.win32-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.win32-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.win32-x86.win32-x86
|
||||
|
||||
GNU = NO
|
||||
|
||||
HDEPENDS_METHOD = CMD
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
HOST_OPT = NO
|
||||
|
||||
@@ -7,6 +7,5 @@
|
||||
|
||||
# jba overrides
|
||||
#CROSS_COMPILER_TARGET_ARCHS=vxWorks-486
|
||||
#VX_DIR = T:/tornado20
|
||||
|
||||
BORLAND = c:\\Borland\\Bcc55
|
||||
|
||||
@@ -8,5 +8,4 @@
|
||||
# jba test overrides
|
||||
#CROSS_COMPILER_TARGET_ARCHS=vxWorks-486
|
||||
#CROSS_COMPILER_TARGET_ARCHS+=vxWorks-68040
|
||||
#VX_DIR = T:/tornado20
|
||||
#INSTALL_LOCATION = G:/testInstall
|
||||
|
||||
@@ -172,7 +172,7 @@ exampleIoc_SRCS += devXxxSoft.c
|
||||
exampleIoc_LIBS += $(EPICS_BASE_IOC_LIBS)
|
||||
|
||||
PROD_IOC_vxWorks = example
|
||||
example_SRCS += sncExample.stt
|
||||
example_SRCS += sncExample.st
|
||||
example_LIBS += exampleIoc
|
||||
example_LIBS += seq pv
|
||||
example_LIBS += $(EPICS_BASE_IOC_LIBS)
|
||||
@@ -263,7 +263,7 @@ dev<i>name</i> = { ... };</q></p>
|
||||
<h3>Registration code changed</h3>
|
||||
|
||||
<p>Registration code for application specific functions, e.g. subroutine record
|
||||
init and process functions, must been changed as follows</p>
|
||||
init and process functions, must be changed as follows</p>
|
||||
|
||||
<ol>
|
||||
<li>Include the following header files after all existing #includes:
|
||||
@@ -468,4 +468,9 @@ should add the definition</p>
|
||||
|
||||
<p>to your application config/RELEASE file.</p>
|
||||
</body>
|
||||
|
||||
<h3>Optional <i>top</i>/configure/CONFIG_SITE changes.</h3>
|
||||
|
||||
<p>Review and optionally modify site build settings.</p>
|
||||
|
||||
</html>
|
||||
|
||||
@@ -13,11 +13,37 @@
|
||||
<h2 align="center">Changes between 3.14.11 and 3.14.12</h2>
|
||||
<!-- Insert new items immediately below here ... -->
|
||||
|
||||
<h4>Support for Cygwin 1.7</h4>
|
||||
|
||||
<p>Base can now built with shared libraries on Cygwin 1.7.x, although only with
|
||||
the gcc-3 compiler. Cygwin 1.5.x only works when compiled without shared
|
||||
libraries (set <tt>STATIC_BUILD=YES</tt> and <tt>SHARED_LIBRARIES=NO</tt> in
|
||||
<tt>configure/CONFIG_SITE</tt>). There is code in Base now that depends on the
|
||||
Cygwin version, so make sure that you rebuild Base if you upgrade your Cygwin
|
||||
installation.</p>
|
||||
|
||||
<h4>epicsEvent</h4>
|
||||
|
||||
<p>epicsEvent is now explicitly required to act as a simple binary semaphore.
|
||||
A single epicsEventSignal call must awaken just one thread when multiple
|
||||
threads are waiting for the event. A test thats checks for this has been
|
||||
added to epicsEventTest and the application developers guide is being updated
|
||||
to describe this requirement.</p>
|
||||
|
||||
<h4>Enable array puts to subArray records</h4>
|
||||
|
||||
<p>It is now possible to put an array into the VAL field of a soft channel
|
||||
subArray record whose INP field is empty. Processing the record then causes the
|
||||
sub-array extraction process to be done on the current VAL array. This can be
|
||||
used to feed a sequence of values into some other record (set INDX=1 and
|
||||
NELM=MALM and read one element out of the VAL field each time).</p>
|
||||
|
||||
<h4>Added windows-x64 target</h4>
|
||||
|
||||
<p>64-bit binaries for Microsoft Windows platforms can now be built using the
|
||||
target architecture windows-x64, which is also a valid cross-build target for a
|
||||
win32-x86 host. We do not currently support 64-bit MinGW or Cygwin builds.</p>
|
||||
win32-x86 host. We do not currently support or recommend trying to use 64-bit
|
||||
builds on MinGW or Cygwin.</p>
|
||||
|
||||
<h4>Deleted osf-alpha targets</h4>
|
||||
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
/*************************************************************************\
|
||||
* Copyright (c) 2008 UChicago Argonne LLC, as Operator of Argonne
|
||||
* National Laboratory.
|
||||
* EPICS BASE is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
\*************************************************************************/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netinet/in.h>
|
||||
#include <fcntl.h> /* for open() */
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <rtems/rtems_bsdnet.h>
|
||||
#include <bsp.h>
|
||||
#include <string.h>
|
||||
|
||||
@@ -64,6 +64,7 @@ $Date$</span></small></p>
|
||||
<li><a href="#Network">IP Network Administration Background
|
||||
Information</a></li>
|
||||
<li><a href="#port">IP port numbers</a></li>
|
||||
<li><a href="#firewall">Firewalls</a></li>
|
||||
<li><a href="#Environmen">WAN Environment</a></li>
|
||||
<li><a href="#Disconnect">Disconnect Time Out Interval / Server Beacon
|
||||
Period</a></li>
|
||||
@@ -451,6 +452,32 @@ different port numbers then an extended syntax may be used with the
|
||||
EPICS_CA_ADDR_LIST environment variable. See <a href="#Environmen">WAN
|
||||
Environment</a> below.</p>
|
||||
|
||||
<h3><a name="firewall">Firewalls</a></h3>
|
||||
|
||||
<p>If you want channel access clients on a machine to be able to see
|
||||
beacons and replies to broadcast PV search requests you need to permit
|
||||
inbound UDP packets with source port EPICS_CA_SERVER_PORT (default is 5064)
|
||||
or destination port EPICS_CA_REPEATER_PORT (default is 5065). On systems
|
||||
using iptables this can be accomplished by rules like</p>
|
||||
|
||||
<pre>
|
||||
-A INPUT -s 192.168.0.0/22 -p udp --sport 5064 -j ACCEPT
|
||||
-A INPUT -s 192.168.0.0/22 -p udp --dport 5065 -j ACCEPT
|
||||
</pre>
|
||||
|
||||
<p>If you want channel access servers (e.g. "soft IOCs") on a machine to be
|
||||
able to see clients you need to permit inbound TCP or UDP packets with source
|
||||
port EPICS_CA_SERVER_PORT (default is 5064). On systems using iptables this
|
||||
can be accomplished by rules like</p>
|
||||
|
||||
<pre>
|
||||
-A INPUT -s 192.168.0.0/22 -p udp --dport 5064 -j ACCEPT
|
||||
-A INPUT -s 192.168.0.0/22 -p tcp --dport 5064 -j ACCEPT
|
||||
</pre>
|
||||
|
||||
<p>In all cases the "-s 192.168.0.0/22" specifies the range of addresses from
|
||||
which you wish to accept packets.</p>
|
||||
|
||||
<h3><a name="Environmen">WAN Environment</a></h3>
|
||||
|
||||
<p>When the CA client library connects a channel it must first determine the IP
|
||||
|
||||
@@ -360,6 +360,6 @@ void bheFreeStore::release ( void * pCadaver )
|
||||
freeList.release ( pCadaver );
|
||||
}
|
||||
|
||||
epicsShareFunc bheMemoryManager::~bheMemoryManager () {}
|
||||
bheMemoryManager::~bheMemoryManager () {}
|
||||
|
||||
|
||||
|
||||
@@ -45,9 +45,9 @@ class bheMemoryManager;
|
||||
|
||||
// using a pure abstract wrapper class around the free list avoids
|
||||
// Tornado 2.0.1 GNU compiler bugs
|
||||
class bheMemoryManager {
|
||||
class epicsShareClass bheMemoryManager {
|
||||
public:
|
||||
epicsShareFunc virtual ~bheMemoryManager ();
|
||||
virtual ~bheMemoryManager ();
|
||||
virtual void * allocate ( size_t ) = 0;
|
||||
virtual void release ( void * ) = 0;
|
||||
};
|
||||
|
||||
@@ -28,6 +28,18 @@
|
||||
|
||||
#include "epicsTimer.h"
|
||||
|
||||
#ifdef epicsExportSharedSymbols
|
||||
# define repeaterSubscribeTimerh_epicsExportSharedSymbols
|
||||
# undef epicsExportSharedSymbols
|
||||
#endif
|
||||
|
||||
#include "epicsTimer.h"
|
||||
|
||||
#ifdef repeaterSubscribeTimerh_epicsExportSharedSymbols
|
||||
# define epicsExportSharedSymbols
|
||||
# include "shareLib.h"
|
||||
#endif
|
||||
|
||||
class epicsMutex;
|
||||
class cacContextNotify;
|
||||
|
||||
|
||||
@@ -26,8 +26,18 @@
|
||||
#ifndef tcpRecvWatchdogh
|
||||
#define tcpRecvWatchdogh
|
||||
|
||||
#ifdef epicsExportSharedSymbols
|
||||
# define tcpRecvWatchdogh_epicsExportSharedSymbols
|
||||
# undef epicsExportSharedSymbols
|
||||
#endif
|
||||
|
||||
#include "epicsTimer.h"
|
||||
|
||||
#ifdef tcpRecvWatchdogh_epicsExportSharedSymbols
|
||||
# define epicsExportSharedSymbols
|
||||
# include "shareLib.h"
|
||||
#endif
|
||||
|
||||
class tcpiiu;
|
||||
|
||||
class tcpRecvWatchdog : private epicsTimerNotify {
|
||||
|
||||
@@ -26,8 +26,19 @@
|
||||
#ifndef tcpSendWatchdogh
|
||||
#define tcpSendWatchdogh
|
||||
|
||||
|
||||
#ifdef epicsExportSharedSymbols
|
||||
# define tcpSendWatchdogh_epicsExportSharedSymbols
|
||||
# undef epicsExportSharedSymbols
|
||||
#endif
|
||||
|
||||
#include "epicsTimer.h"
|
||||
|
||||
#ifdef tcpSendWatchdogh_epicsExportSharedSymbols
|
||||
# define epicsExportSharedSymbols
|
||||
# include "shareLib.h"
|
||||
#endif
|
||||
|
||||
class tcpSendWatchdog : private epicsTimerNotify {
|
||||
public:
|
||||
tcpSendWatchdog (
|
||||
|
||||
@@ -73,6 +73,13 @@ LIBSRCS += casDGIntfIO.cc
|
||||
LIBSRCS += casStreamIO.cc
|
||||
LIBSRCS += ipIgnoreEntry.cc
|
||||
|
||||
# There is a bug in some vxWorks compilers that these work around:
|
||||
ifeq ($(VX_GNU_VERSION), 4.1.2)
|
||||
casStreamOS_CXXFLAGS_vxWorks-ppc604_altivec = -O0
|
||||
casStreamOS_CXXFLAGS_vxWorks-ppc604_long = -O0
|
||||
casStreamOS_CXXFLAGS_vxWorks-ppc604 = -O0
|
||||
endif
|
||||
|
||||
LIBSRCS_vxWorks += templateInstances.cpp
|
||||
|
||||
LIBRARY = cas
|
||||
|
||||
@@ -72,15 +72,24 @@ static long read_sa(subArrayRecord *prec)
|
||||
|
||||
if (nRequest > prec->malm)
|
||||
nRequest = prec->malm;
|
||||
dbGetLink(&prec->inp, prec->ftvl, prec->bptr, 0, &nRequest);
|
||||
prec->nord = ecount = nRequest - prec->indx;
|
||||
|
||||
if (prec->inp.type == CONSTANT)
|
||||
nRequest = prec->nord;
|
||||
else
|
||||
dbGetLink(&prec->inp, prec->ftvl, prec->bptr, 0, &nRequest);
|
||||
|
||||
ecount = nRequest - prec->indx;
|
||||
if (ecount > 0) {
|
||||
int esize = dbValueSize(prec->ftvl);
|
||||
|
||||
if (ecount > prec->nelm)
|
||||
ecount = prec->nelm;
|
||||
memmove(prec->bptr, (char *)prec->bptr + prec->indx * esize,
|
||||
ecount * esize);
|
||||
}
|
||||
} else
|
||||
ecount = 0;
|
||||
|
||||
prec->nord = ecount;
|
||||
|
||||
if (nRequest > 0 &&
|
||||
prec->tsel.type == CONSTANT &&
|
||||
|
||||
30
src/libCom/osi/os/cygwin32/systemCallIntMech.cpp
Normal file
30
src/libCom/osi/os/cygwin32/systemCallIntMech.cpp
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
/*************************************************************************\
|
||||
* Copyright (c) 2002 The University of Chicago, 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
|
||||
* in file LICENSE that is included with this distribution.
|
||||
\*************************************************************************/
|
||||
/* $Revision-Id$ */
|
||||
/*
|
||||
* Author: Jeff Hill
|
||||
*/
|
||||
|
||||
#include <cygwin/version.h>
|
||||
|
||||
#define epicsExportSharedSymbols
|
||||
#include "osiSock.h"
|
||||
|
||||
enum epicsSocketSystemCallInterruptMechanismQueryInfo
|
||||
epicsSocketSystemCallInterruptMechanismQuery ()
|
||||
{
|
||||
#if (CYGWIN_VERSION_DLL_MAJOR >= 1007)
|
||||
// Behaviour changed in Cygwin 1.7 release.
|
||||
return esscimqi_socketCloseRequired;
|
||||
#else
|
||||
return esscimqi_socketBothShutdownRequired;
|
||||
#endif
|
||||
}
|
||||
@@ -106,6 +106,52 @@ static void producer(void *arg)
|
||||
testOk(errors == 0, "%s: errors = %d", name, errors);
|
||||
}
|
||||
|
||||
#define SLEEPERCOUNT 3
|
||||
struct wakeInfo {
|
||||
epicsEventId event;
|
||||
epicsMutexId countMutex;
|
||||
int count;
|
||||
};
|
||||
static void sleeper(void *arg)
|
||||
{
|
||||
struct wakeInfo *wp = (struct wakeInfo *)arg;
|
||||
epicsEventMustWait(wp->event);
|
||||
epicsMutexLock(wp->countMutex);
|
||||
wp->count++;
|
||||
epicsMutexUnlock(wp->countMutex);
|
||||
}
|
||||
static void eventWakeupTest(void)
|
||||
{
|
||||
struct wakeInfo wakeInfo, *wp = &wakeInfo;
|
||||
int i, c;
|
||||
|
||||
wp->event = epicsEventMustCreate(epicsEventEmpty);
|
||||
wp->countMutex = epicsMutexMustCreate();
|
||||
wp->count = 0;
|
||||
for (i = 0 ; i < SLEEPERCOUNT ; i++)
|
||||
epicsThreadCreate("Sleeper",
|
||||
epicsThreadPriorityScanHigh,
|
||||
epicsThreadGetStackSize(epicsThreadStackSmall),
|
||||
sleeper,
|
||||
wp);
|
||||
epicsThreadSleep(0.5);
|
||||
epicsMutexLock(wp->countMutex);
|
||||
c = wp->count;
|
||||
epicsMutexUnlock(wp->countMutex);
|
||||
testOk(c == 0, "all threads still sleeping");
|
||||
for (i = 1 ; i <= SLEEPERCOUNT ; i++) {
|
||||
epicsEventSignal(wp->event);
|
||||
epicsThreadSleep(0.5);
|
||||
epicsMutexLock(wp->countMutex);
|
||||
c = wp->count;
|
||||
epicsMutexUnlock(wp->countMutex);
|
||||
testOk(c == i, "%d thread%s awakened, expected %d", c, c == 1 ? "" : "s", i);
|
||||
}
|
||||
epicsEventDestroy(wp->event);
|
||||
epicsMutexDestroy(wp->countMutex);
|
||||
}
|
||||
|
||||
|
||||
} // extern "C"
|
||||
|
||||
static double eventWaitMeasureDelayError( const epicsEventId &id, const double & delay )
|
||||
@@ -144,7 +190,7 @@ MAIN(epicsEventTest)
|
||||
epicsEventId event;
|
||||
int status;
|
||||
|
||||
testPlan(11);
|
||||
testPlan(12+SLEEPERCOUNT);
|
||||
|
||||
event = epicsEventMustCreate(epicsEventEmpty);
|
||||
|
||||
@@ -200,6 +246,7 @@ MAIN(epicsEventTest)
|
||||
epicsThreadSleep(1.0);
|
||||
|
||||
eventWaitTest();
|
||||
eventWakeupTest();
|
||||
|
||||
return testDone();
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ epicsThreadOnceId onceFlag = EPICS_THREAD_ONCE_INIT;
|
||||
epicsThreadOnceId twiceFlag = EPICS_THREAD_ONCE_INIT;
|
||||
epicsMutexId lock;
|
||||
epicsEventId go;
|
||||
epicsEventId done;
|
||||
|
||||
int runCount = 0;
|
||||
int initCount = 0;
|
||||
@@ -49,6 +50,8 @@ void onceThread(void *ctx)
|
||||
|
||||
epicsMutexMustLock(lock);
|
||||
doneCount++;
|
||||
if (doneCount == runCount)
|
||||
epicsEventSignal(done);
|
||||
epicsMutexUnlock(lock);
|
||||
}
|
||||
|
||||
@@ -79,6 +82,7 @@ MAIN(epicsThreadOnceTest)
|
||||
testPlan(3 + NUM_ONCE_THREADS);
|
||||
|
||||
go = epicsEventMustCreate(epicsEventEmpty);
|
||||
done = epicsEventMustCreate(epicsEventEmpty);
|
||||
lock = epicsMutexMustCreate();
|
||||
|
||||
for (i = 0; i < NUM_ONCE_THREADS; i++) {
|
||||
@@ -92,12 +96,13 @@ MAIN(epicsThreadOnceTest)
|
||||
epicsThreadSleep(0.1);
|
||||
|
||||
testOk(runCount == NUM_ONCE_THREADS, "runCount = %d", runCount);
|
||||
epicsEventSignal(go);
|
||||
epicsThreadSleep(0.1);
|
||||
epicsEventSignal(go); /* Use epicsEventBroadcast(go) when available */
|
||||
epicsEventMustWait(done);
|
||||
|
||||
testOk(doneCount == NUM_ONCE_THREADS, "doneCount = %d", doneCount);
|
||||
testDiag("init was run by %s", initBy);
|
||||
|
||||
testDiag("Expecting thread recurse to suspend:");
|
||||
tid = epicsThreadCreate("recurse", epicsThreadPriorityMedium,
|
||||
epicsThreadGetStackSize(epicsThreadStackSmall),
|
||||
recurseThread, 0);
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
*/
|
||||
|
||||
/* code using a timer must implement epicsTimerNotify */
|
||||
class epicsTimerNotify {
|
||||
class epicsShareClass epicsTimerNotify {
|
||||
public:
|
||||
enum restart_t { noRestart, restart };
|
||||
class expireStatus {
|
||||
@@ -41,13 +41,13 @@ public:
|
||||
double delay;
|
||||
};
|
||||
|
||||
epicsShareFunc virtual ~epicsTimerNotify () = 0;
|
||||
virtual ~epicsTimerNotify () = 0;
|
||||
/* return "noRestart" or "expireStatus ( restart, 30.0 )" */
|
||||
virtual expireStatus expire ( const epicsTime & currentTime ) = 0;
|
||||
epicsShareFunc virtual void show ( unsigned int level ) const;
|
||||
virtual void show ( unsigned int level ) const;
|
||||
};
|
||||
|
||||
class epicsTimer { /* X aCC 655 */
|
||||
class epicsShareClass epicsTimer { /* X aCC 655 */
|
||||
public:
|
||||
/* calls cancel (see warning below) and then destroys the timer */
|
||||
virtual void destroy () = 0;
|
||||
@@ -67,7 +67,7 @@ public:
|
||||
double getExpireDelay ();
|
||||
virtual void show ( unsigned int level ) const = 0;
|
||||
protected:
|
||||
epicsShareFunc virtual ~epicsTimer () = 0; /* protected => delete() must not be called */
|
||||
virtual ~epicsTimer () = 0; /* protected => delete() must not be called */
|
||||
};
|
||||
|
||||
class epicsTimerQueue { /* X aCC 655 */
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# $Revision-Id$
|
||||
|
||||
# You might want to change this to some shared set of rules, e.g.
|
||||
# RULES=/path/to/epics/support/modules/rules/x-y
|
||||
RULES=$(EPICS_BASE)
|
||||
|
||||
INSTALL_IDLFILE = $(INSTALL)
|
||||
|
||||
include $(TOP)/configure/RELEASE
|
||||
@@ -10,7 +14,7 @@ ifdef T_A
|
||||
-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).$(T_A)
|
||||
endif
|
||||
|
||||
CONFIG=$(EPICS_BASE)/configure
|
||||
CONFIG=$(RULES)/configure
|
||||
include $(CONFIG)/CONFIG
|
||||
|
||||
# Override for definition in base
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#
|
||||
|
||||
-include $(TOP)/configure/os/CONFIG_SITE.Common.Common
|
||||
-include $(TOP)/configure/os/CONFIG_SITE.win32-x86.win32-x86
|
||||
|
||||
# ---------- java definitions
|
||||
JAVA_DIR=c:/j2sdk1.4.1_01
|
||||
@@ -29,11 +30,11 @@ IDL = /usr/local/idl
|
||||
# IDL=$(IDL)/external/rpc is the sun4 version
|
||||
IDLRPC = $(IDL)/external/rpc.solaris
|
||||
|
||||
X11_LIB = c:/cygwin/lib
|
||||
X11_INC = c:/cygwin/include
|
||||
#X11_LIB = c:/cygwin/lib
|
||||
#X11_INC = c:/cygwin/include
|
||||
|
||||
MOTIF_LIB = $(X11_LIB)
|
||||
MOTIF_INC = $(X11_INC)
|
||||
#MOTIF_LIB = $(X11_LIB)
|
||||
#MOTIF_INC = $(X11_INC)
|
||||
|
||||
OPENWIN =
|
||||
INTERVIEWS_BIN =
|
||||
|
||||
@@ -31,7 +31,8 @@ TK_TCL = /usr/lib
|
||||
IDL =
|
||||
|
||||
#JAVA_DIR=/usr/local/java
|
||||
JAVA_DIR=/usr/java/j2sdk1.4.1
|
||||
#JAVA_DIR=/usr/java/j2sdk1.4.1
|
||||
JAVA_DIR=/usr
|
||||
JAVA_INC=$(JAVA_DIR)/include
|
||||
|
||||
INTERVIEWS_BIN=/usr/local/interviews/bin/O.Linux
|
||||
|
||||
@@ -30,7 +30,7 @@ JAVA_DIR=/usr
|
||||
# Sciplot and XRTgraph used by medm
|
||||
SCIPLOT=YES
|
||||
#XRTGRAPH_EXTENSIONS = YES
|
||||
#XRTGRAPH = /usr/local/xrtgraph
|
||||
#XRTGRAPH = /usr/local/xrtgraph64
|
||||
XRTGRAPH_EXTENSIONS =
|
||||
XRTGRAPH =
|
||||
|
||||
|
||||
@@ -38,10 +38,13 @@ IV_LIB=/usr/local/interviews/lib/O.solaris
|
||||
WINGZ_INC = /opt/local/Wingz2/incl
|
||||
WINGZ_LIB = /opt/local/Wingz2/lib
|
||||
#MATHEMATICA = /usr/local/math
|
||||
|
||||
# Define XRTGRAPH_EXTENSIONS = YES only if using XRT/graph 3.x
|
||||
# and you want the extensions for MEDM
|
||||
XRTGRAPH_EXTENSIONS = YES
|
||||
XRTGRAPH = /opt/local/xrtgraph
|
||||
#XRTGRAPH_EXTENSIONS = YES
|
||||
#XRTGRAPH = /opt/local/xrtgraph
|
||||
SCIPLOT = YES
|
||||
|
||||
QUESTWIN = /usr/local/questwin
|
||||
|
||||
TK_LIB = /opt/local/lib
|
||||
|
||||
@@ -10,5 +10,5 @@
|
||||
# leave the line empty.
|
||||
#
|
||||
|
||||
-include $(TOP)/configure/os/CONFIG_SITE.solaris-sparc.solaris-sparc
|
||||
-include $(TOP)/configure/os/CONFIG_SITE.solaris-sparc64.solaris-sparc64
|
||||
|
||||
|
||||
@@ -18,3 +18,9 @@ ATLAS_LIB = /usr/local/oag/3rdParty/ATLAS/SunOS_SunUSIII_4/lib
|
||||
F2C_LIB = /usr/local/oag/3rdParty/F2C/SunOS_SunUSIII_4/lib
|
||||
CLAPACK_INCLUDE = /usr/local/oag/3rdParty/CLAPACK/SunOS_SunUSIII_4/include
|
||||
ATLAS_INCLUDE = /usr/local/oag/3rdParty/ATLAS/SunOS_SunUSIII_4/include
|
||||
|
||||
# Define XRTGRAPH_EXTENSIONS = YES only if using XRT/graph 3.x
|
||||
# and you want the extensions for MEDM
|
||||
#XRTGRAPH_EXTENSIONS =
|
||||
#XRTGRAPH =
|
||||
SCIPLOT = YES
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
-include $(TOP)/configure/os/CONFIG_SITE.solaris-x86.solaris-x86
|
||||
|
||||
@@ -86,9 +86,9 @@ QUESTWIN =
|
||||
# Define XRTGRAPH_EXTENSIONS = YES only if using XRT/graph 3.x
|
||||
# and you want the extensions for MEDM
|
||||
XRTGRAPH_EXTENSIONS = NO
|
||||
XRTGRAPH =
|
||||
# Define SCIPLOT if you don't have XRT/graph
|
||||
#SCIPLOT = YES
|
||||
#XRTGRAPH =
|
||||
|
||||
SCIPLOT = YES
|
||||
|
||||
# z library created in SDDS extension
|
||||
ZLIB_CFLAG = -DzLib
|
||||
@@ -98,8 +98,7 @@ z_DIR = $(EPICS_EXTENSIONS_LIB)
|
||||
CLAPACK_INCLUDE = c:/CLAPACK/include
|
||||
CLAPACK_LIB = c:/CLAPACK/lib
|
||||
|
||||
|
||||
EXCEED = Exceed7.10
|
||||
EXCEED = Exceed13.0
|
||||
|
||||
ifeq ($(EXCEED),Exceed5)
|
||||
X11_LIB = c:/exceed5/xdk/lib
|
||||
@@ -191,6 +190,18 @@ ifeq ($(EXCEED),Exceed12.0)
|
||||
HCLXmu_DIR=$(X11_LIB)
|
||||
EXCEED_CFLAGS=/DXMSTATIC /DMOTIFAPP
|
||||
endif
|
||||
ifeq ($(EXCEED),Exceed13.0)
|
||||
XDK=C:/Exceed13.0/XDK
|
||||
X11_LIB = $(XDK)/lib
|
||||
X11_INC = $(XDK)/include
|
||||
EXCEED_XLIBS=XmStatic XmStatXt Xlib HCLXmu
|
||||
XmStatic_DIR=$(X11_LIB)
|
||||
XmStatXt_DIR=$(X11_LIB)
|
||||
Xlib_DIR=$(X11_LIB)
|
||||
HCLXmu_DIR=$(X11_LIB)
|
||||
EXCEED_CFLAGS=/DXMSTATIC /DMOTIFAPP
|
||||
endif
|
||||
|
||||
|
||||
######################################################
|
||||
# Override for XFree86/LessTif
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
-include $(TOP)/configure/os/CONFIG_SITE.win32-x86.win32-x86
|
||||
|
||||
@@ -194,9 +194,8 @@ static long put_array_info(DBADDR *paddr, long nNew)
|
||||
subArrayRecord *prec = (subArrayRecord *) paddr->precord;
|
||||
|
||||
if (nNew > prec->malm)
|
||||
prec->nord = prec->malm;
|
||||
else
|
||||
prec->nord = nNew;
|
||||
nNew = prec->malm;
|
||||
prec->nord = nNew;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1566,6 +1566,7 @@ static void putNotifyErrorReply ( struct client *client, caHdrLargeArray *mp, in
|
||||
0u, mp->m_dataType, mp->m_count, statusCA,
|
||||
mp->m_available, 0 );
|
||||
if ( status != ECA_NORMAL ) {
|
||||
SEND_UNLOCK ( client );
|
||||
errlogPrintf ("%s at %d: should always get sufficent space for put notify error reply\n",
|
||||
__FILE__, __LINE__);
|
||||
return;
|
||||
@@ -2144,6 +2145,7 @@ static void search_fail_reply ( caHdrLargeArray *mp, void *pPayload, struct clie
|
||||
status = cas_copy_in_header ( client, CA_PROTO_NOT_FOUND,
|
||||
0u, mp->m_dataType, mp->m_count, mp->m_cid, mp->m_available, NULL );
|
||||
if ( status != ECA_NORMAL ) {
|
||||
SEND_UNLOCK ( client );
|
||||
errlogPrintf ( "%s at %d: should always get sufficent space for search fail reply?\n",
|
||||
__FILE__, __LINE__ );
|
||||
return;
|
||||
|
||||
@@ -416,8 +416,8 @@ static void log_one_client (struct client *client, unsigned level)
|
||||
send_delay, recv_delay);
|
||||
printf(
|
||||
"\tUnprocessed request bytes=%u, Undelivered response bytes=%u\n",
|
||||
client->send.stk,
|
||||
client->recv.cnt - client->recv.stk );
|
||||
client->recv.cnt - client->recv.stk,
|
||||
client->send.stk );
|
||||
printf(
|
||||
"\tState=%s%s%s\n",
|
||||
state[client->disconnect?1:0],
|
||||
|
||||
Reference in New Issue
Block a user