Compare commits

...

106 Commits

Author SHA1 Message Date
Andrew Johnson
d820ed034a R3.14.9-pre2 2006-12-11 22:30:17 +00:00
Andrew Johnson
4452f97536 Might as well build the softIoc on everything... 2006-12-11 22:27:00 +00:00
Andrew Johnson
c48bf48f52 Don't set GCC_EXEC_PREFIX for any vxWorks target. 2006-12-11 22:21:10 +00:00
Andrew Johnson
bf77401cea Need to have built the RTEMS stuff before any programs. 2006-12-11 21:53:43 +00:00
Janet B. Anderson
d4adf4a0d6 Move softIoc after RTEMS dir. 2006-12-11 21:23:15 +00:00
Andrew Johnson
f2fac70923 Can't use ifeq(VXWORKS_VERSION) because we don't know its value yet. 2006-12-11 19:46:39 +00:00
Jeff Hill
a00a246b0d fixed html 4.01 compliance issues 2006-12-11 18:56:00 +00:00
Janet B. Anderson
537f9954bf Dont do a STATIC build. 2006-12-11 18:20:32 +00:00
Janet B. Anderson
d206dd92f6 Use PERL macro definition. 2006-12-11 18:12:42 +00:00
Andrew Johnson
f50c49131c Make it <cstddef> so it builds everywhere else. 2006-12-11 17:51:48 +00:00
Janet B. Anderson
55986a1e92 Fix for Borland build. 2006-12-11 17:46:23 +00:00
Andrew Johnson
5fa24ad581 Added new target arch's to comments. 2006-12-11 17:04:54 +00:00
Andrew Johnson
9a81831a85 vxWorks optimization. 2006-12-11 16:53:45 +00:00
Andrew Johnson
11a865805e Make test bail out if socket bind fails; usually there's a CAS running. 2006-12-11 16:52:36 +00:00
Andrew Johnson
bcc41d0e72 Changed build order: build tests immediately after their parent.
Move template stuff lower down.
2006-12-09 00:04:15 +00:00
Andrew Johnson
fc4b09f84d Changed headings to show previous and new release numbers.
New architectures listed.
2006-12-09 00:02:41 +00:00
Andrew Johnson
682bb4150c Incorporated vxWorks 6 settings from SNS.
Added the vxWorks-mpc8540 architecture.
Added the ppc604_altivec sub-architecture.
Some cleanup.
2006-12-09 00:01:57 +00:00
Andrew Johnson
fc98fe2335 Added my local toolset path. 2006-12-08 23:27:18 +00:00
Andrew Johnson
8a4e442705 menuSimmRAW fixes. 2006-12-07 23:32:48 +00:00
Andrew Johnson
11ef0bca03 Fixes for vxWorks 6.x. 2006-12-07 21:10:24 +00:00
Jeff Hill
1e9986a2ed fix for mantis 278 - PCAS should refresh strng table cache for enum PV every time that a channel connects 2006-12-07 20:30:44 +00:00
Andrew Johnson
2e9bd68b2f Added freebsd-x86 support, modifying freebsd-x86_64 for commonality. 2006-12-07 20:05:20 +00:00
Jeff Hill
4840787079 use proper type for ioctl 2006-12-07 19:55:54 +00:00
Jeff Hill
2c9414a881 installed epics thread exit capabilities 2006-12-07 17:00:20 +00:00
Janet B. Anderson
99e9d60725 Replaced .o with $(OBJ). 2006-12-07 15:50:16 +00:00
Jeff Hill
f16d241662 installed epics thread exit capabilities 2006-12-07 00:49:19 +00:00
Andrew Johnson
cc9473339d Added freebsd-x86, fixed some freebsd-x86_64 stuff. 2006-12-06 23:31:39 +00:00
Andrew Johnson
a400c37cc7 Optimization fiddling, fix for linux-arm. 2006-12-06 23:28:06 +00:00
Andrew Johnson
c25282bf58 Can't override the two _LDFLAGS var's, have to append to them. 2006-12-06 22:35:21 +00:00
Andrew Johnson
3fe19655a1 Fixes for various GCC warnings. 2006-12-06 17:10:26 +00:00
Jeff Hill
724a589fe1 fixed warnings 2006-12-05 22:54:52 +00:00
Jeff Hill
b8bcfdcdda fixed warnings 2006-12-05 22:45:24 +00:00
Jeff Hill
da75453a22 fixed no address returned from devAllocAddress 2006-12-05 22:44:40 +00:00
Andrew Johnson
d25e7107a7 Really remove warning... 2006-12-05 22:28:28 +00:00
Andrew Johnson
e93b833c27 Cleaning up warnings. 2006-12-05 22:12:17 +00:00
Andrew Johnson
f0b99cc9c1 No version of vxWorks currently provides numeric_limits<T> ... 2006-12-05 21:44:01 +00:00
Jeff Hill
94dfec0999 fixed compiler warning 2006-12-05 19:56:28 +00:00
Andrew Johnson
88c68422af Fixes for cross-compiling shared libraries properly. 2006-12-05 19:43:20 +00:00
Andrew Johnson
db9f3d81a3 vxWorks 6 changes WIND_HOST_TYPE x86-linux2. 2006-12-05 19:40:00 +00:00
Jeff Hill
947822da70 use function template specialization instead of function overloading
hoping to workaround issues with gcc 4.0
2006-12-05 01:22:33 +00:00
Janet B. Anderson
f48fe4c1c0 Added WIN32_RUNTIME definitions. 2006-12-04 22:45:43 +00:00
Janet B. Anderson
4d30f6adaa Added test JAVA changes. 2006-12-04 22:44:31 +00:00
Janet B. Anderson
9fb0faf86e Modifies python dirs. Modified X11/Motif dirs. 2006-12-04 22:43:25 +00:00
Janet B. Anderson
f42e4195c5 Added JAVA_INC defination. 2006-12-04 22:41:51 +00:00
Janet B. Anderson
a3808ec393 Modified comment. 2006-12-04 22:40:46 +00:00
Janet B. Anderson
41786fef1f Added oag lib dir defs. Added JAVA_INC def. Added X11 and Motif comments. 2006-12-04 22:40:15 +00:00
Janet B. Anderson
82d59c8d75 Added JAVA_INC definition. 2006-12-04 22:38:38 +00:00
Janet B. Anderson
0fa08d07c8 Modified JAVA directories. Added oag directories. 2006-12-04 22:37:45 +00:00
Janet B. Anderson
a4ab66c867 Initial version. 2006-12-04 22:34:31 +00:00
Janet B. Anderson
565d931b4b Changes to add ALL library dirs to the runtime search option on link line. 2006-12-04 21:15:10 +00:00
Janet B. Anderson
e372769b45 Remove -ansi compiler option. 2006-12-04 17:41:15 +00:00
Janet B. Anderson
f011531538 Added SHARED_LIBRARIES=NO. 2006-12-04 17:30:12 +00:00
Andrew Johnson
52e28d7a7a Ok, so all vxWorks 5.x versions need the -include vxWorks.h flag... 2006-12-02 00:09:16 +00:00
Andrew Johnson
f4d3632afd Cleanup gcc warnings. 2006-12-01 23:58:23 +00:00
Andrew Johnson
22d9f942e2 Cleanup obscure gcc warning. 2006-12-01 23:57:04 +00:00
Andrew Johnson
29c43d0cdb Cleanup some of the more obscure gcc warnings. 2006-12-01 23:52:59 +00:00
Andrew Johnson
318e5247f1 Fix dependencies. 2006-12-01 23:48:21 +00:00
Ralph Lange
bdd9d96603 Fix for 3.13 compatibility (OBJLIB) 2006-12-01 18:25:17 +00:00
Jeff Hill
afc4bdd3be fixed comment 2006-12-01 16:34:01 +00:00
Jeff Hill
ce17ed5ae2 fixed gnu warning 2006-12-01 00:19:31 +00:00
Jeff Hill
e553c3ec56 added comment 2006-12-01 00:17:58 +00:00
Jeff Hill
bac905a5a9 hack for non-standard sun pro cstring 2006-12-01 00:11:05 +00:00
Jeff Hill
049e054c31 fixed win32 dll exports 2006-11-30 22:29:26 +00:00
Jeff Hill
634f37c225 fixed func and func proto dont match warning 2006-11-30 22:27:34 +00:00
Jeff Hill
0dd205f750 installed osdWireFormat.h 2006-11-30 22:20:10 +00:00
Jeff Hill
ee8eec3fdb installed 2006-11-30 22:03:40 +00:00
Jeff Hill
8de0f7bf7a removed 2006-11-30 22:03:22 +00:00
Andrew Johnson
fb15db1454 Updated for new release process. 2006-11-30 21:50:14 +00:00
Andrew Johnson
577b65a67f Return libraries to original order and re-add registryIoc, in case it matters. 2006-11-30 18:23:35 +00:00
Andrew Johnson
6c5dedead5 New iocshHost library. 2006-11-30 18:09:41 +00:00
Andrew Johnson
514bb7f897 Created an iocshHost library, added it to EPICS_BASE_HOST_LIBS 2006-11-30 18:09:15 +00:00
Jeff Hill
9785a839b7 fixed mantis 261 2006-11-29 21:50:31 +00:00
Jeff Hill
f2cc4a73e9 fixed gnu warnings 2006-11-29 21:37:05 +00:00
Andrew Johnson
d443b72d29 Added CAS, fixed some other wording and HTML encoding. 2006-11-29 20:29:06 +00:00
Janet B. Anderson
d3069f12bc Removed iocsh and registryIoc from EPICS_BASE_HOST_LIBS. 2006-11-29 19:25:27 +00:00
Janet B. Anderson
3b50639eef Added D_cplusplus c++ compiler option. Undefined LIBRARY_LD_RESS. 2006-11-29 16:37:09 +00:00
Janet B. Anderson
39128f134e Undefine LIBRARY_LD_RESS. 2006-11-29 16:32:26 +00:00
W. Eric Norum
6802509e6d Fix missed edit in previous change. 2006-11-29 13:00:12 +00:00
Jeff Hill
5b6a358fab fixed gnu build issue 2006-11-29 01:07:57 +00:00
Jeff Hill
bdc071f3c5 fix for mantis 276 - EDM on OS X gets access fault in ipAddrToAsciiEngine::allocate 2006-11-28 23:45:04 +00:00
Jeff Hill
de19586072 updated to accomodate what I shouldnt have forgotten about strict aliasing 2006-11-28 23:07:06 +00:00
Andrew Johnson
b61e4bcb59 Don't cast away const unnecessarily - gcc warning. 2006-11-28 21:33:55 +00:00
Andrew Johnson
4a98bdd599 Clear up gcc warnings. 2006-11-28 21:23:25 +00:00
Janet B. Anderson
54ab39d0cf Changes for R3.14.9. 2006-11-28 19:29:31 +00:00
Janet B. Anderson
af35f163ec Modified comment. 2006-11-28 19:16:12 +00:00
Janet B. Anderson
936f194885 Put quote marks aroung option with #. 2006-11-28 19:00:16 +00:00
Janet B. Anderson
5150a9404c Removed comment about CONFIG.Vx. 2006-11-28 18:56:50 +00:00
Jeff Hill
ecb43bedd9 cleaned up locking - this is an old code written w/o consideration of SMP
thread safe locking issues
2006-11-28 18:54:03 +00:00
Janet B. Anderson
1707e28d2e Changed "-xtarget=ultra -xarch=v9" to "-xarch=generic64". 2006-11-28 18:52:13 +00:00
Jeff Hill
91e3c129df db flush extra labor now returns void 2006-11-28 18:51:16 +00:00
Janet B. Anderson
b50c8f5882 Use definitions from CONFIG.Host.solaris. 2006-11-28 18:51:10 +00:00
Janet B. Anderson
47d7b63b4f Removed comment about CONFIG.Vx. 2006-11-28 18:50:20 +00:00
Janet B. Anderson
522e090992 Changes for solaris10. Added libraries -lc -lCstd. 2006-11-28 18:34:58 +00:00
Andrew Johnson
e16dc7852e Fixed gcc warnings. 2006-11-28 18:00:37 +00:00
Andrew Johnson
48337e2382 Fixed gcc '0 flag' warnings. 2006-11-28 17:04:18 +00:00
Janet B. Anderson
d23b8bb1d0 Added and modifiec definitons for win32-x86-cygwin build. 2006-11-28 16:57:01 +00:00
Janet B. Anderson
ce55fe1c78 Added OP_SYS_CPPFLAGS to CPPFLAGS definition. 2006-11-28 16:55:29 +00:00
Andrew Johnson
aa08e33707 Fixed problem saving hostnames in HAG. 2006-11-28 15:32:06 +00:00
Jeff Hill
c51438c597 fixed infinite recursion introduced by change in generic epicsThreadOnce code 2006-11-28 00:46:35 +00:00
Janet B. Anderson
0b481a519d Changed "-xtarget=ultra -xarch=v9" to " -xarch=generic64" 2006-11-27 20:23:03 +00:00
Janet B. Anderson
ec8e064333 Changed -KPIC to -xcode=pic32. 2006-11-27 20:20:37 +00:00
Janet B. Anderson
257c7fd23b Put quotes around option with # in manifest mt.exe command. 2006-11-27 20:11:45 +00:00
Andrew Johnson
1e72aa61f0 Reverting Janet's cygdrive change which she says breaks other Win32 builds.
Until Cygwin's version of Make gets fixed, use the mingw Make instead.
2006-11-21 22:52:41 +00:00
Janet B. Anderson
deeda7b04f Set OS_CLASS to Linux and ARCH_DEP_CFLAGS to override CONFIG.Host.Linux. 2006-11-20 23:11:33 +00:00
Janet B. Anderson
e7655058d0 Initial version. 2006-11-20 21:37:53 +00:00
Andrew Johnson
78afaf42f3 Revert to -CVS for snapshots. 2006-11-20 21:12:08 +00:00
169 changed files with 2231 additions and 1658 deletions

View File

@@ -277,7 +277,7 @@ POSIX_CPPFLAGS_YES =
# useManifestTool.pl returns 0(don't use) or 1(use).
#
ifeq ($(shell $(PERL) $(EPICS_BASE_TOOLS)/useManifestTool.pl),1)
MT_DLL_COMMAND = mt.exe /manifest $@.manifest /outputresource:$@;\#2
MT_EXE_COMMAND = mt.exe /manifest $@.manifest /outputresource:$@;\#1
MT_DLL_COMMAND = mt.exe /manifest $@.manifest "/outputresource:$@;\#2"
MT_EXE_COMMAND = mt.exe /manifest $@.manifest "/outputresource:$@;\#1"
endif

View File

@@ -12,23 +12,18 @@
# Sites may override these definitions in CONFIG_SITE.Host.freebsd
OS_CLASS = freebsd
ARCH_CLASS = x86_64
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG.Host.UnixCommon
ARCH_DEP_CPPFLAGS += -D_X86_64_
CODE_CPPFLAGS = -D_REENTRANT
#POSIX_CPPFLAGS = -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS -D_XOPEN_SOURCE=500
POSIX_CPPFLAGS = -D_POSIX_THREADS
POSIX_LDLIBS = -lpthread
# -D_BSD_SOURCE for gethostname() in unistd.h as needed by cacChannelIO.cpp.
OP_SYS_CPPFLAGS += -D_BSD_SOURCE
OP_SYS_CPPFLAGS += -Dfreebsd
#OP_SYS_LDLIBS += -lrt
# Set runtime path for shared libraries
RUNTIME_LDFLAGS = $(SHRLIB_SEARCH_FULLPATHDIRS:%=-Wl,-rpath,%)

View File

@@ -0,0 +1,15 @@
#*************************************************************************
# Copyright (c) 2006 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 is distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution.
#*************************************************************************
# $Id$
ARCH_CLASS = x86
-include $(EPICS_BASE)/config/CONFIG.Host.freebsd
ARCH_DEP_CPPFLAGS += -D_X86_

View File

@@ -1,12 +1,15 @@
#*************************************************************************
# Copyright (c) 2002 The University of Chicago, as Operator of Argonne
# Copyright (c) 2006 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.
#*************************************************************************
# $Id$
ARCH_CLASS = x86_64
-include $(EPICS_BASE)/config/CONFIG.Host.freebsd
ARCH_DEP_CPPFLAGS += -D_X86_64_

View File

@@ -0,0 +1,17 @@
#*************************************************************************
# 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.
#*************************************************************************
# $Id$
-include $(EPICS_BASE)/config/CONFIG.Host.Linux
ARCH_CLASS = Linux
ARCH_DEP_CFLAGS = -D_X86_64_ -Dlinux

View File

@@ -0,0 +1,13 @@
#*************************************************************************
# 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.
#*************************************************************************
# $Id$
-include $(EPICS_BASE)/config/CONFIG.Host.linux-x86_64

View File

@@ -71,16 +71,19 @@ POSIX_CPPFLAGS_YES += -D__EXTENSIONS__ -mt
ARCH_DEP_LDFLAGS += -mt
# socket and nsl needed by libca.a
# socket and nsl needed by libca.a when SHARED_LIBRARIES = NO
ARCH_DEP_LDLIBS += -lsocket -lnsl
ARCH_DEP_LDLIBS += -lposix4 -lpthread
ARCH_DEP_LDLIBS_8 = -lCrun
ARCH_DEP_LDLIBS_9 = -lCrun
ARCH_DEP_LDLIBS_8 += -lCrun -lc -lCstd
ARCH_DEP_LDLIBS_9 += -lCrun -lc -lCstd
ARCH_DEP_LDLIBS_10 += -lCrun -lc -lCstd
ARCH_DEP_LDLIBS += $(ARCH_DEP_LDLIBS_$(SOLARIS_VERSION))
#Allows R3.13 built extensions to load R3.14 shared libs
SYS_DLL_LIBS_solaris_8 = Crun
SYS_DLL_LIBS_solaris_9 = Crun
SYS_DLL_LIBS_solaris_10 = Crun
SYS_DLL_LIBS_solaris += posix4 pthread $(SYS_DLL_LIBS_solaris_$(SOLARIS_VERSION))
# Runtime ldflags

View File

@@ -12,7 +12,7 @@
# solaris-sparc is the new name for solaris
-include $(EPICS_BASE)/config/CONFIG.Host.solaris
ARCH_DEP_CFLAGS += -xtarget=ultra -xarch=v9
ARCH_DEP_CXXFLAGS += -xtarget=ultra -xarch=v9
ARCH_DEP_LDFLAGS += -xtarget=ultra -xarch=v9
ARCH_DEP_CFLAGS += -xarch=generic64
ARCH_DEP_CXXFLAGS += -xarch=generic64
ARCH_DEP_LDFLAGS += -xarch=generic64

View File

@@ -7,7 +7,7 @@
# and higher are distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution.
#*************************************************************************
# CONFIG.Host.solaris-x86
# CONFIG.Host.solaris-x86-gnu
#
# This file is maintained by the EPICS community.
# Sites may override these definitions in CONFIG_SITE.Host.solaris-x86

View File

@@ -12,20 +12,7 @@
# This file is maintained by the EPICS community.
# Sites may override these definitions in CONFIG_SITE.Host.solarisGnu
ARCH_CLASS = solaris
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG.Host.UnixCommon
#
# required by sun's C++ compiler
#
AR = ar
_AR = $(AR) $(ARFLAGS)
G++_AR = $(_AR)
CCC_AR = $(CCC) -xar -o
ARCMD = $($(CPLUSPLUS)_AR) $@
RANLIB =
include $(EPICS_BASE)/config/CONFIG.Host.solaris
#==========================
# These are overrides of ANSI and CPLUSPLUS values in CONFIG_SITE
@@ -33,25 +20,3 @@ ANSI=GCC
CPLUSPLUS=G++
#==========================
SOLARIS_VERSION = $(subst 5.,,$(shell uname -r))
ARCH_DEP_CPPFLAGS += -DSOLARIS=$(SOLARIS_VERSION)
POSIX_CPPFLAGS_YES += -D__EXTENSIONS__
ARCH_DEP_LDFLAGS += -mt
# socket and nsl needed by libca.a
ARCH_DEP_LDLIBS += -lsocket -lnsl
ARCH_DEP_LDLIBS += -lposix4 -lpthread
ARCH_DEP_LDLIBS_8 = -lCrun
ARCH_DEP_LDLIBS_9 = -lCrun
ARCH_DEP_LDLIBS += $(ARCH_DEP_LDLIBS_$(SOLARIS_VERSION))
#Allows R3.13 built extensions to load R3.14 shared libs
SYS_DLL_LIBS_solaris_8 = Crun
SYS_DLL_LIBS_solaris_9 = Crun
SYS_DLL_LIBS_solaris += posix4 pthread $(SYS_DLL_LIBS_solaris_$(SOLARIS_VERSION))
# Runtime ldflags
RUNTIME_LDFLAGS =$(addprefix -R,$(EPICS_BASE)/lib/$(EPICS_HOST_ARCH)\
$(EPICS_EXTENSIONS)/lib/$(EPICS_HOST_ARCH))

View File

@@ -12,14 +12,15 @@
# This file is maintained by the EPICS community.
# Sites may override these definitions in CONFIG_SITE.Host.win32-x86-cygwin
SHARED_LIBRARIES = NO
#ARCH_CLASS = WIN32
ARCH_CLASS = cygwin
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG.Host.UnixCommon
EXE = .exe
SHARED_LIBRARIES = NO
ARCH_CLASS = WIN32
AR = ar -rc
ARCMD = $(AR) $@
RANLIB = ranlib -t
@@ -35,13 +36,16 @@ G++_STRICT = $(G++) -pedantic
# Dont use -fPIC: with -fPIC we get
# "warning: -fPIC ignored for target (all code is position independent) "
GCC_DEP_CFLAGS = -D_REENTRANT
G++_DEP_CFLAGS = -D_REENTRANT
GCC_DEP_CFLAGS =
G++_DEP_CFLAGS =
OP_SYS_CFLAGS =
OP_SYS_CPPFLAGS = -mno-cygwin
OP_SYS_CXXFLAGS += -D__cplusplus
OP_SYS_LDFLAGS += -mno-cygwin
POSIX_CPPFLAGS_YES =
# With no-cygwin option:
# compiler defines _X86_ 1
# compiler defines __MSVCRT__ 1

View File

@@ -12,12 +12,14 @@
# This file is maintained by the EPICS community.
# Sites may override these definitions in CONFIG_SITE.Host.win32-x86-mingw
ARCH_CLASS = WIN32
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG.Host.UnixCommon
EXE = .exe
SHARED_LIBRARIES = NO
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG.Host.UnixCommon
ARCH_CLASS = WIN32
AR = ar -rc
ARCMD = $(AR) $@
@@ -39,5 +41,18 @@ CPLUSPLUS=G++
# Compiler defines WINNT 1
# Compiler does not define __unix __unix__ unix
OP_SYS_CFLAGS =
OP_SYS_CXXFLAGS += -D__cplusplus
GCC_DEP_CFLAGS =
G++_DEP_CFLAGS =
POSIX_CPPFLAGS_YES =
ARCH_DEP_LDLIBS = -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm
# Remove -ansi compile option for gcc (does not allow c++ type comments).
GCC_ANSI = $(GCC)
GCC_STRICT = $(GCC) -pedantic
G++_NORMAL = $(G++) -pedantic
G++_STRICT = $(G++) -pedantic

View File

@@ -244,7 +244,7 @@ LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS)\
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(STATIC_LDLIBS) $(ARCH_DEP_LDLIBS)\
$(OP_SYS_LDLIBS) $(POSIX_LDLIBS)
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS) $(ARCH_DEP_CPPFLAGS) $(POSIX_CPPFLAGS)
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS) $(ARCH_DEP_CPPFLAGS) $(POSIX_CPPFLAGS) $(OP_SYS_CPPFLAGS)
CPPSNCFLAGS = $(INCLUDES)

View File

@@ -9,7 +9,6 @@
#*************************************************************************
# CONFIG_HOST_ARCH.Darwin
#
# Override values in CONFIG.Vx
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.UnixCommon

View File

@@ -9,7 +9,6 @@
#*************************************************************************
# CONFIG_HOST_ARCH.Linux
#
# Override values in CONFIG.Vx
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.UnixCommon

View File

@@ -9,7 +9,6 @@
#*************************************************************************
# CONFIG_HOST_ARCH.alpha
#
# Override values in CONFIG.Vx
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.UnixCommon

View File

@@ -9,6 +9,3 @@
# $Id$
-include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.UnixCommon
WIND_HOST_TYPE = i386-linux2

View File

@@ -9,7 +9,6 @@
#*************************************************************************
# CONFIG_HOST_ARCH.hp700
#
# Override values in CONFIG.Vx
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.UnixCommon

View File

@@ -0,0 +1,15 @@
#*************************************************************************
# 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.
#*************************************************************************
# $Id$
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.UnixCommon
WIND_HOST_TYPE = x86-linux2

View File

@@ -0,0 +1,15 @@
#*************************************************************************
# 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.
#*************************************************************************
# $Id$
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.linux-x86_64
HOST_OPT = NO

View File

@@ -9,7 +9,6 @@
#*************************************************************************
# CONFIG_HOST_ARCH.sgi
#
# Override values in CONFIG.Vx
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.UnixCommon

View File

@@ -8,8 +8,6 @@
# in file LICENSE that is included with this distribution.
#*************************************************************************
# CONFIG_HOST_ARCH.solaris
#
# Override values in CONFIG.Vx
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.UnixCommon

View File

@@ -8,8 +8,6 @@
# in file LICENSE that is included with this distribution.
#*************************************************************************
# CONFIG_HOST_ARCH.solaris-x86
#
# Override values in CONFIG.Vx
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.UnixCommon

View File

@@ -1,6 +1,5 @@
# CONFIG_HOST_ARCH.solarisGnu
#
# Override values in CONFIG.Vx
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.UnixCommon

View File

@@ -9,7 +9,6 @@
#*************************************************************************
# CONFIG_HOST_ARCH.sun4
#
# Override values in CONFIG.Vx
# Include definitions common to all Unix archs
include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.UnixCommon

View File

@@ -1,3 +1,4 @@
# CONFIG_SITE.Vx.ppc604
# APS override of tornado directory for ppc
#VX_DIR_YES = /usr/local/vw/tornado101ppc2

View File

@@ -28,7 +28,7 @@ EPICS_BASE_IOC_LIBS += dbIoc registryIoc dbStaticIoc ca Com
#---------------------------------------------------------------
# Epics base Host libraries
EPICS_BASE_HOST_LIBS += cas gdd iocsh asHost dbStaticHost registryIoc
EPICS_BASE_HOST_LIBS += cas gdd iocshHost asHost dbStaticHost registryIoc
EPICS_BASE_HOST_LIBS += ca Com
#---------------------------------------------------------------

View File

@@ -29,8 +29,8 @@ EPICS_MODIFICATION = 9
EPICS_PATCH_LEVEL = 0
# This will be -CVS or empty at an official release point
#EPICS_CVS_SNAPSHOT=-CVS
EPICS_CVS_SNAPSHOT=-pre1
EPICS_CVS_SNAPSHOT=-pre2
#EPICS_CVS_SNAPSHOT=
# No changes should be needed below here

View File

@@ -22,6 +22,8 @@
# darwin-ppc (PowerPC based Apple running OSX)
# darwin-x86 (Intel based Apple running OSX)
# darwin-ppcx86 (Universal binaries for both CPUs)
# freebsd-x86 (GNU compiler used for host builds)
# freebsd-x86_64 (GNU compiler used for host builds)
# hpux-parisc (HP compiler used for host builds)
# hpux-parisc-gnu (GNU compiler used for host builds)
# linux-ppc (GNU compiler used for host builds)
@@ -59,6 +61,7 @@
# linux-586 (linux-x86 host)
# linux-686 (linux-x86 host)
# linux-athlon (linux-x86 host)
# linux-arm
# vxWorks-486
# vxWorks-68040
# vxWorks-68040lc
@@ -68,6 +71,8 @@
# vxWorks-ppc603_long
# vxWorks-ppc604
# vxWorks-ppc604_long
# vxWorks-ppc604_altivec
# vxWorks-mpc8540
# RTEMS-gen68360
# RTEMS-mcp750
# RTEMS-mvme167

View File

@@ -16,11 +16,6 @@ VALID_BUILDS = Host Ioc
# Gnu directory
GNU_DIR = /usr/local
#-------------------------------------------------------
# Get fullpathname of relative dirs
SHRLIB_SEARCH_FULLPATHDIRS = $(foreach dir,$(SHRLIB_SEARCH_DIRS), \
$(shell perl $(TOOLS)/fullPathName.pl $(dir)))
#-------------------------------------------------------
# Unix prefix and suffix definitions
EXE =
@@ -55,8 +50,10 @@ SHRLIB_DEPLIBS=$(foreach lib, $(LIB_LIBS) $(USR_LIBS), \
SHRLIB_LDLIBS = $(addprefix -l, $($*_LDLIBS) $(LIB_LIBS) $(USR_LIBS) \
$($*_SYS_LIBS) $(LIB_SYS_LIBS) $(USR_SYS_LIBS)) $(LDLIBS)
SHRLIB_DEPLIB_DIRS = $(dir $($*_DEPLIBS)) $(dir $(SHRLIB_DEPLIBS))
SHRLIBDIR_LDFLAGS += $(sort $(SHRLIB_DEPLIB_DIRS:%=-L%))
SHRLIB_DEPLIB_DIRS = $(foreach word,$(sort $(dir $($*_DEPLIBS) $(SHRLIB_DEPLIBS))), \
$(shell $(PERL) $(TOOLS)/fullPathName.pl $(word)))
SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-L%)
#-------------------------------------------------------
# Prod: DEPLIBS, LDFLAGS, and LDLIBS definitions
@@ -75,8 +72,10 @@ LDLIBS_SHARED_NO = LDLIBS
PROD_LDLIBS += $($(firstword $(LDLIBS_STATIC_$(STATIC_BUILD)) \
$(LDLIBS_SHARED_$(SHARED_LIBRARIES))))
PROD_DEPLIB_DIRS = $(dir $($*_DEPLIBS)) $(dir $(PROD_DEPLIBS))
PRODDIR_LDFLAGS += $(sort $(PROD_DEPLIB_DIRS:%=-L%))
PROD_DEPLIB_DIRS = $(foreach word,$(sort $(dir $($*_DEPLIBS) $(PROD_DEPLIBS))), \
$(shell $(PERL) $(TOOLS)/fullPathName.pl $(word)))
PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-L%)
#--------------------------------------------------
# Link definitions

View File

@@ -27,7 +27,10 @@ ARCH_DEP_CPPFLAGS += -D_X86_
OP_SYS_CPPFLAGS += -DCYGWIN32 -U_WIN32
# Set runtime path for shared libraries
RUNTIME_LDFLAGS = $(SHRLIB_SEARCH_FULLPATHDIRS:%=-Wl,-rpath,%)
SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath,%)
# Set runtime path for products
PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-Wl,-rpath,%)
# Definitions used when COMMANDLINE_LIBRARY is READLINE
INCLUDES_READLINE = -I$(GNU_DIR)/include

View File

@@ -0,0 +1,34 @@
# $Id$
#
# This file is maintained by the build community.
#
# Definitions for freebsd-x86 target builds
# Sites may override these definitions in CONFIG_SITE.Common.freebsd-x86
#-------------------------------------------------------
# Include definitions common to all freebsd targets
include $(CONFIG)/os/CONFIG.Common.freebsdCommon
ARCH_CLASS = x86
ARCH_DEP_CPPFLAGS += -D_X86_
ifeq ($(BUILD_CLASS),CROSS)
ifeq ($(EPICS_HOST_ARCH),freebsd-x86)
# Added for 386,486,... cross builds
CMPLR_PREFIX=
CROSS_INCLUDES=
CROSS_LDFLAGS=
# Use -w not -Wall
#WARN_CFLAGS_YES = -w
#WARN_CXXFLAGS_YES = -w
-include $(CONFIG)/os/CONFIG_SITE.Common.freebsd-x86
-include $(CONFIG)/os/CONFIG.freebsd-x86.freebsd-x86
-include $(CONFIG)/os/CONFIG_SITE.freebsd-x86.freebsd-x86
else
GNU_TARGET=i586-pc-freebsd-gnu
CMPLR_SUFFIX=
CMPLR_PREFIX=$(addsuffix -,$(GNU_TARGET))
endif
endif

View File

@@ -13,17 +13,18 @@ OS_CLASS = freebsd
CODE_CPPFLAGS = -D_REENTRANT
#POSIX_CPPFLAGS = -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS -D_XOPEN_SOURCE=500
POSIX_CPPFLAGS = -D_POSIX_THREADS
POSIX_LDLIBS = -lpthread
# -D_BSD_SOURCE for gethostname() in unistd.h as needed by cacChannelIO.cpp.
OP_SYS_CPPFLAGS += -D_BSD_SOURCE
OP_SYS_CPPFLAGS += -Dfreebsd
#OP_SYS_LDLIBS += -lrt
# Set runtime path for shared libraries
RUNTIME_LDFLAGS = $(SHRLIB_SEARCH_FULLPATHDIRS:%=-Wl,-rpath,%)
SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath,%)
# Set runtime path for products
PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-Wl,-rpath,%)
# Definitions used when COMMANDLINE_LIBRARY is READLINE
LDLIBS_READLINE = -lreadline -lcurses

View File

@@ -26,6 +26,9 @@ LOADABLE_SHRLIB_SUFFIX = .sl$(addprefix .,$(LOADABLE_SHRLIB_VERSION))
# Set runtime path for shared libraries
empty:= # trick from the make docs...
space:= $(empty) $(empty)
RUNTIME_LDFLAGS = -Wl,+b$(subst $(space),:,$(sort $(SHRLIB_SEARCH_FULLPATHDIRS))),+s
SHRLIBDIR_LDFLAGS += -Wl,+b$(subst $(space),:,$(SHRLIB_DEPLIB_DIRS)),+s
# Set runtime path for products
PRODDIR_LDFLAGS += -Wl,+b$(subst $(space),:,$(PROD_DEPLIB_DIRS)),+s
GNU_TARGET=parisc-hp-unix

View File

@@ -29,7 +29,10 @@ ARCH_DEP_CPPFLAGS += -D_X86_
OP_SYS_CPPFLAGS += -DUNIX
# Set runtime path for shared libraries
RUNTIME_LDFLAGS = $(SHRLIB_SEARCH_FULLPATHDIRS:%=-Wl,-rpath,%)
SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath,%)
# Set runtime path for products
PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-Wl,-rpath,%)
# Definitions used when COMMANDLINE_LIBRARY is READLINE
INCLUDES_READLINE = -I$(GNU_DIR)/include

View File

@@ -6,7 +6,7 @@
# Sites may override these definitions in CONFIG_SITE.Common.linux-arm
#-------------------------------------------------------
# Include definitions common to all Unix targets
# Include definitions common to all Linux targets
include $(CONFIG)/os/CONFIG.Common.linuxCommon
ARCH_CLASS = arm
@@ -14,14 +14,16 @@ ARCH_CLASS = arm
# Set a special definition for network order of Netwinder ARM floating point
ARCH_DEP_CPPFLAGS += -D_ARM_NWFP_
# Set runtime path for shared libraries
#RUNTIME_LDFLAGS = $(SHRLIB_SEARCH_DIRS:%=-Wl,-rpath,%)
RUNTIME_LDFLAGS = $(SHRLIB_SEARCH_DIRS:%=-Wl,-rpath-link,%)
ifeq ($(BUILD_CLASS),CROSS)
GNU_TARGET = arm-linux
ifdef CROSS
GNU_TARGET=arm-linux
# prefix of compiler tools
CMPLR_SUFFIX=
CMPLR_PREFIX=$(addsuffix -,$(GNU_TARGET))
# prefix of compiler tools
CMPLR_SUFFIX =
CMPLR_PREFIX = $(addsuffix -,$(GNU_TARGET))
# Provide a link-time path for shared libraries
SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath-link,%)
# Provide a link-time path for products
PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-Wl,-rpath-link,%)
endif

View File

@@ -23,7 +23,10 @@ OP_SYS_CPPFLAGS += -Dlinux
OP_SYS_LDLIBS += -lrt
# Set runtime path for shared libraries
RUNTIME_LDFLAGS = $(SHRLIB_SEARCH_FULLPATHDIRS:%=-Wl,-rpath,%)
SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath,%)
# Set runtime path for products
PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-Wl,-rpath,%)
# Definitions used when COMMANDLINE_LIBRARY is READLINE
LDLIBS_READLINE = -lreadline -lcurses

View File

@@ -28,7 +28,11 @@ OP_SYS_CPPFLAGS += -DSOLARIS=$(SOLARIS_VERSION) $(COMPILER_CPPFLAGS)
OP_SYS_LDFLAGS += $(COMPILER_LDFLAGS)
# Set runtime path for shared libraries
RUNTIME_LDFLAGS = $(SHRLIB_SEARCH_FULLPATHDIRS:%=-R%)
SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-R%)
# Set runtime path for products
PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-R%)
RUNTIME_LDFLAGS += $(RUNTIME_LDFLAGS_$(COMMANDLINE_LIBRARY))
GNU_TARGET=sparc-sun-solaris2

View File

@@ -10,6 +10,6 @@
# Include definitions common to all solaris-sparc target archs
include $(CONFIG)/os/CONFIG.Common.solaris-sparc
ARCH_DEP_CFLAGS += -xtarget=ultra -xarch=v9
ARCH_DEP_CXXFLAGS += -xtarget=ultra -xarch=v9
ARCH_DEP_LDFLAGS += -xtarget=ultra -xarch=v9
ARCH_DEP_CFLAGS += -xarch=generic64
ARCH_DEP_CXXFLAGS += -xarch=generic64
ARCH_DEP_LDFLAGS += -xarch=generic64

View File

@@ -29,7 +29,11 @@ OP_SYS_LDFLAGS += $(COMPILER_LDFLAGS)
ARCH_DEP_CPPFLAGS = -D_X86_
# Set runtime path for shared libraries
RUNTIME_LDFLAGS = $(SHRLIB_SEARCH_FULLPATHDIRS:%=-R%)
SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-R%)
# Set runtime path for products
PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-R%)
RUNTIME_LDFLAGS += $(RUNTIME_LDFLAGS_$(COMMANDLINE_LIBRARY))
GNU_TARGET=x86-sun-solaris2

View File

@@ -0,0 +1,21 @@
# $Id
#
# Definitions for vxWorks-mpc8540 targets: MPC8540 CPU with >32MB RAM.
# Site-specific overrides go in CONFIG_SITE.Common.vxWorks-mpc8540
#
# This file is maintained by the EPICS build community.
#-------------------------------------------------------
# Include definitions common to all vxWorks target archs
include $(CONFIG)/os/CONFIG.Common.vxWorksCommon
# Vx GNU cross compiler suffix
CMPLR_SUFFIX = ppc
ARCH_CLASS = ppc
# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=PPC32
ARCH_DEP_CFLAGS = -mcpu=8540 -msoft-float -mstrict-align -mlongcall
GNU_TARGET = powerpc-wrs-vxworks

View File

@@ -1,10 +1,9 @@
# CONFIG.Common.vxWorks-ppc603
#
# $Id$
# This file is maintained by the build community.
#
# Definitions for vxWorks-ppc603 target archs
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-ppc603
# Definitions for vxWorks-ppc603 targets: PPC603 and PMC8240 CPUs
# Site-specific overrides go in CONFIG_SITE.Common.vxWorks-ppc603
#
# This file is maintained by the EPICS build community.
#-------------------------------------------------------
# Include definitions common to all vxWorks target archs

View File

@@ -1,22 +1,13 @@
# CONFIG.Common.vxWorks-ppc603_long
#
# $Id$
# This file is maintained by the build community.
#
# Definitions for vxWorks-ppc603 target archs with at least 32MB
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-ppc603_long
# Definitions for vxWorks-ppc603 targets with >32MB of RAM
# Site-specific overrides go in CONFIG_SITE.Common.vxWorks-ppc603_long
#
# This file is maintained by the EPICS build community.
#-------------------------------------------------------
# Include definitions common to all vxWorks target archs
include $(CONFIG)/os/CONFIG.Common.vxWorksCommon
# Inherit the settings from vxWorks-ppc603
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc603
# Vx GNU cross compiler suffix
CMPLR_SUFFIX = ppc
ARCH_CLASS = ppc
# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=PPC603
ARCH_DEP_CFLAGS = -mcpu=603 -mstrict-align -mlongcall
GNU_TARGET = powerpc-wrs-vxworks
# Tell compiler to generate long branches
ARCH_DEP_CFLAGS += -mlongcall

View File

@@ -1,10 +1,9 @@
# CONFIG.Common.vxWorks-ppc604
#
# $Id$
# This file is maintained by the build community.
#
# Definitions for vxWorks-ppc604 target archs
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-ppc604
# Definitions for vxWorks-ppc604 targets: PPC604, MPC7xx and MPC74xx CPUs
# Site-specific overrides go in CONFIG_SITE.Common.vxWorks-ppc604
#
# This file is maintained by the EPICS build community.
#-------------------------------------------------------
# Include definitions common to all vxWorks target archs
@@ -12,11 +11,11 @@ include $(CONFIG)/os/CONFIG.Common.vxWorksCommon
# Vx GNU cross compiler suffix
CMPLR_SUFFIX = ppc
ARCH_CLASS = ppc
# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=PPC604
ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align
ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align -mno-implicit-fp
GNU_TARGET = powerpc-wrs-vxworks

View File

@@ -0,0 +1,21 @@
# $Id$
#
# Definitions for vxWorks-ppc604 targets with an Altivec and >32MB of RAM.
# Site-specific overrides go in CONFIG_SITE.Common.vxWorks-ppc604_altivec
#
# This file is maintained by the EPICS build community.
#-------------------------------------------------------
# Inherit the settings from vxWorks-ppc604_long
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
defval = $(if $(strip $(1),),$(1),$(2))
# Tell compiler to include altivec support
ALTIVEC_CFLAG_5 = -fvec
# From 6.1 the altivec compiler option changed
ALTIVEC_CFLAG_6.0 = -fvec
ALTIVEC_CFLAG_6 = $(call defval,$(ALTIVEC_CFLAG_$(VXWORKS_VERSION)),-maltivec)
ARCH_DEP_CFLAGS += $(ALTIVEC_CFLAG_$(VXWORKS_MAJOR_VERSION))

View File

@@ -1,22 +1,13 @@
# CONFIG.Common.vxWorks-ppc604_long
#
# $Id
# This file is maintained by the build community.
#
# Definitions for vxWorks-ppc604 target archs with at least 32MB
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-ppc604_long
# Definitions for vxWorks-ppc604 targets with >32MB of RAM
# Site-specific overrides go in CONFIG_SITE.Common.vxWorks-ppc604_long
#
# This file is maintained by the EPICS build community.
#-------------------------------------------------------
# Include definitions common to all vxWorks target archs
include $(CONFIG)/os/CONFIG.Common.vxWorksCommon
# Inherit the settings from vxWorks-ppc604
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604
# Vx GNU cross compiler suffix
CMPLR_SUFFIX = ppc
ARCH_CLASS = ppc
# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=PPC604
ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align -mlongcall
GNU_TARGET = powerpc-wrs-vxworks
# Tell compiler to generate long branches
ARCH_DEP_CFLAGS += -mlongcall

View File

@@ -88,10 +88,19 @@ VX_GNU_VERSION_6.2 = 3.3.2
VX_GNU_VERSION_6.3 = 3.4.4
VX_GNU_VERSION = $(VX_GNU_VERSION_$(VXWORKS_VERSION))
#--------------------------------------------------
# Fix WIND_BASE for vxWorks 6.x on linux
# NB: We know the value of WIND_HOST_TYPE here, but not VXWORKS_VERSION
ifeq ($(WIND_HOST_TYPE),x86-linux)
WIND_HOST_TYPE_5 = x86-linux
WIND_HOST_TYPE_6 = x86-linux2
WIND_HOST_TYPE = $(WIND_HOST_TYPE_$(VXWORKS_MAJOR_VERSION))
endif
#--------------------------------------------------
# vxWorks directory definitions
VX_DIR_5 = $(WIND_BASE)
VX_DIR_6 = $(WIND_BASE)/vxWorks-$(VXWORKS_VERSION)
VX_DIR_6 = $(WIND_BASE)/vxworks-$(VXWORKS_VERSION)
VX_DIR = $(VX_DIR_$(VXWORKS_MAJOR_VERSION))
VX_INCLUDE_DIRS_5 = $(VX_DIR)/target/h
@@ -105,6 +114,9 @@ GNU_DIR_5 = $(WIND_BASE)/host/$(WIND_HOST_TYPE)
GNU_DIR_6 = $(WIND_BASE)/gnu/$(VX_GNU_VERSION)-vxworks-$(VXWORKS_VERSION)/$(WIND_HOST_TYPE)
GNU_DIR = $(GNU_DIR_$(VXWORKS_MAJOR_VERSION))
# GCC_EXEC_PREFIX considered harmful since vxWorks 6 moved it
unexport GCC_EXEC_PREFIX
#--------------------------------------------------
# C++ host processing
NM = $(GNU_BIN)/$(CMPLR_PREFIX)nm$(CMPLR_SUFFIX)$(HOSTEXE)
@@ -124,13 +136,17 @@ export TOOL_FAMILY = GNU
# Operating system flags
OP_SYS_CPPFLAGS += -DvxWorks
OP_SYS_CFLAGS += -fno-builtin
#OP_SYS_CFLAGS += -fno-builtin -fdollars-in-identifiers
OP_SYS_LDFLAGS +=
# Fix for vxWorks headers using macros defined in
# vxWorks.h but not including vxWorks.h
OP_SYS_INCLUDE_CPPFLAGS_5.5 += -include $(VX_DIR)/target/h/vxWorks.h
OP_SYS_INCLUDE_CPPFLAGS = $(OP_SYS_INCLUDE_CPPFLAGS_$(VXWORKS_VERSION))
# Fix for vxWorks headers that use macros defined in vxWorks.h but
# which don't actually include vxWorks.h themselves, for example the
# target/h/sys/stat.h file which uses ULONG
OP_SYS_INCLUDE_CPPFLAGS_5 += -include $(VX_DIR)/target/h/vxWorks.h
OP_SYS_INCLUDE_CPPFLAGS = $(OP_SYS_INCLUDE_CPPFLAGS_$(VXWORKS_MAJOR_VERSION))
#--------------------------------------------------
# Optimization: Officially vxWorks only supports -O2 or less.
OPT_CFLAGS_YES = -O2
OPT_CXXFLAGS_YES = -O2
#--------------------------------------------------
# code flags
@@ -144,14 +160,10 @@ CODE_CXXFLAGS_6.2 = -fno-implicit-templates
CODE_CXXFLAGS_6 = $(CODE_CXXFLAGS_$(VXWORKS_VERSION))
CODE_CXXFLAGS = $(CODE_CXXFLAGS_$(VXWORKS_MAJOR_VERSION))
#--------------------------------------------------
# posix c preprocessor flags
POSIX_CPPFLAGS = -D_POSIX_SOURCE
#--------------------------------------------------
# no shared libs for vxWorks
SHRLIB_CFLAGS =
SHRLIB_LDFLAGS =
SHRLIB_CFLAGS =
SHRLIB_LDFLAGS =
#--------------------------------------------------
# osithead use default stack, YES or NO override

View File

@@ -18,7 +18,10 @@ EXE=.exe
COMPILER_CPPFLAGS = -D_REENTRANT
# Set runtime path for shared libraries
RUNTIME_LDFLAGS = $(SHRLIB_SEARCH_FULLPATHDIRS:%=-Wl,-rpath,%)
SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath,%)
# Set runtime path for products
PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-Wl,-rpath,%)
# Definitions used when COMMANDLINE_LIBRARY is READLINE
INCLUDES_READLINE = -I$(GNU_DIR)/include
@@ -42,6 +45,8 @@ OP_SYS_CXXFLAGS += -D__cplusplus
# Overrides -DUNIX from CONFIG.Common.UnixCommon
OP_SYS_CPPFLAGS = -mno-cygwin
LIBRARY_LD_RESS=
OP_SYS_LDFLAGS += -mno-cygwin
OP_SYS_LDLIBS = -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm

View File

@@ -18,8 +18,13 @@ EXE=.exe
# Library used when COMMANDLINE_LIBRARY is READLINE
LDLIBS_READLINE = -lreadline
STATIC_BUILD=YES
STATIC_LDLIBS_YES=-lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm
# Set runtime path for shared libraries
SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath,%)
# Set runtime path for products
PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-Wl,-rpath,%)
# Compiler defines _X86_ 1
@@ -37,3 +42,10 @@ STATIC_LDLIBS_YES=-lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm
# Override for -DUNIX from CONFIG.Common.UnixCommon
OP_SYS_CPPFLAGS =
OP_SYS_CXXFLAGS += -D__cplusplus
LIBRARY_LD_RESS=
OP_SYS_LDLIBS = -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm
#STATIC_LDLIBS_YES=-lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm

View File

@@ -74,7 +74,7 @@ CCC = $(GNU_BIN)/c++
#
SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)
SHRLIB_LDFLAGS = -dynamiclib -flat_namespace -undefined suppress \
-install_name $(firstword $(SHRLIB_SEARCH_FULLPATHDIRS))/$@ \
-install_name $(shell perl $(TOOLS)/fullPathName.pl $(INSTALL_LIB))/$@ \
-compatibility_version $(EPICS_VERSION).$(EPICS_REVISION) \
-current_version $(SHRLIB_VERSION)
SHRLIB_SUFFIX = .$(SHRLIB_VERSION).dylib

View File

@@ -0,0 +1,10 @@
# $Id$
#
# This file is maintained by the build community.
#
# Definitions for freebsd host builds
# Sites may override these definitions in CONFIG_SITE.freebsd-x86.Common
#-------------------------------------------------------
#Include definitions common to unix hosts
include $(CONFIG)/os/CONFIG.UnixCommon.Common

View File

@@ -0,0 +1,19 @@
# $Id$
#
# Definitions for freebsd-x86_64 host - freebsd-x86_64 target builds
# Sites may override these definitions in CONFIG_SITE.freebsd-x86_64.freebsd-x86_64
#-------------------------------------------------------
# Include common gnu compiler definitions
include $(CONFIG)/CONFIG.gnuCommon
GNU_DIR = /usr
STATIC_LDFLAGS_YES= -Wl,-Bstatic
STATIC_LDFLAGS_NO=
STATIC_LDLIBS_YES= -Wl,-Bdynamic
STATIC_LDLIBS_NO=
SHRLIB_LDFLAGS += -shared -fPIC
LOADABLE_SHRLIB_LDFLAGS = -shared -fPIC

View File

@@ -3,7 +3,7 @@
# This file is maintained by the build community.
#
# Definitions for freebsd host builds
# Sites may override these definitions in CONFIG_SITE.freebsd.Common
# Sites may override these definitions in CONFIG_SITE.freebsd-x86_64.Common
#-------------------------------------------------------
# Include definitions common to unix hosts

View File

@@ -8,7 +8,6 @@
include $(CONFIG)/CONFIG.gnuCommon
GNU_DIR = /usr
GNU_LDLIBS_YES =
STATIC_LDFLAGS_YES= -Wl,-Bstatic
STATIC_LDFLAGS_NO=

View File

@@ -9,9 +9,6 @@ include $(CONFIG)/CONFIG.gnuCommon
GNU_DIR = /usr
# Override the -nostdinc flag, needed here...
CROSS_CPPFLAGS =
# Copied from x86.x86
STATIC_LDFLAGS_YES= -Wl,-Bstatic
STATIC_LDFLAGS_NO=

View File

@@ -52,7 +52,7 @@ STATIC_LDFLAGS_NO=
STATIC_LDLIBS_YES= -Bdynamic
STATIC_LDLIBS_NO=
SHRLIB_CFLAGS = -KPIC
SHRLIB_CFLAGS = -xcode=pic32
SHRLIB_LDFLAGS = -z defs -G -h $@ -z text
LOADABLE_SHRLIB_LDFLAGS = -G -h $@ -z text

View File

@@ -299,9 +299,9 @@ LINK.cpp = $(WINLINK) -nologo $(STATIC_LDFLAGS) $(LDFLAGS) $(PROD_LDFLAGS) -out:
# useManifestTool.pl returns 0(don't use) or 1(use).
#
ifeq ($(shell $(PERL) $(TOOLS)/useManifestTool.pl),1)
MT_DLL_COMMAND = mt.exe /manifest $@.manifest /outputresource:$@;\#2
MT_DLL_COMMAND = mt.exe /manifest $@.manifest "/outputresource:$@;\#2"
MT_EXE_COMMAND_YES =
MT_EXE_COMMAND_NO = mt.exe /manifest $@.manifest /outputresource:$@;\#1
MT_EXE_COMMAND_NO = mt.exe /manifest $@.manifest "/outputresource:$@;\#1"
MT_EXE_COMMAND = $(MT_EXE_COMMAND_$(STATIC_BUILD))
endif

View File

@@ -10,9 +10,10 @@
# to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) (or wherever you install
# the EPICS shared libraries on your system) when invoking base
# executables, or
# b) Add the path to SHRLIB_SEARCH_FULLPATHDIRS below, which will burn
# b) Add the path to SHRLIB_DEPLIB_DIRS and PROD_DEPLIB_DIRS below, which will burn
# the runtime search path into the executables.
#SHARED_LIBRARIES=YES
# This is the absolute path to the generic INSTALL_LOCATION, for SHARED_LIBRARY searches.
SHRLIB_SEARCH_FULLPATHDIRS += /opt/epics/R$(EPICS_SHORT_VERSION)/base/$(EPICS_VERSION)-$(EPICS_REVISION)-$(EPICS_MODIFICATION)-$(EPICS_PATCH_LEVEL)$(EPICS_CVS_SNAPSHOT)$(EPICS_SITE_VSTRING)/lib/$(EPICS_HOST_ARCH)
SHRLIB_DEPLIB_DIRS += /opt/epics/R$(EPICS_SHORT_VERSION)/base/$(EPICS_VERSION)-$(EPICS_REVISION)-$(EPICS_MODIFICATION)-$(EPICS_PATCH_LEVEL)$(EPICS_CVS_SNAPSHOT)$(EPICS_SITE_VSTRING)/lib/$(EPICS_HOST_ARCH)
PROD_DEPLIB_DIRS += /opt/epics/R$(EPICS_SHORT_VERSION)/base/$(EPICS_VERSION)-$(EPICS_REVISION)-$(EPICS_MODIFICATION)-$(EPICS_PATCH_LEVEL)$(EPICS_CVS_SNAPSHOT)$(EPICS_SITE_VSTRING)/lib/$(EPICS_HOST_ARCH)

View File

@@ -12,8 +12,8 @@
# a) LD_LIBRARY_PATH must include the full absolute pathname to
# $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) when invoking base
# executables.
# b) Add the runtime path to SHRLIB_SEARCH_FULLPATHDIRS, which will add
# the named directory to the list contained in the executables.
# b) Add the runtime path to SHRLIB_DEPLIB_DIRS and PROD_DEPLIB_DIRS, which
# will add the named directory to the list contained in the executables.
# c) Add the runtime path to /etc/ld.so.conf and run ldconfig
# to inform the system of the shared library location.

View File

@@ -12,8 +12,8 @@
# a) LD_LIBRARY_PATH must include the full absolute pathname to
# $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) when invoking base
# executables.
# b) Add the runtime path to SHRLIB_SEARCH_DIRS, which will add
# the named directory to the list contained in the executables.
# b) Add the runtime path to SHRLIB_DEPLIB_DIRS and PROD_DEPLIB_DIRS, which
# will add the named directory to the list contained in the executables.
# c) Add the runtime path to /etc/ld.so.conf and run ldconfig
# to inform the system of the shared library location.

View File

@@ -0,0 +1,6 @@
# $Id$
#
# Site Specific definitions for the vxWorks-mpc8540 target
#
# Only the local epics system manager should modify this file
#-------------------------------------------------------

View File

@@ -0,0 +1,7 @@
# $Id$
#
# Site Specific definitions for the vxWorks-ppc603 target
#
# Only the local epics system manager should modify this file
#-------------------------------------------------------

View File

@@ -0,0 +1,10 @@
# $Id$
#
# Site Specific definitions for the vxWorks-ppc603_long target
#
# Only the local epics system manager should modify this file
#-------------------------------------------------------
# Inherit the settings from vxWorks-ppc603
-include $(CONFIG)/os/CONFIG_SITE.Common.vxWorks-ppc603

View File

@@ -1,8 +1,7 @@
# CONFIG_SITE.Common.vxWorks-ppc604
#
# $Id$
#
# Site Specific definitions for vxWorks-ppc604 target
# Site Specific definitions for the vxWorks-ppc604 target
#
# Only the local epics system manager should modify this file
#-------------------------------------------------------

View File

@@ -0,0 +1,10 @@
# $Id$
#
# Site Specific definitions for the vxWorks-ppc604_altivec target
#
# Only the local epics system manager should modify this file
#-------------------------------------------------------
# Inherit the settings from vxWorks-ppc604_long
-include $(CONFIG)/os/CONFIG_SITE.Common.vxWorks-ppc604_long

View File

@@ -1,8 +1,10 @@
# CONFIG_SITE.Common.vxWorks-ppc604
#
# $Id$
#
# Site Specific definitions for vxWorks-ppc604 target
# Site Specific definitions for the vxWorks-ppc604_long target
#
# Only the local epics system manager should modify this file
#-------------------------------------------------------
# Inherit the settings from vxWorks-ppc604
-include $(CONFIG)/os/CONFIG_SITE.Common.vxWorks-ppc604

View File

@@ -5,4 +5,8 @@
# Site specific definitions for linux-x86 host - linux-arm target builds
#-------------------------------------------------------
# Diamond:
#GNU_DIR = /home/targetOS/linux-arm/host/x86-linux/gcc_3.3.3
# anj@aps:
#GNU_DIR = /local/anj/cross-arm/gcc-3.4.5-glibc-2.3.6/arm-linux

View File

@@ -1,16 +1,7 @@
# CONFIG_SITE.linux-x86.vxWorks-ppc603
#
# $Id$
# This file is maintained by the build community.
#
# Site override definitions for linux-x86 host - vxWorks-ppc603 target builds
# Site-specific definitions for linux-x86 builds of vxWorks-ppc603
#
# Only the local epics system manager should modify this file
#-------------------------------------------------------
# ORNL SNS overrides for cross compilers
#VX_DIR_YES = /opt/tornado20/
#VX_CONFIG_DIR_YES = $(VX_DIR)/target/config
#VX_INCLUDE_YES = /usr/local/crossgcc/ppc/powerpc-wrs-vxworks/sys-include
#VX_GNU_YES = /usr/local/crossgcc/ppc/
#VX_GNU_BIN_YES = $(VX_GNU)/bin
#VX_GNU_LIB_YES = /usr/local/crossgcc/ppc/lib/gcc-lib/powerpc-wrs-vxworks/2.95.2

View File

@@ -1,15 +1,9 @@
# CONFIG_SITE.linux-x86.vxWorks-ppc603_long
#
# $Id$
# This file is maintained by the build community.
#
# Site override definitions for linux-x86 host - vxWorks-ppc603_long target builds
# Site-specific definitions for linux-x86 builds of vxWorks-ppc603_long
#
# Only the local epics system manager should modify this file
#-------------------------------------------------------
# ORNL SNS overrides for cross compilers
#GNU_DIR=/ade/vxWorks/crossgcc-2.7.2-WRS/ppc
#GNU_TARGET_INCLUDE_DIR=/ade/vxWorks/crossgcc-2.7.2-WRS/ppc/powerpc-wrs-vxworks/sys-include
#CC = /ade/vxWorks/crossgcc-2.7.2-WRS/ppc/bin/cc$(CMPLR_SUFFIX)
#CCC = /ade/vxWorks/crossgcc-2.7.2-WRS/ppc/bin/g++$(CMPLR_SUFFIX)
# Inherit settings from vxWorks-ppc603
-include $(CONFIG)/os/CONFIG_SITE.linux-x86.vxWorks-ppc603

View File

@@ -1,17 +1,6 @@
# CONFIG_SITE.linux-x86_64.vxWorks-ppc603
#
# $Id$
# This file is maintained by the build community.
#
# Site override definitions for linux-x86_64 host - vxWorks-ppc603 target builds
# Site-specific definitions for linux-x86_64 builds of vxWorks-ppc603
#
# Only the local epics system manager should modify this file
#-------------------------------------------------------
# This file contains overrides for Vx builds
# ORNL SNS overrides for cross compilers
# The custom cross compiler for VxWorks on Linux
# has place in a directory structure like that of
# the Solaris distribution. So now the cross should
# only need the following line.
# cross-compiler from "Linux x86pc" host to a "ppc603" target
VX_DIR_YES = /ade/vxWorks/t202/ppc

View File

@@ -1,17 +1,9 @@
# CONFIG_SITE.linux-x86_64.vxWorks-ppc603_long
#
# $Id$
# This file is maintained by the build community.
#
# Site override definitions for linux-x86_64 host - vxWorks-ppc603 target builds
# Site-specific definitions for linux-x86 builds of vxWorks-ppc603_long
#
# Only the local epics system manager should modify this file
#-------------------------------------------------------
# This file contains overrides for Vx builds
# ORNL SNS overrides for cross compilers
# The custom cross compiler for VxWorks on Linux
# has place in a directory structure like that of
# the Solaris distribution. So now the cross should
# only need the following line.
# cross-compiler from "Linux x86pc" host to a "ppc603" target
VX_DIR_YES = /ade/vxWorks/t202/ppc
# Inherit settings from vxWorks-ppc603
-include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.vxWorks-ppc603

View File

@@ -0,0 +1,4 @@
# Shared libraries are not yet supported in cygwin builds.
SHARED_LIBRARIES=NO

View File

@@ -337,7 +337,9 @@ sub UnixPath {
sub LocalPath {
my ($newpath) = @_;
if ($^O eq "darwin") {
if ($^O eq "cygwin") {
$newpath =~ s{^/cygdrive/([a-zA-Z])/}{$1:/};
} elsif ($^O eq "darwin") {
# These rules are likely to be site-specific
$newpath =~ s{^/private/var/auto\.home/}{/home/}; # APS
}

View File

@@ -9,10 +9,38 @@
<body lang="en">
<h1 align="center">EPICS Base Release 3.14.x</h1>
<h2 align="center">Changes since 3.14.8.2</h2>
<h2 align="center">Changes between 3.14.8.2 and 3.14.9</h2>
<!-- Insert new items below here ... -->
<h4>New Architectures</h4>
<p>The following target architectures have been added to this release:</p>
<ul>
<li>darwin-ppcx86</li>
<li>darwin-x86</li>
<li>freebsd-x86</li>
<li>freebsd-x86_64</li>
<li>interix-x86</li>
<li>linux-arm</li>
<li>vxWorks-mpc8540</li>
<li>vxWorks-ppc604_altivec</li>
</ul>
<h4>vxWorks compiler optimization level</h4>
<p>Wind River Systems do not support optimization levels beyond <tt>-O2</tt> for
vxWorks applications compiled using gcc, so optimized vxWorks builds are now set
to <tt>-O2</tt> only (we currently use <tt>-O3</tt> everywhere else).</p>
<h4>cas</h4>
<p>There was a bug in the portable channel access server library that prevented
the PV Gateway from being able to handle and pass on alarm acknowledgements from
the EPICS Alarm Handler ALH. This has been fixed in this release and should only
require that the gatewey be recomplied against this version of Base.</p>
<h4>dbLoadTemplate</h4>
<p>The parser for the substitutions file accepted by dbLoadTemplate() has been
@@ -32,7 +60,8 @@ _ - + : . / \ [ ] &lt; &gt; ;</tt></p>
use C89-compatible escaped character codes such as \", \', \t, \n, \064 and
\x7e. The parser also now checks for and reports strings that have a newline
character in them as an error - if you want a newline in a field, use the \n
escaped version.</p>
escaped version. These escapes only apply to the value part of a field() entry
in .db file though; no other strings have escape codes translated.</p>
<h4>libCom/test and db/test</h4>
@@ -49,12 +78,12 @@ humans.</p>
the test programs in a suitable order. At a vxWorks target shell, type:</p>
<blockquote>
<pre>ld </path/to/base/bin/vxWorks-<i>arch</i>/vxTestHarness.munch
<pre>ld &lt;/path/to/base/bin/vxWorks-<i>arch</i>/vxTestHarness.munch
cd "/path/to/writable/directory"
epicsRunLibComTests</pre>
</blockquote>
<p>On RTEMS, boot the bin/<i>arch</i>/rtemsTestHarness binary.</p>
<p>On RTEMS, boot the <tt>bin/<i>arch</i>/rtemsTestHarness</tt> binary.</p>
<p>You may wish to capture the output from running these to a file to more
easily check the results, since there is no wrapper program to collect and
@@ -98,7 +127,7 @@ separated by a semicolon <tt>;</tt>, all but one of which must be assignments.
The value of the whole string is determined by the single non-assignment
expression, which may appear anywhere in the string. For example, the following
string causes a single CALC record to output the successive values of a sine
curve: <tt>sin(a);&nbsp;a:=a+d2r</tt></p>
curve in 1 degree intervals: <tt>sin(a);&nbsp;a:=a+d2r</tt></p>
<p>Previously any expression that performed an invalid operation which would
generate a NaN or Inf result would be stopped immediately and return an error to
@@ -110,7 +139,7 @@ infinity. To permit this to be checked within the expression, the new operators
expression language. The literal values <tt>Inf</tt> and <tt>NaN</tt> are also
now supported in expressions.</p>
<p>The incompatible change to the expression language was to change the
<p>The only incompatible change to the expression language was to change the
<tt>NOT</tt> operator from performing a unary minus operation to an integer
bitwise not; the former meaning is illogical and as a result was probably not
used much, if at all &mdash; nobody complained when I discussed this on
@@ -234,7 +263,7 @@ which will run on both PowerPC and Intel x86 targets.</p>
<p>Added support for EPICS_HOST_ARCH=darwin-x86.</p>
<h2 align="center">Changes since 3.14.8.1</h2>
<h2 align="center">Changes between 3.14.8.1 and 3.14.8.2</h2>
<h4>epicsStrtod</h4>
@@ -244,7 +273,7 @@ managed to break the use of this in the R3.14.8.1 release. This is now
fixed.</p>
<h2 align="center">Changes since 3.14.8</h2>
<h2 align="center">Changes between 3.14.8 and 3.14.8.1</h2>
<h4>Version Numbering</h4>
@@ -291,7 +320,7 @@ win32 architectures.</p>
</ul>
<h2 align="center">Changes since 3.14.7</h2>
<h2 align="center">Changes between 3.14.7 and 3.14.8</h2>
<h4>New host targets</h4>
@@ -509,7 +538,7 @@ could not be created. This is fixed.</p>
<p>222 - osiSpawnDetachedProcess doesnt close open files in dupicate process
on POSIX</p>
<h2 align="center">Changes since 3.14.6</h2>
<h2 align="center">Changes between 3.14.6 and 3.14.7</h2>
<h4>selRecord</h4>
@@ -643,7 +672,7 @@ can cause an IOC to crash.</p>
when the ARCH defined in the ioc*/Makefile is present in BUILD_ARCHS for the
build.</p>
<h2 align="center">Changes since 3.14.5</h2>
<h2 align="center">Changes between 3.14.5 and 3.14.6</h2>
<h4>CA command line tools complete</h4>
@@ -895,7 +924,7 @@ channels)</p>
</li>
</ul>
<h2 align="center">Changes since 3.14.4</h2>
<h2 align="center">Changes between 3.14.4 and 3.14.5</h2>
<h4>dbtr</h4>
@@ -1075,7 +1104,7 @@ command, add <code>registrar(iocshSystemCommand)</code> to an application
database description file.</p>
<center>
<h2>Changes since 3.14.3</h2>
<h2>Changes between 3.14.3 and 3.14.4</h2>
</center>
<h4>sCalcPostfix</h4>
@@ -1127,7 +1156,7 @@ successfully connects.</p>
assisting with identifying the cause.</p>
<center>
<h2>Changes since 3.14.2</h2>
<h2>Changes between 3.14.2 and 3.14.3</h2>
</center>
<h4>TPRO output</h4>
@@ -1330,7 +1359,7 @@ symptom was a hang during process exit. A workaround was installed.</p>
branch off of BSD and therefore requires socket option SO_REUSEPORT.</p>
<center>
<h2>Changes since 3.14.1</h2>
<h2>Changes between 3.14.1 and 3.14.2</h2>
</center>
<p><strong>Build System</strong></p>
@@ -1417,7 +1446,7 @@ that it ignores case.</p>
macParseDefns was not correct.</p>
<center>
<h2>Changes since beta2</h2>
<h2>Changes between 3.14.0beta2 and 3.14.1</h2>
</center>
<p><strong>function - New Database Definition Keyword</strong></p>

View File

@@ -18,8 +18,23 @@
new release of EPICS Base. Additions and ammendments to this list are
welcome.</p>
<h3>The Release Process</h3>
<p>The version released on the Feature Freeze date is designated the first
pre-release, <tt>-pre1</tt>. The first Release Candidate <tt>-RC1</tt> is the
first version that has undergone widespread testing and which has no known
problems in it that are slated to be fixed in this release. New versions should
be made at about weekly intervals during the testing and debugging process, and
will be designated as either pre-release versions or Release Candidates by the
Release Manager. A Release Candidate that has received widespread testing for a
week without any additional problems being discovered or CVS commits being made
can be designated as the final release.</p>
<h3>Roles</h3>
<p>The following roles are used, in addition to the names of individuals who
have been responsible for specific tasks in the past:</p>
<dl>
<dt><strong>Release Manager</strong></dt>
<dd>Responsible for the release</dd>
@@ -27,8 +42,6 @@ have been responsible for specific tasks in the past:</p>
<dd>Responsible for individual operating system platforms</dd>
</dl>
<p></p>
<table border="1" width="100%">
<tbody>
<tr>
@@ -55,13 +68,15 @@ have been responsible for specific tasks in the past:</p>
<tr>
<td> </td>
<td>Release Manager</td>
<td>Set a date by which all CVS commits must be done, after which
commits should only be to fix problems that show up during Final
Testing.</td>
<td>Set the Feature Freeze date, by which time all CVS commits for
enhancements and new functionality should have been completed. After
this date, commits should only be made to fix problems that show up
during testing.</td>
</tr>
<tr>
<td> </td>
<td>Release Manager</td>
<td>Release Manager &amp;<br />
all developers</td>
<td>Ensure that documentation will be updated before the release date:
<ul>
<li>Application Developers Guide</li>
@@ -72,25 +87,84 @@ have been responsible for specific tasks in the past:</p>
</td>
</tr>
<tr>
<td> </td>
<td>?</td>
<td>...</td>
<th colspan="3">Creating pre-release and Release Candidate versions</th>
</tr>
<tr>
<th colspan="3">Final testing</th>
<td> </td>
<td>Janet Anderson</td>
<td>Edit and commit changes to the EPICS version number file
configure/CONFIG_BASE_VERSION.</td>
</tr>
<tr>
<td> </td>
<td>Janet Anderson</td>
<td>Tag the module in CVS. Pre-release version tags take the form
<tt>R<i>x</i>-<i>y</i>-<i>z</i>-pre<i>n</i></tt> while Release
Candidate tags take the form
<tt>R<i>x</i>-<i>y</i>-<i>z</i>-RC<i>m</i></tt>.
</td>
</tr>
<tr>
<td> </td>
<td>Janet Anderson</td>
<td>Export the tagged version and create a tarfile of the result:
<blockquote><tt>
cvs export -kv -d base-x.y.z-pre1 -r Rx-y-z-pre1 epics/base<br />
tar cfz baseRx.y.z-pre1.tar.gz base-x.y.z-pre1
</tt></blockquote></td>
</tr>
<tr>
<td> </td>
<td>Janet Anderson</td>
<td>Test the tar file by extracting its contents and building it on at
least one supported platform</td>
</tr>
<tr>
<td> </td>
<td>Janet Anderson</td>
<td>Copy the tar file to the Base download area of the website</td>
</tr>
<tr>
<td> </td>
<td>Andrew Johnson</td>
<td>Create or update a website subdirectory to hold the release
documentation, and copy in the files from the base/documentation
directory of the tarfile.</td>
</tr>
<tr>
<td> </td>
<td>Andrew Johnson</td>
<td>Create or modify the webpage for the new release with links to the
release documents and tar file. Pre-release versions should use the
page and URL for the final release version number.</td>
</tr>
<tr>
<td> </td>
<td>Andrew Johnson</td>
<td>Add the new pre-release tar file to the website Base download index
page.</td>
</tr>
<tr>
<th colspan="3">Testing</th>
</tr>
<tr>
<td> </td>
<td>Platform Developers</td>
<td>Run the Soft IOC tests in mrkSoftTest on all available
<td>Run the Soft IOC tests from mrkSoftTest on all available
platforms.</td>
</tr>
<tr>
<td> </td>
<td>Platform Developers</td>
<td>Check that all makeBaseApp templates build and run properly, all
xxxApp and xxxBoot types and any internal options, e.g. standalone
sncExample appliction, STATIC_BUILD=YES.</td>
xxxApp and xxxBoot types and any internal options, e.g. setting
STATIC_BUILD=YES in the configure/CONFIG_SITE.</td>
</tr>
<tr>
<td> </td>
<td>Platform Developers</td>
<td>Build the SNL Sequencer against this version of Base, and check that
the makeBaseApp example builds and runs correctly with it.</td>
</tr>
<tr>
<td> </td>
@@ -107,7 +181,7 @@ have been responsible for specific tasks in the past:</p>
<tr>
<td> </td>
<td>Release Manager</td>
<td>Check that the documentation has been updated:
<td>Check that documentation has been updated:
<ul>
<li>Application Developers Guide</li>
<li>Release Notes</li>
@@ -116,21 +190,18 @@ have been responsible for specific tasks in the past:</p>
</ul>
</td>
</tr>
<tr>
<td> </td>
<td>?</td>
<td>...</td>
</tr>
<tr>
<th colspan="3">Release Approval</th>
</tr>
<tr>
<td> </td>
<td>Release Manager</td>
<td>Obtain a positive 'Ok to release' from all platform developers.</td>
<td>Obtain a positive 'Ok to release' from all platform developers when a
Release Candidate version has gone a whole week without any issues being
reported.</td>
</tr>
<tr>
<th colspan="3">Make the release</th>
<th colspan="3">Creating the final release version</th>
</tr>
<tr>
<td> </td>
@@ -141,15 +212,17 @@ have been responsible for specific tasks in the past:</p>
<tr>
<td> </td>
<td>Janet Anderson</td>
<td>Tag the module in CVS. Official base release version tags take the form
<code>R</code><i><code>x</code></i><code>-</code><i><code>y</code></i><code>-</code><i><code>z</code></i><code>[-</code><i><code>n</code></i><code>]</code></td>
<td>Tag the module in CVS. Official base release version tags take the
form <tt>R<i>x</i>-<i>y</i>-<i>z</i>[-<i>n</i>]</tt></td>
</tr>
<tr>
<td> </td>
<td>Janet Anderson</td>
<td>Export the tagged version, "cvs export -kv -d base-x.y.z[.n]
-r Rx-y-z[-n] epics/base", and create the
baseRx.y.z[.n]tar.gz file of the result</td>
<td>Export the tagged version and create a tarfile of the result:
<blockquote><tt>
cvs export -kv -d base-x.y.z -r Rx-y-z epics/base<br />
tar cfz baseRx.y.z.tar.gz base-x.y.z
</tt></blockquote></td>
</tr>
<tr>
<td> </td>
@@ -165,20 +238,15 @@ have been responsible for specific tasks in the past:</p>
<tr>
<td> </td>
<td>Andrew Johnson</td>
<td>Create a new website subdirectory to hold the release
<td>Update the website subdirectory that holds the release
documentation, and copy in the files from the base/documentation
directory of the tarfile</td>
directory of the tarfile.</td>
</tr>
<tr>
<td> </td>
<td>Andrew Johnson</td>
<td>Create a webpage for the new release with links to the release
documents and tar file</td>
</tr>
<tr>
<td> </td>
<td>?</td>
<td>...</td>
<td>Update the webpage for the new release with links to the release
documents and tar file.</td>
</tr>
<tr>
<th colspan="3">Announce it</th>
@@ -214,14 +282,9 @@ have been responsible for specific tasks in the past:</p>
<tr>
<td> </td>
<td>Andrew Johnson</td>
<td>Add an entry to the website News page, linking to the new
<td>Add an entry to the website News page, linking to the new version
webpage</td>
</tr>
<tr>
<td> </td>
<td>?</td>
<td>...</td>
</tr>
</tbody>
</table>
</body>

View File

@@ -1,11 +1,10 @@
#*************************************************************************
# Copyright (c) 2002 The University of Chicago, as Operator of Argonne
# Copyright (c) 2006 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
# in file LICENSE that is included with this distribution.
# EPICS BASE is distributed subject to a Software License Agreement found
# in the file LICENSE that is included with this distribution.
#*************************************************************************
#
# $Id$
@@ -14,13 +13,9 @@
TOP = ..
include $(TOP)/configure/CONFIG
#
# for c++ build add the dirs gdd and cas after ca
# (and uncomment the c++ files in src/lbCom/Makefile.Unix)
#
DIRS += makeBaseApp
DIRS += makeBaseExt
DIRS += libCom
DIRS += RTEMS
DIRS += libCom/test
DIRS += toolsComm
DIRS += ca
DIRS += dbStatic
@@ -38,12 +33,12 @@ DIRS += dev
DIRS += misc
DIRS += iocsh
DIRS += vxWorks
DIRS += RTEMS
DIRS += softIoc
DIRS += libCom/test
DIRS += gdd
DIRS += cas
DIRS += makeBaseApp
DIRS += excas
DIRS += makeBaseExt
include $(TOP)/configure/RULES_DIRS

View File

@@ -1,10 +1,9 @@
#*************************************************************************
# Copyright (c) 2002 The University of Chicago, as Operator of Argonne
# Copyright (c) 2006 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.
#*************************************************************************
TOP=../..
@@ -32,7 +31,7 @@ asIoc_RCS_WIN32 = asIoc.rc
PROD_HOST = ascheck
ascheck_SRCS = ascheck.c
PROD_LIBS = asHost dbStaticHost Com
PROD_LIBS = asHost dbStaticHost ca Com
# For R3.13 compatibility only
ifeq ($(strip $(COMPAT_313)),YES)
@@ -42,13 +41,9 @@ endif
include $(TOP)/configure/RULES
# Extra rule since asLib_lex.c is included in asLib.c
# In my opinion, these objects should really be built
# independently.
asLib.c: asLib_lex.c ../asLibRoutines.c
$(INSTALL_INC)/asLib.h:../asLib.h
# Extra rule since asLib_lex.c is included by asLib.c
asLib$(OBJ): asLib_lex.c
clean::
@$(RM) asLib.c asLib_lex.c
@$(RM) asLib.c asLib_lex.c

View File

@@ -14,6 +14,8 @@
#define INCasLibh
#include "shareLib.h"
#include "ellLib.h"
#include "errlog.h"
#ifdef __cplusplus
extern "C" {

View File

@@ -8,9 +8,8 @@
* in file LICENSE that is included with this distribution.
\*************************************************************************/
%{
static int yyerror();
static int yyerror(char *);
static int yy_start;
static int myParse();
#include "asLibRoutines.c"
static int yyFailed = FALSE;
static int line_num=1;
@@ -207,8 +206,7 @@ rule_hag_list_name: tokenSTRING
#include "asLib_lex.c"
static int yyerror(str)
char *str;
static int yyerror(char *str)
{
if (strlen(str)) epicsPrintf("%s\n", str);
epicsPrintf("Access Security file error at line %d\n",

View File

@@ -19,7 +19,6 @@
#include "epicsStdioRedirect.h"
#include "dbDefs.h"
#include "epicsThread.h"
#include "ellLib.h"
#include "cantProceed.h"
#include "epicsMutex.h"
#include "epicsPrint.h"
@@ -27,8 +26,6 @@
#include "freeList.h"
#include "macLib.h"
#include "postfix.h"
#include "errlog.h"
#include "ellLib.h"
static epicsMutexId asLock;
#define LOCK epicsMutexMustLock(asLock)
@@ -45,9 +42,10 @@ epicsShareDef int asActive = FALSE;
static void *freeListPvt = NULL;
#define RPCL_LEN 184
#define DEFAULT "DEFAULT"
/* Defined in asLib.y */
static int myParse(ASINPUTFUNCPTR inputfunction);
/*private routines */
static long asAddMemberPvt(ASMEMBERPVT *pasMemberPvt,const char *asgName);
@@ -123,8 +121,8 @@ long epicsShareAPI asInitialize(ASINPUTFUNCPTR inputfunction)
while(puagname) {
pgphentry = gphAdd(pasbasenew->phash,puagname->user,puag);
if(!pgphentry) {
epicsPrintf("UAG %s duplicate user = %s\n",
puag->name, puagname->user);
epicsPrintf("Duplicated user '%s' in UAG '%s'\n",
puagname->user, puag->name);
}
puagname = (UAGNAME *)ellNext((ELLNODE *)puagname);
}
@@ -136,8 +134,8 @@ long epicsShareAPI asInitialize(ASINPUTFUNCPTR inputfunction)
while(phagname) {
pgphentry = gphAdd(pasbasenew->phash,phagname->host,phag);
if(!pgphentry) {
epicsPrintf("HAG %s duplicate host = %s\n",
phag->name,phagname->host);
epicsPrintf("Duplicated host '%s' in HAG '%s'\n",
phagname->host, phag->name);
}
phagname = (HAGNAME *)ellNext((ELLNODE *)phagname);
}
@@ -239,7 +237,7 @@ long epicsShareAPI asInitFP(FILE *fp,const char *substitutions)
errMessage(status,"asInitFP: macCreateHandle error");
return(status);
}
macParseDefns(macHandle,(char *)substitutions,&macPairs);
macParseDefns(macHandle,substitutions,&macPairs);
if(macPairs ==NULL) {
macDeleteHandle(macHandle);
macHandle = NULL;
@@ -1177,7 +1175,7 @@ static long asHagAddHost(HAG *phag,const char *host)
if (!phag) return 0;
phagname = asCalloc(1, sizeof(HAGNAME)+strlen(host)+1);
phagname->host = (char *)(phagname+1);
for (i = 0; i < strlen(phagname->host); i++) {
for (i = 0; i < strlen(host); i++) {
phagname->host[i] = (char)tolower((int)host[i]);
}
ellAdd(&phag->list, (ELLNODE *)phagname);

View File

@@ -21,7 +21,7 @@ static ASINPUTFUNCPTR *my_yyinput;
#undef YY_INPUT
#define YY_INPUT(b,r,ms) (r=(*my_yyinput)((char *)b,ms))
static int yyreset()
static int yyreset(void)
{
line_num=1;
BEGIN INITIAL;

View File

@@ -16,7 +16,6 @@
#include <stdio.h>
#include <string.h>
#include "dbDefs.h"
#include "errlog.h"
#include "asLib.h"
#include "dbStaticLib.h"

View File

@@ -1,12 +1,12 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>EPICS R3.14 Channel Access Reference Manual</title>
</head>
<body lang="en" bgcolor="#FFFFFF">
<body lang="en">
<hr>
<h1>EPICS R3.14 Channel Access Reference Manual</h1>
@@ -14,32 +14,34 @@
Jeffrey O. Hill
</address>
<p><font size="2">Los Alamos National Laboratory<br>
SNS Division</font></p>
<p><span style="font-size: x-small; font-weight:lighter;">Los Alamos National
Laboratory, SNS Division</span></p>
<address>
Ralph Lange
</address>
<p><font size="2">BESSY</font></p>
<p><span style="font-size: x-small; font-weight:lighter;">BESSY</span></p>
<p><font size="1">Copyright © 2002 The University of Chicago, as Operator of
Argonne National Laboratory.<br>
<p><span style="font-size: xx-small; font-weight:lighter;">Copyright © 2002
The University of Chicago, as Operator of Argonne National Laboratory.<br>
Copyright © 2002 The Regents of the University of California, as Operator of
Los Alamos National Laboratory.<br>
Copyright © 2002 Berliner Elektronenspeicherringgesellschaft für
Synchrotronstrahlung.</font></p>
Synchrotronstrahlung.</span></p>
<p><font size="1">EPICS BASE Versions 3.13.7 and higher are distributed
subject to a Software License Agreement found in the file LICENSE that is
included with this distribution.</font></p>
<p><span style="font-size: xx-small; font-weight:lighter;">EPICS BASE
Versions 3.13.7 and higher are distributed subject to a Software License
Agreement found in the file LICENSE that is included with this
distribution.</span></p>
<p><a href="http://www.w3.org/Amaya/"><img
src="http://www.w3.org/Amaya/Icons/w3c-amaya.gif" alt="W3C-Amaya" height="31"
width="88"></a> <a href="http://validator.w3.org/check/referer"> <img
border="0" src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"
width="88"></a> <a href="http://validator.w3.org/check/referer"><img
src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"
height="31" width="88"></a></p>
<p><small>Modified on $Date$</small></p>
<p><small><span style="font-size: smaller; font-weight:lighter;">Modified on
$Date$</span></small></p>
<hr>
<h2>Table of Contents</h2>
@@ -830,9 +832,9 @@ CA server employed by iocCore does not implemet this feature</em>.</p>
<h4>Ignoring Process Variable Name Resolution Requests From Certain Hosts</h4>
<p>Name resolution requests originating from any of the IP addresses
specified in the EPICS_CAS_IGNORE_ADDR_LIST parameter are not replied to.<em>
In R3.14 and previous releases the CA server employed by iocCore does not
implemet this feature.</em></p>
specified in the EPICS_CAS_IGNORE_ADDR_LIST parameter are not replied
to.<em>In R3.14 and previous releases the CA server employed by iocCore does
not implemet this feature.</em></p>
<h4>Client Configuration that also Applies to Servers</h4>
@@ -2190,7 +2192,7 @@ It is not possible to attach a thread to a non-preemptive CA context created
explicitly <em>or implicitly</em> with
ca_create_context(ca_disable_preemptive_callback). Once a thread has joined
with a CA context it need only make ordinary ca_xxxx() library calls to use
the context. </p>
the context.</p>
<p>A CA client library context can be shut down and cleaned up, after
destroying any channels or application specific threads that are attached to

View File

@@ -2545,7 +2545,7 @@ void verifyImmediateTearDown ( const char * pName,
enum ca_preemptive_callback_select select,
unsigned interestLevel )
{
unsigned i;
int i;
showProgressBegin ( "verifyImmediateTearDown", interestLevel );

View File

@@ -45,124 +45,6 @@ bool comBuf::flushToWire ( wireSendAdapter & wire, const epicsTime & currentTime
return true;
}
unsigned comBuf::push ( const epicsInt16 * pValue, unsigned nElem )
{
unsigned index = this->nextWriteIndex;
unsigned available = sizeof ( this->buf ) - index;
unsigned nBytes = sizeof ( *pValue ) * nElem;
if ( nBytes > available ) {
nElem = available / sizeof ( *pValue );
}
for ( unsigned i = 0u; i < nElem; i++ ) {
this->buf[ index + 0 ] =
static_cast < epicsUInt8 > ( pValue[i] >> 8u );
this->buf[ index + 1 ] =
static_cast < epicsUInt8 > ( pValue[i] >> 0u );
index += sizeof ( *pValue );
}
this->nextWriteIndex = index;
return nElem;
}
unsigned comBuf::push ( const epicsUInt16 * pValue, unsigned nElem )
{
unsigned index = this->nextWriteIndex;
unsigned available = sizeof ( this->buf ) - index;
unsigned nBytes = sizeof ( *pValue ) * nElem;
if ( nBytes > available ) {
nElem = available / sizeof ( *pValue );
}
for ( unsigned i = 0u; i < nElem; i++ ) {
this->buf[ index + 0 ] =
static_cast < epicsUInt8 > ( pValue[i] >> 8u );
this->buf[ index + 1 ] =
static_cast < epicsUInt8 > ( pValue[i] >> 0u );
index += sizeof ( *pValue );
}
this->nextWriteIndex = index;
return nElem;
}
unsigned comBuf::push ( const epicsInt32 * pValue, unsigned nElem )
{
unsigned index = this->nextWriteIndex;
unsigned available = sizeof ( this->buf ) - index;
unsigned nBytes = sizeof ( *pValue ) * nElem;
if ( nBytes > available ) {
nElem = available / sizeof ( *pValue );
}
for ( unsigned i = 0u; i < nElem; i++ ) {
this->buf[ index + 0 ] =
static_cast < epicsUInt8 > ( pValue[i] >> 24u );
this->buf[ index + 1 ] =
static_cast < epicsUInt8 > ( pValue[i] >> 16u );
this->buf[ index + 2 ] =
static_cast < epicsUInt8 > ( pValue[i] >> 8u );
this->buf[ index + 3 ] =
static_cast < epicsUInt8 > ( pValue[i] >> 0u );
index += sizeof ( *pValue );
}
this->nextWriteIndex = index;
return nElem;
}
unsigned comBuf::push ( const epicsUInt32 * pValue, unsigned nElem )
{
unsigned index = this->nextWriteIndex;
unsigned available = sizeof ( this->buf ) - index;
unsigned nBytes = sizeof ( *pValue ) * nElem;
if ( nBytes > available ) {
nElem = available / sizeof ( *pValue );
}
for ( unsigned i = 0u; i < nElem; i++ ) {
this->buf[ index + 0 ] =
static_cast < epicsUInt8 > ( pValue[i] >> 24u );
this->buf[ index + 1 ] =
static_cast < epicsUInt8 > ( pValue[i] >> 16u );
this->buf[ index + 2 ] =
static_cast < epicsUInt8 > ( pValue[i] >> 8u );
this->buf[ index + 3 ] =
static_cast < epicsUInt8 > ( pValue[i] >> 0u );
index += sizeof ( *pValue );
}
this->nextWriteIndex = index;
return nElem;
}
unsigned comBuf::push ( const epicsFloat32 * pValue, unsigned nElem )
{
unsigned index = this->nextWriteIndex;
unsigned available = sizeof ( this->buf ) - index;
unsigned nBytes = sizeof ( *pValue ) * nElem;
if ( nBytes > available ) {
nElem = available / sizeof ( *pValue );
}
for ( unsigned i = 0u; i < nElem; i++ ) {
// allow native floating point formats to be converted to IEEE
WireSetFloat32 ( pValue[i], &this->buf[index] );
index += sizeof ( *pValue );
}
this->nextWriteIndex = index;
return nElem;
}
unsigned comBuf::push ( const epicsFloat64 * pValue, unsigned nElem )
{
unsigned index = this->nextWriteIndex;
unsigned available = sizeof ( this->buf ) - index;
unsigned nBytes = sizeof ( *pValue ) * nElem;
if ( nBytes > available ) {
nElem = available / sizeof ( *pValue );
}
for ( unsigned i = 0u; i < nElem; i++ ) {
// allow native floating point formats to be converted to IEEE
WireSetFloat64 ( pValue[i], &this->buf[index] );
index += sizeof ( *pValue );
}
this->nextWriteIndex = index;
return nElem;
}
// throwing the exception from a function that isnt inline
// shrinks the GNU compiled object code
void comBuf::throwInsufficentBytesException ()

View File

@@ -25,8 +25,7 @@
#define comBufh
#include <new>
#include <string.h>
#include <cstring>
#include "epicsAssert.h"
#include "epicsTypes.h"
@@ -81,23 +80,12 @@ public:
void clear ();
unsigned copyInBytes ( const void *pBuf, unsigned nBytes );
unsigned push ( comBuf & );
bool push ( const epicsInt8 value );
bool push ( const epicsUInt8 value );
bool push ( const epicsInt16 value );
bool push ( const epicsUInt16 value );
bool push ( const epicsInt32 value );
bool push ( const epicsUInt32 value );
bool push ( const epicsFloat32 & value );
bool push ( const epicsFloat64 & value );
bool push ( const epicsOldString & value );
template < class T >
bool push ( const T & value );
template < class T >
unsigned push ( const T * pValue, unsigned nElem );
unsigned push ( const epicsInt8 * pValue, unsigned nElem );
unsigned push ( const epicsUInt8 * pValue, unsigned nElem );
unsigned push ( const epicsInt16 * pValue, unsigned nElem );
unsigned push ( const epicsUInt16 * pValue, unsigned nElem );
unsigned push ( const epicsInt32 * pValue, unsigned nElem );
unsigned push ( const epicsUInt32 * pValue, unsigned nElem );
unsigned push ( const epicsFloat32 * pValue, unsigned nElem );
unsigned push ( const epicsFloat64 * pValue, unsigned nElem );
unsigned push ( const epicsOldString * pValue, unsigned nElem );
void commitIncomming ();
void clearUncommittedIncomming ();
@@ -111,9 +99,8 @@ public:
bool success;
bool nowEmpty;
};
popStatus pop ( epicsUInt8 & );
popStatus pop ( epicsUInt16 & );
popStatus pop ( epicsUInt32 & );
template < class T >
popStatus pop ( T & );
static void throwInsufficentBytesException ();
void * operator new ( size_t size,
comBufMemoryManager & );
@@ -146,29 +133,29 @@ inline comBuf::comBuf () : commitIndex ( 0u ),
{
}
inline void comBuf::clear ()
inline void comBuf :: clear ()
{
this->commitIndex = 0u;
this->nextWriteIndex = 0u;
this->nextReadIndex = 0u;
}
inline unsigned comBuf::unoccupiedBytes () const
inline unsigned comBuf :: unoccupiedBytes () const
{
return sizeof ( this->buf ) - this->nextWriteIndex;
}
inline unsigned comBuf::occupiedBytes () const
inline unsigned comBuf :: occupiedBytes () const
{
return this->commitIndex - this->nextReadIndex;
}
inline unsigned comBuf::uncommittedBytes () const
inline unsigned comBuf :: uncommittedBytes () const
{
return this->nextWriteIndex - this->commitIndex;
}
inline unsigned comBuf::push ( comBuf & bufIn )
inline unsigned comBuf :: push ( comBuf & bufIn )
{
unsigned nBytes = this->copyInBytes (
& bufIn.buf[ bufIn.nextReadIndex ],
@@ -177,12 +164,12 @@ inline unsigned comBuf::push ( comBuf & bufIn )
return nBytes;
}
inline unsigned comBuf::capacityBytes ()
inline unsigned comBuf :: capacityBytes ()
{
return comBufSize;
}
inline void comBuf::fillFromWire (
inline void comBuf :: fillFromWire (
wireRecvAdapter & wire, statusWireIO & stat )
{
wire.recvBytes (
@@ -193,147 +180,30 @@ inline void comBuf::fillFromWire (
}
}
inline bool comBuf::push ( const epicsInt8 value )
{
unsigned index = this->nextWriteIndex;
unsigned nextIndex = index + sizeof ( value );
if ( nextIndex <= sizeof ( this->buf ) ) {
this->buf[ index ] = static_cast < epicsUInt8 > ( value );
this->nextWriteIndex = nextIndex;
return true;
}
return false;
}
inline bool comBuf::push ( const epicsUInt8 value )
{
unsigned index = this->nextWriteIndex;
unsigned nextIndex = index + sizeof ( value );
if ( nextIndex <= sizeof ( this->buf ) ) {
this->buf[ index ] = value;
this->nextWriteIndex = nextIndex;
return true;
}
return false;
}
inline bool comBuf::push ( const epicsInt16 value )
{
unsigned index = this->nextWriteIndex;
unsigned nextIndex = index + sizeof ( value );
if ( nextIndex <= sizeof ( this->buf ) ) {
this->buf[ index + 0u ] =
static_cast < epicsUInt8 > ( value >> 8u );
this->buf[ index + 1u ] =
static_cast < epicsUInt8 > ( value >> 0u );
this->nextWriteIndex = nextIndex;
return true;
}
return false;
}
inline bool comBuf::push ( const epicsUInt16 value )
{
unsigned index = this->nextWriteIndex;
unsigned nextIndex = index + sizeof ( value );
if ( nextIndex <= sizeof ( this->buf ) ) {
this->buf[ index + 0u ] =
static_cast < epicsUInt8 > ( value >> 8u );
this->buf[ index + 1u ] =
static_cast < epicsUInt8 > ( value >> 0u );
this->nextWriteIndex = nextIndex;
return true;
}
return false;
}
inline bool comBuf::push ( const epicsInt32 value )
{
unsigned index = this->nextWriteIndex;
unsigned nextIndex = index + sizeof ( value );
if ( nextIndex <= sizeof ( this->buf ) ) {
this->buf[ index + 0u ] =
static_cast < epicsUInt8 > ( value >> 24u );
this->buf[ index + 1u ] =
static_cast < epicsUInt8 > ( value >> 16u );
this->buf[ index + 2u ] =
static_cast < epicsUInt8 > ( value >> 8u );
this->buf[ index + 3u ] =
static_cast < epicsUInt8 > ( value >> 0u );
this->nextWriteIndex = nextIndex;
return true;
}
return false;
}
inline bool comBuf::push ( const epicsUInt32 value )
{
unsigned index = this->nextWriteIndex;
unsigned nextIndex = index + sizeof ( value );
if ( nextIndex <= sizeof ( this->buf ) ) {
this->buf[ index + 0u ] =
static_cast < epicsUInt8 > ( value >> 24u );
this->buf[ index + 1u ] =
static_cast < epicsUInt8 > ( value >> 16u );
this->buf[ index + 2u ] =
static_cast < epicsUInt8 > ( value >> 8u );
this->buf[ index + 3u ] =
static_cast < epicsUInt8 > ( value >> 0u );
this->nextWriteIndex = nextIndex;
return true;
}
return false;
}
inline bool comBuf::push ( const epicsFloat32 & value )
template < class T >
inline bool comBuf :: push ( const T & value )
{
unsigned index = this->nextWriteIndex;
unsigned available = sizeof ( this->buf ) - index;
if ( sizeof ( value ) > available ) {
return false;
}
// allow native floating point formats to be converted to IEEE
WireSetFloat32 ( value, & this->buf[index] );
WireSet ( value, & this->buf[index] );
this->nextWriteIndex = index + sizeof ( value );
return true;
}
inline bool comBuf::push ( const epicsFloat64 & value )
{
unsigned index = this->nextWriteIndex;
unsigned available = sizeof ( this->buf ) - index;
if ( sizeof ( value ) > available ) {
return false;
}
// allow native floating point formats to be converted to IEEE
WireSetFloat64 ( value, & this->buf[index] );
this->nextWriteIndex = index + sizeof ( value );
return true;
}
inline bool comBuf::push ( const epicsOldString & value )
{
unsigned index = this->nextWriteIndex;
unsigned available = sizeof ( this->buf ) - index;
if ( sizeof ( value ) > available ) {
return false;
}
memcpy ( &this->buf[ index ], & value, sizeof ( value ) );
this->nextWriteIndex = index + sizeof ( value );
return true;
}
inline unsigned comBuf::push ( const epicsInt8 *pValue, unsigned nElem )
inline unsigned comBuf :: push ( const epicsInt8 *pValue, unsigned nElem )
{
return copyInBytes ( pValue, nElem );
}
inline unsigned comBuf::push ( const epicsUInt8 *pValue, unsigned nElem )
inline unsigned comBuf :: push ( const epicsUInt8 *pValue, unsigned nElem )
{
return copyInBytes ( pValue, nElem );
}
inline unsigned comBuf::push ( const epicsOldString * pValue, unsigned nElem )
inline unsigned comBuf :: push ( const epicsOldString * pValue, unsigned nElem )
{
unsigned index = this->nextWriteIndex;
unsigned available = sizeof ( this->buf ) - index;
@@ -347,17 +217,35 @@ inline unsigned comBuf::push ( const epicsOldString * pValue, unsigned nElem )
return nElem;
}
inline void comBuf::commitIncomming ()
template < class T >
unsigned comBuf :: push ( const T * pValue, unsigned nElem )
{
unsigned index = this->nextWriteIndex;
unsigned available = sizeof ( this->buf ) - index;
unsigned nBytes = sizeof ( *pValue ) * nElem;
if ( nBytes > available ) {
nElem = available / sizeof ( *pValue );
}
for ( unsigned i = 0u; i < nElem; i++ ) {
// allow native floating point formats to be converted to IEEE
WireSet( pValue[i], &this->buf[index] );
index += sizeof ( *pValue );
}
this->nextWriteIndex = index;
return nElem;
}
inline void comBuf :: commitIncomming ()
{
this->commitIndex = this->nextWriteIndex;
}
inline void comBuf::clearUncommittedIncomming ()
inline void comBuf :: clearUncommittedIncomming ()
{
this->nextWriteIndex = this->commitIndex;
}
inline bool comBuf::copyInAllBytes ( const void *pBuf, unsigned nBytes )
inline bool comBuf :: copyInAllBytes ( const void *pBuf, unsigned nBytes )
{
unsigned index = this->nextWriteIndex;
unsigned available = sizeof ( this->buf ) - index;
@@ -369,7 +257,7 @@ inline bool comBuf::copyInAllBytes ( const void *pBuf, unsigned nBytes )
return false;
}
inline unsigned comBuf::copyInBytes ( const void * pBuf, unsigned nBytes )
inline unsigned comBuf :: copyInBytes ( const void * pBuf, unsigned nBytes )
{
unsigned index = this->nextWriteIndex;
unsigned available = sizeof ( this->buf ) - index;
@@ -381,7 +269,7 @@ inline unsigned comBuf::copyInBytes ( const void * pBuf, unsigned nBytes )
return nBytes;
}
inline bool comBuf::copyOutAllBytes ( void * pBuf, unsigned nBytes )
inline bool comBuf :: copyOutAllBytes ( void * pBuf, unsigned nBytes )
{
unsigned index = this->nextReadIndex;
unsigned occupied = this->commitIndex - index;
@@ -393,7 +281,7 @@ inline bool comBuf::copyOutAllBytes ( void * pBuf, unsigned nBytes )
return false;
}
inline unsigned comBuf::copyOutBytes ( void *pBuf, unsigned nBytes )
inline unsigned comBuf :: copyOutBytes ( void *pBuf, unsigned nBytes )
{
unsigned index = this->nextReadIndex;
unsigned occupied = this->commitIndex - index;
@@ -405,7 +293,7 @@ inline unsigned comBuf::copyOutBytes ( void *pBuf, unsigned nBytes )
return nBytes;
}
inline unsigned comBuf::removeBytes ( unsigned nBytes )
inline unsigned comBuf :: removeBytes ( unsigned nBytes )
{
unsigned index = this->nextReadIndex;
unsigned occupied = this->commitIndex - index;
@@ -416,7 +304,8 @@ inline unsigned comBuf::removeBytes ( unsigned nBytes )
return nBytes;
}
inline comBuf::popStatus comBuf::pop ( epicsUInt8 & returnVal )
template < class T >
comBuf :: popStatus comBuf :: pop ( T & returnVal )
{
unsigned nrIndex = this->nextReadIndex;
unsigned popIndex = nrIndex + sizeof ( returnVal );
@@ -433,61 +322,7 @@ inline comBuf::popStatus comBuf::pop ( epicsUInt8 & returnVal )
return status;
}
}
returnVal = this->buf[ nrIndex ];
this->nextReadIndex = popIndex;
return status;
}
inline comBuf::popStatus comBuf::pop ( epicsUInt16 & returnVal )
{
unsigned nrIndex = this->nextReadIndex;
unsigned popIndex = nrIndex + sizeof ( returnVal );
unsigned cIndex = this->commitIndex;
popStatus status;
status.success = true;
status.nowEmpty = false;
if ( popIndex >= cIndex ) {
if ( popIndex == cIndex ) {
status.nowEmpty = true;
}
else {
status.success = false;
return status;
}
}
returnVal =
static_cast < epicsUInt16 > (
( this->buf[ nrIndex + 0 ] << 8u ) |
this->buf[ nrIndex + 1 ]
);
this->nextReadIndex = popIndex;
return status;
}
inline comBuf::popStatus comBuf::pop ( epicsUInt32 & returnVal )
{
unsigned nrIndex = this->nextReadIndex;
unsigned popIndex = nrIndex + sizeof ( returnVal );
unsigned cIndex = this->commitIndex;
popStatus status;
status.success = true;
status.nowEmpty = false;
if ( popIndex >= cIndex ) {
if ( popIndex == cIndex ) {
status.nowEmpty = true;
}
else {
status.success = false;
return status;
}
}
returnVal =
static_cast < epicsUInt32 > (
( this->buf[ nrIndex + 0 ] << 24u ) |
( this->buf[ nrIndex + 1 ] << 16u ) |
( this->buf[ nrIndex + 2 ] << 8u ) |
this->buf[ nrIndex + 3 ]
);
WireGet ( & this->buf[ nrIndex ], returnVal );
this->nextReadIndex = popIndex;
return status;
}

View File

@@ -153,8 +153,7 @@ double netiiu::receiveWatchdogDelay (
}
void netiiu::uninstallChanDueToSuccessfulSearchResponse (
epicsGuard < epicsMutex > &, nciu &,
const epicsTime & currentTime )
epicsGuard < epicsMutex > &, nciu &, const epicsTime & )
{
throw std::runtime_error (
"search response occured when not attached to udpiiu?" );

View File

@@ -146,8 +146,10 @@ static bool makeSocket ( unsigned short port, bool reuseAddr, SOCKET * pSock )
repeaterClient::repeaterClient ( const osiSockAddr &fromIn ) :
from ( fromIn ), sock ( INVALID_SOCKET )
{
#ifdef DEBUG
unsigned port = ntohs ( from.ia.sin_port );
debugPrintf ( ( "new client %u\n", port ) );
#endif
}
bool repeaterClient::connect ()
@@ -209,15 +211,19 @@ bool repeaterClient::sendMessage ( const void *pBuf, unsigned bufSize ) // X aCC
status = send ( this->sock, (char *) pBuf, bufSize, 0 );
if ( status >= 0 ) {
assert ( static_cast <unsigned> ( status ) == bufSize );
#ifdef DEBUG
epicsUInt16 port = ntohs ( this->from.ia.sin_port );
debugPrintf ( ("Sent to %u\n", port ) );
#endif
return true;
}
else {
int errnoCpy = SOCKERRNO;
if ( errnoCpy == SOCK_ECONNREFUSED ) {
#ifdef DEBUG
epicsUInt16 port = ntohs ( this->from.ia.sin_port );
debugPrintf ( ("Client refused message %u\n", port ) );
#endif
}
else {
char sockErrBuf[64];
@@ -233,8 +239,10 @@ repeaterClient::~repeaterClient ()
if ( this->sock != INVALID_SOCKET ) {
epicsSocketDestroy ( this->sock );
}
#ifdef DEBUG
epicsUInt16 port = ntohs ( this->from.ia.sin_port );
debugPrintf ( ( "Deleted client %u\n", port ) );
#endif
}
void * repeaterClient::operator new ( size_t ) // X aCC 361
@@ -456,9 +464,11 @@ static void register_new_client ( osiSockAddr & from,
client_list.remove ( *pNewClient );
pNewClient->~repeaterClient ();
freeList.release ( pNewClient );
epicsUInt16 port = ntohs ( from.ia.sin_port );
debugPrintf ( ( "Deleted repeater client=%u (error while sending ack)\n",
port ) );
# ifdef DEBUG
epicsUInt16 port = ntohs ( from.ia.sin_port );
debugPrintf ( ( "Deleted repeater client=%u (error while sending ack)\n",
port ) );
# endif
}
/*

View File

@@ -198,7 +198,7 @@ void tcpRecvWatchdog::connectNotify (
}
void tcpRecvWatchdog::sendTimeoutNotify (
epicsGuard < epicsMutex > & cbGuard,
epicsGuard < epicsMutex > & /* cbGuard */,
epicsGuard < epicsMutex > & guard )
{
guard.assertIdenticalMutex ( this->mutex );

View File

@@ -1367,7 +1367,7 @@ void tcpiiu::echoRequest ( epicsGuard < epicsMutex > & guard ) // X aCC 431
{
guard.assertIdenticalMutex ( this->mutex );
int command = CA_PROTO_ECHO;
epicsUInt16 command = CA_PROTO_ECHO;
if ( ! CA_V43 ( this->minorProtocolVersion ) ) {
// we fake an echo to early server using a read sync
command = CA_PROTO_READ_SYNC;

View File

@@ -141,15 +141,6 @@ caStatus casPVI::attachToServer ( caServerI & cas )
caStatus casPVI::updateEnumStringTable ( casCtx & ctxIn )
{
epicsGuard < epicsMutex > guard ( this->mutex );
//
// keep trying to fill in the table if client disconnects
// prevented previous asynchronous IO from finishing, but if
// a previous client has succeeded then dont bother.
//
if ( this->enumStrTbl.numberOfStrings () > 0 ) {
return S_cas_success;
}
//
// create a gdd with the "enum string table" application type
@@ -201,15 +192,6 @@ caStatus casPVI::updateEnumStringTable ( casCtx & ctxIn )
void casPVI::updateEnumStringTableAsyncCompletion ( const gdd & resp )
{
epicsGuard < epicsMutex > guard ( this->mutex );
//
// keep trying to fill in the table if client disconnects
// prevented previous asynchronous IO from finishing, but if
// a previous client has succeeded then dont bother.
//
if ( this->enumStrTbl.numberOfStrings () > 0 ) {
return;
}
if ( resp.isContainer() ) {
errMessage ( S_cas_badType,

View File

@@ -204,9 +204,10 @@ void outBuf::commitMsg ( ca_uint32_t reducedPayloadSize )
payloadSizeExtended = reducedPayloadSize;
}
else {
AlignedWireRef < epicsUInt16 > payloadSize ( mp->m_postsize );
AlignedWireRef < epicsUInt16 > payloadSizeOnWire ( mp->m_postsize );
ca_uint32_t payloadSize = payloadSizeOnWire;
assert ( reducedPayloadSize <= payloadSize );
payloadSize = static_cast < ca_uint16_t > ( reducedPayloadSize );
payloadSizeOnWire = static_cast < ca_uint16_t > ( reducedPayloadSize );
}
this->commitMsg ();
}

View File

@@ -77,7 +77,7 @@ static void callbackInitPvt(void *arg)
}
}
void epicsShareAPI callbackInit()
void epicsShareAPI callbackInit(void)
{
static epicsThreadOnceId callbackOnceFlag = EPICS_THREAD_ONCE_INIT;
void *arg = 0;

View File

@@ -56,7 +56,7 @@ typedef void (*CALLBACKFUNC)(struct callbackPvt*);
#define callbackGetUser(USER,PCALLBACK)\
( (USER) = (void *)((CALLBACK *)(PCALLBACK))->user )
epicsShareFunc void epicsShareAPI callbackInit();
epicsShareFunc void epicsShareAPI callbackInit(void);
epicsShareFunc void epicsShareAPI callbackRequest(CALLBACK *pCallback);
epicsShareFunc void epicsShareAPI callbackRequestProcessCallback(
CALLBACK *pCallback,int Priority, void *pRec);

View File

@@ -57,8 +57,6 @@
#include "dbAccessDefs.h"
#include "recGbl.h"
extern long lset_stack_not_empty;
epicsShareDef struct dbBase *pdbbase = 0;
epicsShareDef volatile int interruptAccept=FALSE;
@@ -119,7 +117,7 @@ static long putSpecial(DBADDR *paddr,int pass)
return(0);
}
static void get_enum_strs(DBADDR *paddr,void **ppbuffer,
static void get_enum_strs(DBADDR *paddr, char **ppbuffer,
struct rset *prset,long *options)
{
short field_type=paddr->field_type;
@@ -179,7 +177,7 @@ choice_common:
return;
}
static void get_graphics(DBADDR *paddr,void **ppbuffer,
static void get_graphics(DBADDR *paddr, char **ppbuffer,
struct rset *prset,long *options)
{
struct dbr_grDouble grd;
@@ -219,7 +217,7 @@ static void get_graphics(DBADDR *paddr,void **ppbuffer,
return;
}
static void get_control(DBADDR *paddr,void **ppbuffer,
static void get_control(DBADDR *paddr, char **ppbuffer,
struct rset *prset,long *options)
{
struct dbr_ctrlDouble ctrld;
@@ -259,7 +257,7 @@ static void get_control(DBADDR *paddr,void **ppbuffer,
return;
}
static void get_alarm(DBADDR *paddr,void **ppbuffer,
static void get_alarm(DBADDR *paddr, char **ppbuffer,
struct rset *prset,long *options)
{
struct dbr_alDouble ald;
@@ -304,14 +302,13 @@ static void get_alarm(DBADDR *paddr,void **ppbuffer,
return;
}
static void getOptions(DBADDR *paddr,void **poriginal,long *options,void *pflin)
static void getOptions(DBADDR *paddr,char **poriginal,long *options,void *pflin)
{
db_field_log *pfl= (db_field_log *)pflin;
struct rset *prset;
short field_type=paddr->field_type;
dbCommon *pcommon;
void *pbuffer = *poriginal;
char *pbuffer = *poriginal;
prset=dbGetRset(paddr);
/* Process options */
@@ -328,19 +325,17 @@ static void getOptions(DBADDR *paddr,void **poriginal,long *options,void *pflin)
}
*pushort++ = pcommon->acks;
*pushort++ = pcommon->ackt;
pbuffer = pushort;
pbuffer = (char *)pushort;
}
if( (*options) & DBR_UNITS ) {
memset(pbuffer,'\0',dbr_units_size);
if( prset && prset->get_units ){
char * pchar = (char *)pbuffer;
(*prset->get_units)(paddr,pchar);
pchar[DB_UNITS_SIZE-1] = '\0';
(*prset->get_units)(paddr, pbuffer);
pbuffer[DB_UNITS_SIZE-1] = '\0';
} else {
*options = (*options) ^ DBR_UNITS; /*Turn off DBR_UNITS*/
*options ^= DBR_UNITS; /*Turn off DBR_UNITS*/
}
pbuffer = (char *)pbuffer + dbr_units_size;
pbuffer += dbr_units_size;
}
if( (*options) & DBR_PRECISION ) {
struct dbr_precision *pdbr_precision=
@@ -354,9 +349,9 @@ static void getOptions(DBADDR *paddr,void **poriginal,long *options,void *pflin)
pdbr_precision->field_width =
pdbr_precision->precision + 5;
} else {
*options = (*options)^DBR_PRECISION; /*Turn off DBR_PRECISION*/
*options ^= DBR_PRECISION; /*Turn off DBR_PRECISION*/
}
pbuffer = (char *)pbuffer + dbr_precision_size;
pbuffer += dbr_precision_size;
}
if( (*options) & DBR_TIME ) {
unsigned long *pulong = (unsigned long *)pbuffer;
@@ -367,16 +362,16 @@ static void getOptions(DBADDR *paddr,void **poriginal,long *options,void *pflin)
*pulong++ = pcommon->time.secPastEpoch;
*pulong++ = pcommon->time.nsec;
}
pbuffer = pulong;
pbuffer = (char *)pulong;
}
if( (*options) & DBR_ENUM_STRS )
get_enum_strs(paddr,&pbuffer,prset,options);
get_enum_strs(paddr, &pbuffer, prset, options);
if( (*options) & (DBR_GR_LONG|DBR_GR_DOUBLE ))
get_graphics(paddr,&pbuffer,prset,options);
get_graphics(paddr, &pbuffer, prset, options);
if((*options) & (DBR_CTRL_LONG | DBR_CTRL_DOUBLE ))
get_control(paddr,&pbuffer,prset,options);
get_control(paddr, &pbuffer, prset, options);
if((*options) & (DBR_AL_LONG | DBR_AL_DOUBLE ))
get_alarm(paddr,&pbuffer,prset,options);
get_alarm(paddr, &pbuffer, prset, options);
*poriginal = pbuffer;
}
@@ -921,7 +916,8 @@ long epicsShareAPI dbGetField(DBADDR *paddr,short dbrType,
status = S_db_badDbrtype;
goto done;
}
if(options && (*options))getOptions(paddr,(void **)&pbuf,options,pflin);
if (options && (*options))
getOptions(paddr, &pbuf, options, pflin);
if(nRequest && *nRequest==0) goto done;
dbInitEntry(pdbbase,&dbEntry);
status = dbFindRecord(&dbEntry,precord->name);
@@ -966,7 +962,7 @@ long epicsShareAPI dbGet(DBADDR *paddr,short dbrType,
}
prset=dbGetRset(paddr);
if(options && (*options)) {
void *pbuf = pbuffer;
char *pbuf = pbuffer;
getOptions(paddr,&pbuf,options,pflin);
pbuffer = pbuf;
@@ -1262,12 +1258,8 @@ long epicsShareAPI dbPutField(
return(status);
}
static long putAckt(paddr,pbuffer,nRequest,no_elements,offset)
DBADDR *paddr;
unsigned short *pbuffer;
long nRequest;
long no_elements;
long offset;
static long putAckt(DBADDR *paddr, const unsigned short *pbuffer, long nRequest,
long no_elements, long offset)
{
dbCommon *precord=(dbCommon *)(paddr->precord);
@@ -1282,12 +1274,8 @@ long offset;
return(0);
}
static long putAcks(paddr,pbuffer,nRequest,no_elements,offset)
DBADDR *paddr;
unsigned short *pbuffer;
long nRequest;
long no_elements;
long offset;
static long putAcks(DBADDR *paddr, const unsigned short *pbuffer, long nRequest,
long no_elements, long offset)
{
dbCommon *precord=(dbCommon *)(paddr->precord);
@@ -1316,11 +1304,9 @@ long epicsShareAPI dbPut(DBADDR *paddr,short dbrType,
if(special==SPC_ATTRIBUTE) return(S_db_noMod);
if(dbrType==DBR_PUT_ACKT && field_type<=DBF_DEVICE) {
status=putAckt(paddr,(unsigned short*)pbuffer,1l,1l,0l);
return(status);
return putAckt(paddr,(const unsigned short*)pbuffer,1l,1l,0l);
} else if(dbrType==DBR_PUT_ACKS && field_type<=DBF_DEVICE) {
status=putAcks(paddr,(unsigned short*)pbuffer,1l,1l,0l);
return(status);
return putAcks(paddr,(const unsigned short*)pbuffer,1l,1l,0l);
} else if( INVALID_DB_REQ(dbrType) || (field_type>DBF_DEVICE)) {
sprintf(message,"dbPut - database request type is %d",dbrType);
recGblDbaddrError(S_db_badDbrtype,paddr,message);

View File

@@ -89,9 +89,10 @@ epicsShareFunc long epicsShareAPI dbs(const char *recordname);
epicsShareFunc long epicsShareAPI dbstat(void);
epicsShareFunc long epicsShareAPI dbp(
const char *record_name, int interest_level);
epicsShareFunc long epicsShareAPI dbap(const char *record_name);
epicsShareFunc long epicsShareAPI dbap(const char *record_name);
epicsShareFunc int epicsShareAPI dbBkpt(dbCommon *precord);
epicsShareFunc void epicsShareAPI dbPrint(dbCommon *precord);
epicsShareFunc long epicsShareAPI dbprc(char *record_name);
extern long lset_stack_not_empty;

View File

@@ -2180,7 +2180,7 @@ static long getDeviceString(DBADDR *paddr, void *pto,
static long putStringString(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
char *pdest=paddr->pfield;
short size=paddr->field_size;
@@ -2206,7 +2206,7 @@ static long putStringString(
static long putStringChar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
char *pdest=(char *)paddr->pfield;
short value;
@@ -2237,7 +2237,7 @@ static long putStringChar(
static long putStringUchar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
unsigned char *pdest=(unsigned char *)paddr->pfield;
unsigned short value;
@@ -2268,7 +2268,7 @@ static long putStringUchar(
static long putStringShort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
short *pdest=(short *)paddr->pfield;
short value;
@@ -2299,7 +2299,7 @@ static long putStringShort(
static long putStringUshort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
unsigned short *pdest=(unsigned short *)paddr->pfield;
unsigned short value;
@@ -2330,7 +2330,7 @@ static long putStringUshort(
static long putStringLong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
long *pdest=(long *)paddr->pfield;
long value;
@@ -2361,7 +2361,7 @@ static long putStringLong(
static long putStringUlong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
unsigned long *pdest=(unsigned long *)paddr->pfield;
double value;
@@ -2394,7 +2394,7 @@ static long putStringUlong(
static long putStringFloat(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
float *pdest=(float *)paddr->pfield;
float value;
@@ -2426,7 +2426,7 @@ static long putStringFloat(
static long putStringDouble(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
double *pdest=(double *)paddr->pfield;
double value;
@@ -2458,7 +2458,7 @@ static long putStringDouble(
static long putStringEnum(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
struct rset *prset;
epicsEnum16 *pfield= (epicsEnum16*)(paddr->pfield);
long status;
@@ -2498,7 +2498,7 @@ static long putStringEnum(
static long putStringMenu(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
dbFldDes *pdbFldDes = (dbFldDes *)paddr->pfldDes;
dbMenu *pdbMenu;
char **papChoiceValue;
@@ -2535,7 +2535,7 @@ static long putStringMenu(
static long putStringDevice(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
dbFldDes *pdbFldDes = (dbFldDes *)paddr->pfldDes;
dbDeviceMenu *pdbDeviceMenu = (dbDeviceMenu *)pdbFldDes->ftPvt;
char **papChoice;
@@ -2572,7 +2572,7 @@ static long putStringDevice(
static long putCharString(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
char *pdest=(char *)(paddr->pfield);
short size=paddr->field_size;
@@ -2597,7 +2597,7 @@ static long putCharString(
static long putCharChar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
char *pdest=(char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2616,7 +2616,7 @@ static long putCharChar(
static long putCharUchar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
unsigned char *pdest=(unsigned char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2635,7 +2635,7 @@ static long putCharUchar(
static long putCharShort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
short *pdest=(short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2654,7 +2654,7 @@ static long putCharShort(
static long putCharUshort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
unsigned short *pdest=(unsigned short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2673,7 +2673,7 @@ static long putCharUshort(
static long putCharLong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
long *pdest=(long *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2692,7 +2692,7 @@ static long putCharLong(
static long putCharUlong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
unsigned long *pdest=(unsigned long *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2711,7 +2711,7 @@ static long putCharUlong(
static long putCharFloat(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
float *pdest=(float *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2730,7 +2730,7 @@ static long putCharFloat(
static long putCharDouble(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
double *pdest=(double *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2749,7 +2749,7 @@ static long putCharDouble(
static long putCharEnum(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
char *pbuffer = (char *)pfrom;
const char *pbuffer = (const char *)pfrom;
epicsEnum16 *pdest=(epicsEnum16 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2768,7 +2768,7 @@ static long putCharEnum(
static long putUcharString(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned char *pbuffer = (unsigned char *)pfrom;
const unsigned char *pbuffer = (const unsigned char *)pfrom;
char *pdest=(char *)(paddr->pfield);
short size=paddr->field_size;
@@ -2793,7 +2793,7 @@ static long putUcharString(
static long putUcharChar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned char *pbuffer = (unsigned char *)pfrom;
const unsigned char *pbuffer = (const unsigned char *)pfrom;
char *pdest=(char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2812,7 +2812,7 @@ static long putUcharChar(
static long putUcharUchar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned char *pbuffer = (unsigned char *)pfrom;
const unsigned char *pbuffer = (const unsigned char *)pfrom;
unsigned char *pdest=(unsigned char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2831,7 +2831,7 @@ static long putUcharUchar(
static long putUcharShort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned char *pbuffer = (unsigned char *)pfrom;
const unsigned char *pbuffer = (const unsigned char *)pfrom;
short *pdest=(short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2850,7 +2850,7 @@ static long putUcharShort(
static long putUcharUshort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned char *pbuffer = (unsigned char *)pfrom;
const unsigned char *pbuffer = (const unsigned char *)pfrom;
unsigned short *pdest=(unsigned short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2869,7 +2869,7 @@ static long putUcharUshort(
static long putUcharLong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned char *pbuffer = (unsigned char *)pfrom;
const unsigned char *pbuffer = (const unsigned char *)pfrom;
long *pdest=(long *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2888,7 +2888,7 @@ static long putUcharLong(
static long putUcharUlong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned char *pbuffer = (unsigned char *)pfrom;
const unsigned char *pbuffer = (const unsigned char *)pfrom;
unsigned long *pdest=(unsigned long *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2907,7 +2907,7 @@ static long putUcharUlong(
static long putUcharFloat(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned char *pbuffer = (unsigned char *)pfrom;
const unsigned char *pbuffer = (const unsigned char *)pfrom;
float *pdest=(float *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2926,7 +2926,7 @@ static long putUcharFloat(
static long putUcharDouble(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned char *pbuffer = (unsigned char *)pfrom;
const unsigned char *pbuffer = (const unsigned char *)pfrom;
double *pdest=(double *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2945,7 +2945,7 @@ static long putUcharDouble(
static long putUcharEnum(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned char *pbuffer = (unsigned char *)pfrom;
const unsigned char *pbuffer = (const unsigned char *)pfrom;
epicsEnum16 *pdest=(epicsEnum16 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -2964,7 +2964,7 @@ static long putUcharEnum(
static long putShortString(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
short *pbuffer = (short *)pfrom;
const short *pbuffer = (const short *)pfrom;
char *pdest=(char *)(paddr->pfield);
short size=paddr->field_size;
@@ -2989,7 +2989,7 @@ static long putShortString(
static long putShortChar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
short *pbuffer = (short *)pfrom;
const short *pbuffer = (const short *)pfrom;
char *pdest=(char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3008,7 +3008,7 @@ static long putShortChar(
static long putShortUchar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
short *pbuffer = (short *)pfrom;
const short *pbuffer = (const short *)pfrom;
unsigned char *pdest=(unsigned char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3027,7 +3027,7 @@ static long putShortUchar(
static long putShortShort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
short *pbuffer = (short *)pfrom;
const short *pbuffer = (const short *)pfrom;
short *pdest=(short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3046,7 +3046,7 @@ static long putShortShort(
static long putShortUshort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
short *pbuffer = (short *)pfrom;
const short *pbuffer = (const short *)pfrom;
unsigned short *pdest=(unsigned short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3065,7 +3065,7 @@ static long putShortUshort(
static long putShortLong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
short *pbuffer = (short *)pfrom;
const short *pbuffer = (const short *)pfrom;
long *pdest=(long *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3084,7 +3084,7 @@ static long putShortLong(
static long putShortUlong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
short *pbuffer = (short *)pfrom;
const short *pbuffer = (const short *)pfrom;
unsigned long *pdest=(unsigned long *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3103,7 +3103,7 @@ static long putShortUlong(
static long putShortFloat(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
short *pbuffer = (short *)pfrom;
const short *pbuffer = (const short *)pfrom;
float *pdest=(float *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3122,7 +3122,7 @@ static long putShortFloat(
static long putShortDouble(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
short *pbuffer = (short *)pfrom;
const short *pbuffer = (const short *)pfrom;
double *pdest=(double *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3141,7 +3141,7 @@ static long putShortDouble(
static long putShortEnum(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
short *pbuffer = (short *)pfrom;
const short *pbuffer = (const short *)pfrom;
epicsEnum16 *pdest=(epicsEnum16 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3160,7 +3160,7 @@ static long putShortEnum(
static long putUshortString(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned short *pbuffer = (unsigned short *)pfrom;
const unsigned short *pbuffer = (const unsigned short *)pfrom;
char *pdest=(char *)(paddr->pfield);
short size=paddr->field_size;
@@ -3185,7 +3185,7 @@ static long putUshortString(
static long putUshortChar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned short *pbuffer = (unsigned short *)pfrom;
const unsigned short *pbuffer = (const unsigned short *)pfrom;
char *pdest=(char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3204,7 +3204,7 @@ static long putUshortChar(
static long putUshortUchar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned short *pbuffer = (unsigned short *)pfrom;
const unsigned short *pbuffer = (const unsigned short *)pfrom;
unsigned char *pdest=(unsigned char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3223,7 +3223,7 @@ static long putUshortUchar(
static long putUshortShort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned short *pbuffer = (unsigned short *)pfrom;
const unsigned short *pbuffer = (const unsigned short *)pfrom;
short *pdest=(short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3242,7 +3242,7 @@ static long putUshortShort(
static long putUshortUshort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned short *pbuffer = (unsigned short *)pfrom;
const unsigned short *pbuffer = (const unsigned short *)pfrom;
unsigned short *pdest=(unsigned short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3261,7 +3261,7 @@ static long putUshortUshort(
static long putUshortLong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned short *pbuffer = (unsigned short *)pfrom;
const unsigned short *pbuffer = (const unsigned short *)pfrom;
epicsInt32 *pdest=(epicsInt32 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3280,7 +3280,7 @@ static long putUshortLong(
static long putUshortUlong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned short *pbuffer = (unsigned short *)pfrom;
const unsigned short *pbuffer = (const unsigned short *)pfrom;
epicsUInt32 *pdest=(epicsUInt32 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3299,7 +3299,7 @@ static long putUshortUlong(
static long putUshortFloat(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned short *pbuffer = (unsigned short *)pfrom;
const unsigned short *pbuffer = (const unsigned short *)pfrom;
float *pdest=(float *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3318,7 +3318,7 @@ static long putUshortFloat(
static long putUshortDouble(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned short *pbuffer = (unsigned short *)pfrom;
const unsigned short *pbuffer = (const unsigned short *)pfrom;
double *pdest=(double *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3337,7 +3337,7 @@ static long putUshortDouble(
static long putUshortEnum(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
unsigned short *pbuffer = (unsigned short *)pfrom;
const unsigned short *pbuffer = (const unsigned short *)pfrom;
epicsEnum16 *pdest=(epicsEnum16 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3356,7 +3356,7 @@ static long putUshortEnum(
static long putLongString(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsInt32 *pbuffer = (epicsInt32 *)pfrom;
const epicsInt32 *pbuffer = (const epicsInt32 *)pfrom;
char *pdest=(char *)(paddr->pfield);
short size=paddr->field_size;
@@ -3381,7 +3381,7 @@ static long putLongString(
static long putLongChar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsInt32 *pbuffer = (epicsInt32 *)pfrom;
const epicsInt32 *pbuffer = (const epicsInt32 *)pfrom;
char *pdest=(char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3400,7 +3400,7 @@ static long putLongChar(
static long putLongUchar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsInt32 *pbuffer = (epicsInt32 *)pfrom;
const epicsInt32 *pbuffer = (const epicsInt32 *)pfrom;
unsigned char *pdest=(unsigned char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3419,7 +3419,7 @@ static long putLongUchar(
static long putLongShort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsInt32 *pbuffer = (epicsInt32 *)pfrom;
const epicsInt32 *pbuffer = (const epicsInt32 *)pfrom;
short *pdest=(short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3438,7 +3438,7 @@ static long putLongShort(
static long putLongUshort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsInt32 *pbuffer = (epicsInt32 *)pfrom;
const epicsInt32 *pbuffer = (const epicsInt32 *)pfrom;
unsigned short *pdest=(unsigned short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3457,7 +3457,7 @@ static long putLongUshort(
static long putLongLong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsInt32 *pbuffer = (epicsInt32 *)pfrom;
const epicsInt32 *pbuffer = (const epicsInt32 *)pfrom;
epicsInt32 *pdest=(epicsInt32 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3476,7 +3476,7 @@ static long putLongLong(
static long putLongUlong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsInt32 *pbuffer = (epicsInt32 *)pfrom;
const epicsInt32 *pbuffer = (const epicsInt32 *)pfrom;
epicsUInt32 *pdest=(epicsUInt32 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3495,7 +3495,7 @@ static long putLongUlong(
static long putLongFloat(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsInt32 *pbuffer = (epicsInt32 *)pfrom;
const epicsInt32 *pbuffer = (const epicsInt32 *)pfrom;
float *pdest=(float *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3514,7 +3514,7 @@ static long putLongFloat(
static long putLongDouble(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsInt32 *pbuffer = (epicsInt32 *)pfrom;
const epicsInt32 *pbuffer = (const epicsInt32 *)pfrom;
double *pdest=(double *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3533,7 +3533,7 @@ static long putLongDouble(
static long putLongEnum(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsInt32 *pbuffer = (epicsInt32 *)pfrom;
const epicsInt32 *pbuffer = (const epicsInt32 *)pfrom;
epicsEnum16 *pdest=(epicsEnum16 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3552,7 +3552,7 @@ static long putLongEnum(
static long putUlongString(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsUInt32 *pbuffer = (epicsUInt32 *)pfrom;
const epicsUInt32 *pbuffer = (const epicsUInt32 *)pfrom;
char *pdest=(char *)(paddr->pfield);
short size=paddr->field_size;
@@ -3577,7 +3577,7 @@ static long putUlongString(
static long putUlongChar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsUInt32 *pbuffer = (epicsUInt32 *)pfrom;
const epicsUInt32 *pbuffer = (const epicsUInt32 *)pfrom;
char *pdest=(char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3596,7 +3596,7 @@ static long putUlongChar(
static long putUlongUchar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsUInt32 *pbuffer = (epicsUInt32 *)pfrom;
const epicsUInt32 *pbuffer = (const epicsUInt32 *)pfrom;
unsigned char *pdest=(unsigned char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3615,7 +3615,7 @@ static long putUlongUchar(
static long putUlongShort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsUInt32 *pbuffer = (epicsUInt32 *)pfrom;
const epicsUInt32 *pbuffer = (const epicsUInt32 *)pfrom;
short *pdest=(short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3634,7 +3634,7 @@ static long putUlongShort(
static long putUlongUshort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsUInt32 *pbuffer = (epicsUInt32 *)pfrom;
const epicsUInt32 *pbuffer = (const epicsUInt32 *)pfrom;
unsigned short *pdest=(unsigned short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3653,7 +3653,7 @@ static long putUlongUshort(
static long putUlongLong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsUInt32 *pbuffer = (epicsUInt32 *)pfrom;
const epicsUInt32 *pbuffer = (const epicsUInt32 *)pfrom;
epicsInt32 *pdest=(epicsInt32 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3672,7 +3672,7 @@ static long putUlongLong(
static long putUlongUlong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsUInt32 *pbuffer = (epicsUInt32 *)pfrom;
const epicsUInt32 *pbuffer = (const epicsUInt32 *)pfrom;
epicsUInt32 *pdest=(epicsUInt32 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3691,7 +3691,7 @@ static long putUlongUlong(
static long putUlongFloat(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsUInt32 *pbuffer = (epicsUInt32 *)pfrom;
const epicsUInt32 *pbuffer = (const epicsUInt32 *)pfrom;
float *pdest=(float *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3710,7 +3710,7 @@ static long putUlongFloat(
static long putUlongDouble(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsUInt32 *pbuffer = (epicsUInt32 *)pfrom;
const epicsUInt32 *pbuffer = (const epicsUInt32 *)pfrom;
double *pdest=(double *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3729,7 +3729,7 @@ static long putUlongDouble(
static long putUlongEnum(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsUInt32 *pbuffer = (epicsUInt32 *)pfrom;
const epicsUInt32 *pbuffer = (const epicsUInt32 *)pfrom;
epicsEnum16 *pdest=(epicsEnum16 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3748,7 +3748,7 @@ static long putUlongEnum(
static long putFloatString(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
float *pbuffer = (float *)pfrom;
const float *pbuffer = (const float *)pfrom;
char *pdest=(char *)(paddr->pfield);
long status = 0;
int precision = 6;
@@ -3778,7 +3778,7 @@ static long putFloatString(
static long putFloatChar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
float *pbuffer = (float *)pfrom;
const float *pbuffer = (const float *)pfrom;
char *pdest=(char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3797,7 +3797,7 @@ static long putFloatChar(
static long putFloatUchar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
float *pbuffer = (float *)pfrom;
const float *pbuffer = (const float *)pfrom;
unsigned char *pdest=(unsigned char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3816,7 +3816,7 @@ static long putFloatUchar(
static long putFloatShort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
float *pbuffer = (float *)pfrom;
const float *pbuffer = (const float *)pfrom;
short *pdest=(short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3835,7 +3835,7 @@ static long putFloatShort(
static long putFloatUshort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
float *pbuffer = (float *)pfrom;
const float *pbuffer = (const float *)pfrom;
unsigned short *pdest=(unsigned short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3854,7 +3854,7 @@ static long putFloatUshort(
static long putFloatLong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
float *pbuffer = (float *)pfrom;
const float *pbuffer = (const float *)pfrom;
epicsInt32 *pdest=(epicsInt32 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3873,7 +3873,7 @@ static long putFloatLong(
static long putFloatUlong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
float *pbuffer = (float *)pfrom;
const float *pbuffer = (const float *)pfrom;
epicsUInt32 *pdest=(epicsUInt32 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3892,7 +3892,7 @@ static long putFloatUlong(
static long putFloatFloat(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
float *pbuffer = (float *)pfrom;
const float *pbuffer = (const float *)pfrom;
float *pdest=(float *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3911,7 +3911,7 @@ static long putFloatFloat(
static long putFloatDouble(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
float *pbuffer = (float *)pfrom;
const float *pbuffer = (const float *)pfrom;
double *pdest=(double *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3930,7 +3930,7 @@ static long putFloatDouble(
static long putFloatEnum(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
float *pbuffer = (float *)pfrom;
const float *pbuffer = (const float *)pfrom;
epicsEnum16 *pdest=(epicsEnum16 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3949,7 +3949,7 @@ static long putFloatEnum(
static long putDoubleString(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
double *pbuffer = (double *)pfrom;
const double *pbuffer = (const double *)pfrom;
char *pdest=(char *)(paddr->pfield);
long status = 0;
int precision = 6;
@@ -3979,7 +3979,7 @@ static long putDoubleString(
static long putDoubleChar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
double *pbuffer = (double *)pfrom;
const double *pbuffer = (const double *)pfrom;
char *pdest=(char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -3998,7 +3998,7 @@ static long putDoubleChar(
static long putDoubleUchar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
double *pbuffer = (double *)pfrom;
const double *pbuffer = (const double *)pfrom;
unsigned char *pdest=(unsigned char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4017,7 +4017,7 @@ static long putDoubleUchar(
static long putDoubleShort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
double *pbuffer = (double *)pfrom;
const double *pbuffer = (const double *)pfrom;
short *pdest=(short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4036,7 +4036,7 @@ static long putDoubleShort(
static long putDoubleUshort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
double *pbuffer = (double *)pfrom;
const double *pbuffer = (const double *)pfrom;
unsigned short *pdest=(unsigned short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4055,7 +4055,7 @@ static long putDoubleUshort(
static long putDoubleLong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
double *pbuffer = (double *)pfrom;
const double *pbuffer = (const double *)pfrom;
epicsInt32 *pdest=(epicsInt32 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4074,7 +4074,7 @@ static long putDoubleLong(
static long putDoubleUlong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
double *pbuffer = (double *)pfrom;
const double *pbuffer = (const double *)pfrom;
epicsUInt32 *pdest=(epicsUInt32 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4093,7 +4093,7 @@ static long putDoubleUlong(
static long putDoubleFloat(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
double *pbuffer = (double *)pfrom;
const double *pbuffer = (const double *)pfrom;
float *pdest=(float *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4113,7 +4113,7 @@ static long putDoubleFloat(
static long putDoubleDouble(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
double *pbuffer = (double *)pfrom;
const double *pbuffer = (const double *)pfrom;
double *pdest=(double *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4132,7 +4132,7 @@ static long putDoubleDouble(
static long putDoubleEnum(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
double *pbuffer = (double *)pfrom;
const double *pbuffer = (const double *)pfrom;
epicsEnum16 *pdest=(epicsEnum16 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4151,7 +4151,7 @@ static long putDoubleEnum(
static long putEnumString(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsEnum16 *pbuffer = (epicsEnum16 *)pfrom;
const epicsEnum16 *pbuffer = (const epicsEnum16 *)pfrom;
char *pdest=(char *)(paddr->pfield);
short size=paddr->field_size;
@@ -4176,7 +4176,7 @@ static long putEnumString(
static long putEnumChar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsEnum16 *pbuffer = (epicsEnum16 *)pfrom;
const epicsEnum16 *pbuffer = (const epicsEnum16 *)pfrom;
char *pdest=(char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4195,7 +4195,7 @@ static long putEnumChar(
static long putEnumUchar(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsEnum16 *pbuffer = (epicsEnum16 *)pfrom;
const epicsEnum16 *pbuffer = (const epicsEnum16 *)pfrom;
unsigned char *pdest=(unsigned char *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4214,7 +4214,7 @@ static long putEnumUchar(
static long putEnumShort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsEnum16 *pbuffer = (epicsEnum16 *)pfrom;
const epicsEnum16 *pbuffer = (const epicsEnum16 *)pfrom;
short *pdest=(short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4233,7 +4233,7 @@ static long putEnumShort(
static long putEnumUshort(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsEnum16 *pbuffer = (epicsEnum16 *)pfrom;
const epicsEnum16 *pbuffer = (const epicsEnum16 *)pfrom;
unsigned short *pdest=(unsigned short *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4252,7 +4252,7 @@ static long putEnumUshort(
static long putEnumLong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsEnum16 *pbuffer = (epicsEnum16 *)pfrom;
const epicsEnum16 *pbuffer = (const epicsEnum16 *)pfrom;
epicsInt32 *pdest=(epicsInt32 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4271,7 +4271,7 @@ static long putEnumLong(
static long putEnumUlong(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsEnum16 *pbuffer = (epicsEnum16 *)pfrom;
const epicsEnum16 *pbuffer = (const epicsEnum16 *)pfrom;
epicsUInt32 *pdest=(epicsUInt32 *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4290,7 +4290,7 @@ static long putEnumUlong(
static long putEnumFloat(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsEnum16 *pbuffer = (epicsEnum16 *)pfrom;
const epicsEnum16 *pbuffer = (const epicsEnum16 *)pfrom;
float *pdest=(float *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4309,7 +4309,7 @@ static long putEnumFloat(
static long putEnumDouble(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsEnum16 *pbuffer = (epicsEnum16 *)pfrom;
const epicsEnum16 *pbuffer = (const epicsEnum16 *)pfrom;
double *pdest=(double *)(paddr->pfield);
if(nRequest==1 && offset==0) {
@@ -4328,7 +4328,7 @@ static long putEnumDouble(
static long putEnumEnum(
DBADDR *paddr,const void *pfrom,long nRequest,long no_elements,long offset)
{
epicsEnum16 *pbuffer = (epicsEnum16 *)pfrom;
const epicsEnum16 *pbuffer = (const epicsEnum16 *)pfrom;
epicsEnum16 *pdest=(epicsEnum16 *)(paddr->pfield);
if(nRequest==1 && offset==0) {

View File

@@ -90,10 +90,7 @@ struct event_user {
epicsMutexId lock;
epicsEventId ppendsem; /* Wait while empty */
epicsEventId pflush_sem; /* wait for flush */
OVRFFUNC *overflow_sub; /* called when overflow detect */
void *overflow_arg; /* parameter to above */
EXTRALABORFUNC *extralabor_sub;/* off load to event task */
void *extralabor_arg;/* parameter to above */
@@ -194,12 +191,6 @@ int epicsShareAPI dbel ( const char *pname, unsigned level )
if ( level > 0 ) {
printf ( "%4.4s", pdbFldDes->name );
/* they should never see this one */
if ( pevent->ev_que->evUser->queovr ) {
printf ( " !! event discard count=%d !!",
pevent->ev_que->evUser->queovr );
}
printf ( " { " );
if ( pevent->select & DBE_VALUE ) printf( "VALUE " );
if ( pevent->select & DBE_LOG ) printf( "LOG " );
@@ -565,36 +556,22 @@ void epicsShareAPI db_cancel_event (dbEventSubscription es)
return;
}
/*
* DB_ADD_OVERFLOW_EVENT()
*
* Specify a routine to be executed for event que overflow condition
*/
int epicsShareAPI db_add_overflow_event (
dbEventCtx ctx, OVRFFUNC *overflow_sub, void *overflow_arg)
{
struct event_user *evUser = (struct event_user *) ctx;
evUser->overflow_sub = overflow_sub;
evUser->overflow_arg = overflow_arg;
return DB_EVENT_OK;
}
/*
* DB_FLUSH_EXTRA_LABOR_EVENT()
*
* waits for extra labor in progress to finish
*/
int epicsShareAPI db_flush_extra_labor_event (dbEventCtx ctx)
void epicsShareAPI db_flush_extra_labor_event (dbEventCtx ctx)
{
struct event_user *evUser = (struct event_user *) ctx;
while(evUser->extraLaborBusy){
epicsMutexMustLock ( evUser->lock );
while ( evUser->extraLaborBusy ) {
epicsMutexUnlock ( evUser->lock );
epicsThreadSleep(1.0);
epicsMutexMustLock ( evUser->lock );
}
return DB_EVENT_OK;
epicsMutexUnlock ( evUser->lock );
}
/*
@@ -625,19 +602,18 @@ int epicsShareAPI db_post_extra_labor (dbEventCtx ctx)
struct event_user *evUser = (struct event_user *) ctx;
int doit;
epicsMutexMustLock ( evUser->lock );
if ( ! evUser->extra_labor ) {
epicsMutexMustLock ( evUser->lock );
if ( ! evUser->extra_labor ) {
evUser->extra_labor = TRUE;
doit = TRUE;
}
else {
doit = FALSE;
}
epicsMutexUnlock ( evUser->lock );
if ( doit ) {
epicsEventSignal(evUser->ppendsem);
}
evUser->extra_labor = TRUE;
doit = TRUE;
}
else {
doit = FALSE;
}
epicsMutexUnlock ( evUser->lock );
if ( doit ) {
epicsEventSignal(evUser->ppendsem);
}
return DB_EVENT_OK;
@@ -700,11 +676,11 @@ LOCAL void db_post_single_event_private (struct evSubscrip *event)
firstEventFlag = 0;
}
/*
* otherwise if the current entry is available then
* fill it in and advance the ring buffer
* Otherwise, the current entry must be available.
* Fill it in and advance the ring buffer.
*/
else if ( ev_que->evque[ev_que->putix] == EVENTQEMPTY ) {
else {
assert ( ev_que->evque[ev_que->putix] == EVENTQEMPTY );
pLog = &ev_que->valque[ev_que->putix];
ev_que->evque[ev_que->putix] = event;
if (event->npend>0u) {
@@ -723,14 +699,6 @@ LOCAL void db_post_single_event_private (struct evSubscrip *event)
}
ev_que->putix = RNGINC ( ev_que->putix );
}
else {
/*
* this should never occur if this is bug free
*/
ev_que->evUser->queovr++;
pLog = NULL;
firstEventFlag = 0;
}
if (pLog && event->valque) {
struct dbCommon *precord = event->paddr->precord;
@@ -948,50 +916,31 @@ LOCAL void event_task (void *pParm)
* check to see if the caller has offloaded
* labor to this task
*/
epicsMutexMustLock ( evUser->lock );
evUser->extraLaborBusy = TRUE;
if(evUser->extra_labor && evUser->extralabor_sub){
epicsMutexMustLock ( evUser->lock );
if(evUser->extra_labor && evUser->extralabor_sub){
evUser->extra_labor = FALSE;
pExtraLaborSub = evUser->extralabor_sub;
pExtraLaborArg = evUser->extralabor_arg;
}
else {
pExtraLaborSub = NULL;
pExtraLaborArg = NULL;
}
if ( evUser->extra_labor && evUser->extralabor_sub ) {
evUser->extra_labor = FALSE;
pExtraLaborSub = evUser->extralabor_sub;
pExtraLaborArg = evUser->extralabor_arg;
}
else {
pExtraLaborSub = NULL;
pExtraLaborArg = NULL;
}
if ( pExtraLaborSub ) {
epicsMutexUnlock ( evUser->lock );
if(pExtraLaborSub){
(*pExtraLaborSub)(pExtraLaborArg);
}
(*pExtraLaborSub)(pExtraLaborArg);
epicsMutexMustLock ( evUser->lock );
}
evUser->extraLaborBusy = FALSE;
if(evUser->extra_labor && evUser->extralabor_sub){
evUser->extra_labor = FALSE;
(*evUser->extralabor_sub)(evUser->extralabor_arg);
}
epicsMutexUnlock ( evUser->lock );
for ( ev_que = &evUser->firstque; ev_que;
ev_que = ev_que->nextque ) {
event_read (ev_que);
}
/*
* The following do not introduce event latency since they
* are not between notification and posting events.
*/
if(evUser->queovr){
if(evUser->overflow_sub)
(*evUser->overflow_sub)(
evUser->overflow_arg,
evUser->queovr);
else
errlogPrintf("Events lost, discard count was %d\n",
evUser->queovr);
evUser->queovr = 0;
}
}while(!evUser->pendexit);
} while( ! evUser->pendexit );
epicsMutexDestroy(evUser->firstque.writelock);
@@ -1027,14 +976,14 @@ int epicsShareAPI db_start_events (
{
struct event_user *evUser = (struct event_user *) ctx;
epicsMutexMustLock (evUser->firstque.writelock);
epicsMutexMustLock ( evUser->lock );
/*
* only one ca_pend_event thread may be
* started for each evUser
*/
if (evUser->taskid) {
epicsMutexUnlock (evUser->firstque.writelock);
epicsMutexUnlock ( evUser->lock );
return DB_EVENT_OK;
}
@@ -1048,10 +997,10 @@ int epicsShareAPI db_start_events (
taskname, osiPriority, epicsThreadGetStackSize(epicsThreadStackMedium),
event_task, (void *)evUser);
if (!evUser->taskid) {
epicsMutexUnlock (evUser->firstque.writelock);
epicsMutexUnlock ( evUser->lock );
return DB_EVENT_ERROR;
}
epicsMutexUnlock (evUser->firstque.writelock);
epicsMutexUnlock ( evUser->lock );
return DB_EVENT_OK;
}

View File

@@ -46,7 +46,6 @@ epicsShareFunc int epicsShareAPI db_post_events (
typedef void * dbEventCtx;
typedef void OVRFFUNC (void *overflow_arg, unsigned count);
typedef void EXTRALABORFUNC (void *extralabor_arg);
epicsShareFunc dbEventCtx epicsShareAPI db_init_events (void);
epicsShareFunc int epicsShareAPI db_start_events (
@@ -55,11 +54,9 @@ epicsShareFunc int epicsShareAPI db_start_events (
epicsShareFunc void epicsShareAPI db_close_events (dbEventCtx ctx);
epicsShareFunc void epicsShareAPI db_event_flow_ctrl_mode_on (dbEventCtx ctx);
epicsShareFunc void epicsShareAPI db_event_flow_ctrl_mode_off (dbEventCtx ctx);
epicsShareFunc int epicsShareAPI db_add_overflow_event (
dbEventCtx ctx, OVRFFUNC *overflow_sub, void *overflow_arg);
epicsShareFunc int epicsShareAPI db_add_extra_labor_event (
dbEventCtx ctx, EXTRALABORFUNC *func, void *arg);
epicsShareFunc int epicsShareAPI db_flush_extra_labor_event (dbEventCtx);
epicsShareFunc void epicsShareAPI db_flush_extra_labor_event (dbEventCtx);
epicsShareFunc int epicsShareAPI db_post_extra_labor (dbEventCtx ctx);
epicsShareFunc void epicsShareAPI db_event_change_priority ( dbEventCtx ctx, unsigned epicsPriority );

View File

@@ -1093,121 +1093,121 @@ int no_elements
break;
case(oldDBR_STS_STRING):
status = dbPutField(paddr,DBR_STRING,
((struct dbr_sts_string *)psrc)->value,(long)no_elements);
((const struct dbr_sts_string *)psrc)->value,(long)no_elements);
break;
/* case(oldDBR_STS_INT): */
case(oldDBR_STS_SHORT):
status = dbPutField(paddr,DBR_SHORT,
&(((struct dbr_sts_short *)psrc)->value),(long)no_elements);
&(((const struct dbr_sts_short *)psrc)->value),(long)no_elements);
break;
case(oldDBR_STS_FLOAT):
status = dbPutField(paddr,DBR_FLOAT,
&(((struct dbr_sts_float *)psrc)->value),(long)no_elements);
&(((const struct dbr_sts_float *)psrc)->value),(long)no_elements);
break;
case(oldDBR_STS_ENUM):
status = dbPutField(paddr,DBR_ENUM,
&(((struct dbr_sts_enum *)psrc)->value),(long)no_elements);
&(((const struct dbr_sts_enum *)psrc)->value),(long)no_elements);
break;
case(oldDBR_STS_CHAR):
status = dbPutField(paddr,DBR_UCHAR,
&(((struct dbr_sts_char *)psrc)->value),(long)no_elements);
&(((const struct dbr_sts_char *)psrc)->value),(long)no_elements);
break;
case(oldDBR_STS_LONG):
status = dbPutField(paddr,DBR_LONG,
&(((struct dbr_sts_long *)psrc)->value),(long)no_elements);
&(((const struct dbr_sts_long *)psrc)->value),(long)no_elements);
break;
case(oldDBR_STS_DOUBLE):
status = dbPutField(paddr,DBR_DOUBLE,
&(((struct dbr_sts_double *)psrc)->value),(long)no_elements);
&(((const struct dbr_sts_double *)psrc)->value),(long)no_elements);
break;
case(oldDBR_TIME_STRING):
status = dbPutField(paddr,DBR_TIME,
((struct dbr_time_string *)psrc)->value,(long)no_elements);
((const struct dbr_time_string *)psrc)->value,(long)no_elements);
break;
/* case(oldDBR_TIME_INT): */
case(oldDBR_TIME_SHORT):
status = dbPutField(paddr,DBR_SHORT,
&(((struct dbr_time_short *)psrc)->value),(long)no_elements);
&(((const struct dbr_time_short *)psrc)->value),(long)no_elements);
break;
case(oldDBR_TIME_FLOAT):
status = dbPutField(paddr,DBR_FLOAT,
&(((struct dbr_time_float *)psrc)->value),(long)no_elements);
&(((const struct dbr_time_float *)psrc)->value),(long)no_elements);
break;
case(oldDBR_TIME_ENUM):
status = dbPutField(paddr,DBR_ENUM,
&(((struct dbr_time_enum *)psrc)->value),(long)no_elements);
&(((const struct dbr_time_enum *)psrc)->value),(long)no_elements);
break;
case(oldDBR_TIME_CHAR):
status = dbPutField(paddr,DBR_UCHAR,
&(((struct dbr_time_char *)psrc)->value),(long)no_elements);
&(((const struct dbr_time_char *)psrc)->value),(long)no_elements);
break;
case(oldDBR_TIME_LONG):
status = dbPutField(paddr,DBR_LONG,
&(((struct dbr_time_long *)psrc)->value),(long)no_elements);
&(((const struct dbr_time_long *)psrc)->value),(long)no_elements);
break;
case(oldDBR_TIME_DOUBLE):
status = dbPutField(paddr,DBR_DOUBLE,
&(((struct dbr_time_double *)psrc)->value),(long)no_elements);
&(((const struct dbr_time_double *)psrc)->value),(long)no_elements);
break;
case(oldDBR_GR_STRING):
/* no struct dbr_gr_string - use dbr_sts_string instead */
status = dbPutField(paddr,DBR_STRING,
((struct dbr_sts_string *)psrc)->value,(long)no_elements);
((const struct dbr_sts_string *)psrc)->value,(long)no_elements);
break;
/* case(oldDBR_GR_INT): */
case(oldDBR_GR_SHORT):
status = dbPutField(paddr,DBR_SHORT,
&(((struct dbr_gr_short *)psrc)->value),(long)no_elements);
&(((const struct dbr_gr_short *)psrc)->value),(long)no_elements);
break;
case(oldDBR_GR_FLOAT):
status = dbPutField(paddr,DBR_FLOAT,
&(((struct dbr_gr_float *)psrc)->value),(long)no_elements);
&(((const struct dbr_gr_float *)psrc)->value),(long)no_elements);
break;
case(oldDBR_GR_ENUM):
status = dbPutField(paddr,DBR_ENUM,
&(((struct dbr_gr_enum *)psrc)->value),(long)no_elements);
&(((const struct dbr_gr_enum *)psrc)->value),(long)no_elements);
break;
case(oldDBR_GR_CHAR):
status = dbPutField(paddr,DBR_UCHAR,
&(((struct dbr_gr_char *)psrc)->value),(long)no_elements);
&(((const struct dbr_gr_char *)psrc)->value),(long)no_elements);
break;
case(oldDBR_GR_LONG):
status = dbPutField(paddr,DBR_LONG,
&(((struct dbr_gr_long *)psrc)->value),(long)no_elements);
&(((const struct dbr_gr_long *)psrc)->value),(long)no_elements);
break;
case(oldDBR_GR_DOUBLE):
status = dbPutField(paddr,DBR_DOUBLE,
&(((struct dbr_gr_double *)psrc)->value),(long)no_elements);
&(((const struct dbr_gr_double *)psrc)->value),(long)no_elements);
break;
case(oldDBR_CTRL_STRING):
/* no struct dbr_ctrl_string - use dbr_sts_string instead */
status = dbPutField(paddr,DBR_STRING,
((struct dbr_sts_string *)psrc)->value,(long)no_elements);
((const struct dbr_sts_string *)psrc)->value,(long)no_elements);
break;
/* case(oldDBR_CTRL_INT): */
case(oldDBR_CTRL_SHORT):
status = dbPutField(paddr,DBR_SHORT,
&(((struct dbr_ctrl_short *)psrc)->value),(long)no_elements);
&(((const struct dbr_ctrl_short *)psrc)->value),(long)no_elements);
break;
case(oldDBR_CTRL_FLOAT):
status = dbPutField(paddr,DBR_FLOAT,
&(((struct dbr_ctrl_float *)psrc)->value),(long)no_elements);
&(((const struct dbr_ctrl_float *)psrc)->value),(long)no_elements);
break;
case(oldDBR_CTRL_ENUM):
status = dbPutField(paddr,DBR_ENUM,
&(((struct dbr_ctrl_enum *)psrc)->value),(long)no_elements);
&(((const struct dbr_ctrl_enum *)psrc)->value),(long)no_elements);
break;
case(oldDBR_CTRL_CHAR):
status = dbPutField(paddr,DBR_UCHAR,
&(((struct dbr_ctrl_char *)psrc)->value),(long)no_elements);
&(((const struct dbr_ctrl_char *)psrc)->value),(long)no_elements);
break;
case(oldDBR_CTRL_LONG):
status = dbPutField(paddr,DBR_LONG,
&(((struct dbr_ctrl_long *)psrc)->value),(long)no_elements);
&(((const struct dbr_ctrl_long *)psrc)->value),(long)no_elements);
break;
case(oldDBR_CTRL_DOUBLE):
status = dbPutField(paddr,DBR_DOUBLE,
&(((struct dbr_ctrl_double *)psrc)->value),(long)no_elements);
&(((const struct dbr_ctrl_double *)psrc)->value),(long)no_elements);
break;
case(oldDBR_PUT_ACKT):
status = dbPutField(paddr,DBR_PUT_ACKT,psrc,(long)no_elements);

Some files were not shown because too many files have changed in this diff Show More