Fix spelling errors
Most errors found with: codespell -L cach,thst,odly,aslo,parm,parms,inpu,ges,prset,pevent,ptd,pring,valu,noo,noe,ned,inout,ro,siz,froms,nd,fo,singl,sart,multy,tthe,allong,ment,inate,nodel,tring,alse,ture,thi,wille,numer Some more manually found (its -> it's) c++20: Do not use apostrophe (e.g. can't) in unquoted #error message
This commit is contained in:
@@ -65,7 +65,7 @@ LOADABLE_SHRLIB_LDFLAGS = -shared -fPIC -Wl,-h$@
|
|||||||
|
|
||||||
GNU_LDLIBS_YES = -lgcc
|
GNU_LDLIBS_YES = -lgcc
|
||||||
|
|
||||||
# Use compiler flags to generate header dependancies files
|
# Use compiler flags to generate header dependencies files
|
||||||
HDEPENDS_METHOD = COMP
|
HDEPENDS_METHOD = COMP
|
||||||
HDEPENDS_COMPFLAGS = -MM -MF $@
|
HDEPENDS_COMPFLAGS = -MM -MF $@
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
# These rules apply to these Makefile-variables:
|
# These rules apply to these Makefile-variables:
|
||||||
# USR_CFLAGS C flags
|
# USR_CFLAGS C flags
|
||||||
# USR_CXXFLAGS C++ flags
|
# USR_CXXFLAGS C++ flags
|
||||||
# USR_CPPFLAGS c preprocesser flags
|
# USR_CPPFLAGS c preprocessor flags
|
||||||
# SRCS source files for building libraries and prods
|
# SRCS source files for building libraries and prods
|
||||||
# USR_SRCS source files for building libraries and prods
|
# USR_SRCS source files for building libraries and prods
|
||||||
# PROD_SRCS source files for building prods
|
# PROD_SRCS source files for building prods
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ CMPLR_SRC_DIRS += . $(foreach dir, .. $(SRC_DIRS), \
|
|||||||
ALL_SRC_DIRS = $(CMPLR_SRC_DIRS) $(OS_SRC_DIRS) $(GENERIC_SRC_DIRS)
|
ALL_SRC_DIRS = $(CMPLR_SRC_DIRS) $(OS_SRC_DIRS) $(GENERIC_SRC_DIRS)
|
||||||
|
|
||||||
#--------------------------------------------------
|
#--------------------------------------------------
|
||||||
# Directory for OS independant build created files
|
# Directory for OS independent build created files
|
||||||
COMMON_DIR = ../O.Common
|
COMMON_DIR = ../O.Common
|
||||||
|
|
||||||
# compile line include directories
|
# compile line include directories
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ DBD += $(foreach type, $(CROSS_TARGET_OS_TYPES), $(DBD_$(type)))
|
|||||||
# DBD_solaris += abcSolaris.dbd
|
# DBD_solaris += abcSolaris.dbd
|
||||||
#
|
#
|
||||||
# ---------------------------------------------------
|
# ---------------------------------------------------
|
||||||
# DBD concatination files
|
# DBD concatenation files
|
||||||
|
|
||||||
COMMON_DBDCATS += $(addprefix $(COMMON_DIR)/,$(DBDCAT))
|
COMMON_DBDCATS += $(addprefix $(COMMON_DIR)/,$(DBDCAT))
|
||||||
DBDCAT_SOURCES += $(foreach file, $($*_DBD), $(DBDCAT_SOURCE) )
|
DBDCAT_SOURCES += $(foreach file, $($*_DBD), $(DBDCAT_SOURCE) )
|
||||||
@@ -194,7 +194,7 @@ ifneq (,$(strip $(DBDDEPENDS_FILES)))
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
#---------------------------------------------------------------
|
#---------------------------------------------------------------
|
||||||
# build dependancies, clean rule
|
# build dependencies, clean rule
|
||||||
|
|
||||||
inc: $(COMMON_INC) $(INSTALL_INC) $(COMMON_DBDS) $(COMMON_DBDCATS) \
|
inc: $(COMMON_INC) $(INSTALL_INC) $(COMMON_DBDS) $(COMMON_DBDCATS) \
|
||||||
$(INSTALL_DBDS) $(INSTALL_DBD_INSTALLS) $(COMMON_DOCS)
|
$(INSTALL_DBDS) $(INSTALL_DBD_INSTALLS) $(COMMON_DOCS)
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ ifneq ($(RELEASE_CFG_DIR_RULES),)
|
|||||||
include $(RELEASE_CFG_DIR_RULES)
|
include $(RELEASE_CFG_DIR_RULES)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Create EPICS_HOST_ARCH dependancies for GNU make -j option.
|
# Create EPICS_HOST_ARCH dependencies for GNU make -j option.
|
||||||
# Needed in dirs where EPICS_HOST_ARCH build creates a tool used in
|
# Needed in dirs where EPICS_HOST_ARCH build creates a tool used in
|
||||||
# cross arch builds
|
# cross arch builds
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ $(foreach dir, $(DIRS), $(dir)$(DIVIDER)install): \
|
|||||||
rebuild: $(foreach dir, $(DIRS), $(dir)$(DIVIDER)install)
|
rebuild: $(foreach dir, $(DIRS), $(dir)$(DIVIDER)install)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Create directory dependancies lines for GNU make -j option
|
# Create directory dependencies lines for GNU make -j option
|
||||||
# Only works with GNU make 3.81 or later (uses eval function)
|
# Only works with GNU make 3.81 or later (uses eval function)
|
||||||
define DEP_template1
|
define DEP_template1
|
||||||
$(1): $$($(1)_DEPEND_DIRS)
|
$(1): $$($(1)_DEPEND_DIRS)
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ INC = file.h
|
|||||||
# Platform specific files can also be put in
|
# Platform specific files can also be put in
|
||||||
# separate os/OS_CLASS directories!
|
# separate os/OS_CLASS directories!
|
||||||
#
|
#
|
||||||
# For almost every file the seach order is:
|
# For almost every file the search order is:
|
||||||
# ./os/OS_CLASS
|
# ./os/OS_CLASS
|
||||||
# ./os/generic
|
# ./os/generic
|
||||||
# .
|
# .
|
||||||
@@ -136,11 +136,11 @@ PROD_SRCS = ppp.c qqq.c
|
|||||||
a_file_SRCS = aa.c bb.c
|
a_file_SRCS = aa.c bb.c
|
||||||
|
|
||||||
#
|
#
|
||||||
# EPICS libs needed to link PROD, TESTPROD and sharable library
|
# EPICS libs needed to link PROD, TESTPROD and shareable library
|
||||||
#
|
#
|
||||||
# note that DLL_LIBS (the libraries needed to link a shareable
|
# note that DLL_LIBS (the libraries needed to link a shareable
|
||||||
# library) is created by default from the PROD/SYS libraries specified
|
# library) is created by default from the PROD/SYS libraries specified
|
||||||
# below minus the name of the sharable library (LIBRARY)
|
# below minus the name of the shareable library (LIBRARY)
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# ---------- libraries for a specific product pppp
|
# ---------- libraries for a specific product pppp
|
||||||
@@ -169,7 +169,7 @@ USR_LIBS_DEFAULT = foolib
|
|||||||
USR_LIBS_WIN32 = -nil-
|
USR_LIBS_WIN32 = -nil-
|
||||||
foolib_DIR = $(FOO_LIB)
|
foolib_DIR = $(FOO_LIB)
|
||||||
|
|
||||||
# system libs needed to link PROD, TESTPROD and sharable library
|
# system libs needed to link PROD, TESTPROD and shareable library
|
||||||
#
|
#
|
||||||
# ---------- system libraries for all products
|
# ---------- system libraries for all products
|
||||||
# for all systems:
|
# for all systems:
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ INSTALL_SHRLIB = $(INSTALL_BIN)
|
|||||||
|
|
||||||
|
|
||||||
#--------------------------------------------------
|
#--------------------------------------------------
|
||||||
# Products dependancy definitions
|
# Products dependency definitions
|
||||||
|
|
||||||
PROD_DEPLIBS = $(foreach lib, $(PROD_LIBS) $(USR_LIBS), \
|
PROD_DEPLIBS = $(foreach lib, $(PROD_LIBS) $(USR_LIBS), \
|
||||||
$(firstword $(wildcard \
|
$(firstword $(wildcard \
|
||||||
@@ -247,10 +247,10 @@ PROD_LDLIBS += $(STATIC_LDLIBS) \
|
|||||||
$(LDLIBS_SHARED_$(SHARED_LIBRARIES))))
|
$(LDLIBS_SHARED_$(SHARED_LIBRARIES))))
|
||||||
|
|
||||||
#--------------------------------------------------
|
#--------------------------------------------------
|
||||||
# Libraries dependancy definitions
|
# Libraries dependency definitions
|
||||||
|
|
||||||
# libs that we need to link the DLL with
|
# libs that we need to link the DLL with
|
||||||
# (it isnt necessary to rebuild the dll if these change)
|
# (it isn't necessary to rebuild the dll if these change)
|
||||||
|
|
||||||
SHRLIB_DEPLIBS = $(foreach lib, $(LIB_LIBS) $(USR_LIBS), \
|
SHRLIB_DEPLIBS = $(foreach lib, $(LIB_LIBS) $(USR_LIBS), \
|
||||||
$(firstword $(wildcard \
|
$(firstword $(wildcard \
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# Site specific definitions for linux-x86 host - linux-x86 target builds
|
# Site specific definitions for linux-x86 host - linux-x86 target builds
|
||||||
#-------------------------------------------------------
|
#-------------------------------------------------------
|
||||||
|
|
||||||
# Uncomment the followings lines to build with CLANG instead of GCC.
|
# Uncomment the following lines to build with CLANG instead of GCC.
|
||||||
#
|
#
|
||||||
#GNU = NO
|
#GNU = NO
|
||||||
#CMPLR_CLASS = clang
|
#CMPLR_CLASS = clang
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# Site specific definitions for linux-x86_64 host - linux-x86_64 target builds
|
# Site specific definitions for linux-x86_64 host - linux-x86_64 target builds
|
||||||
#-------------------------------------------------------
|
#-------------------------------------------------------
|
||||||
|
|
||||||
# Uncomment the followings lines to build with CLANG instead of GCC.
|
# Uncomment the following lines to build with CLANG instead of GCC.
|
||||||
#
|
#
|
||||||
#GNU = NO
|
#GNU = NO
|
||||||
#CMPLR_CLASS = clang
|
#CMPLR_CLASS = clang
|
||||||
|
|||||||
@@ -1105,7 +1105,7 @@ HTML_STYLESHEET =
|
|||||||
# cascading style sheets that are included after the standard style sheets
|
# cascading style sheets that are included after the standard style sheets
|
||||||
# created by doxygen. Using this option one can overrule certain style aspects.
|
# created by doxygen. Using this option one can overrule certain style aspects.
|
||||||
# This is preferred over using HTML_STYLESHEET since it does not replace the
|
# This is preferred over using HTML_STYLESHEET since it does not replace the
|
||||||
# standard style sheet and is therefor more robust against future updates.
|
# standard style sheet and is therefore more robust against future updates.
|
||||||
# Doxygen will copy the style sheet files to the output directory.
|
# Doxygen will copy the style sheet files to the output directory.
|
||||||
# Note: The order of the extra stylesheet files is of importance (e.g. the last
|
# Note: The order of the extra stylesheet files is of importance (e.g. the last
|
||||||
# stylesheet in the list overrules the setting of the previous ones in the
|
# stylesheet in the list overrules the setting of the previous ones in the
|
||||||
@@ -1648,8 +1648,8 @@ EXTRA_PACKAGES =
|
|||||||
# Note: Only use a user-defined header if you know what you are doing! The
|
# Note: Only use a user-defined header if you know what you are doing! The
|
||||||
# following commands have a special meaning inside the header: $title,
|
# following commands have a special meaning inside the header: $title,
|
||||||
# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
|
# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
|
||||||
# $projectbrief, $projectlogo. Doxygen will replace $title with the empy string,
|
# $projectbrief, $projectlogo. Doxygen will replace $title with the empty string,
|
||||||
# for the replacement values of the other commands the user is refered to
|
# for the replacement values of the other commands the user is referred to
|
||||||
# HTML_HEADER.
|
# HTML_HEADER.
|
||||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||||
|
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ parameter with one called `EPICS_TZ` and a routine for VxWorks that calculates
|
|||||||
the `TIMEZONE` environment variable from the current `TZ` value. This routine
|
the `TIMEZONE` environment variable from the current `TZ` value. This routine
|
||||||
will be run once at start-up, when the EPICS clock has synchronized to its NTP
|
will be run once at start-up, when the EPICS clock has synchronized to its NTP
|
||||||
server. The calculations it contains were worked out and donated to EPICS by
|
server. The calculations it contains were worked out and donated to EPICS by
|
||||||
Larry Hoff in 2009; it is unforunate that it has taken 10 years for them to be
|
Larry Hoff in 2009; it is unfortunate that it has taken 10 years for them to be
|
||||||
integrated into Base.
|
integrated into Base.
|
||||||
|
|
||||||
The default value for the `EPICS_TZ` environment parameter is set in the Base
|
The default value for the `EPICS_TZ` environment parameter is set in the Base
|
||||||
@@ -521,7 +521,7 @@ a Windows system and an IOC or PCAS server is started, the IOC's attempt to
|
|||||||
bind a TCP socket to the CA server port number fails, but Windows returns a
|
bind a TCP socket to the CA server port number fails, but Windows returns a
|
||||||
different error status value than the IOC is expecting in that circumstance
|
different error status value than the IOC is expecting in that circumstance
|
||||||
(because the National Instruments code requests exclusive use of that port,
|
(because the National Instruments code requests exclusive use of that port,
|
||||||
unlike the EPICS code) so the IOC fails to start properly. The relevent EPICS
|
unlike the EPICS code) so the IOC fails to start properly. The relevant EPICS
|
||||||
bind() checks have now been updated so the IOC will request that a dynamic port
|
bind() checks have now been updated so the IOC will request that a dynamic port
|
||||||
number be allocated for this TCP socket instead when this happens.
|
number be allocated for this TCP socket instead when this happens.
|
||||||
|
|
||||||
@@ -619,7 +619,7 @@ static versions of the compiler support libraries have now been moved into the
|
|||||||
The `iocInit` code now performs a sanity check of the current time
|
The `iocInit` code now performs a sanity check of the current time
|
||||||
returned by the generalTime subsystem and will print a warning if the wall-clock
|
returned by the generalTime subsystem and will print a warning if the wall-clock
|
||||||
time returned has not been initialized yet. This is just a warning message; when
|
time returned has not been initialized yet. This is just a warning message; when
|
||||||
a time provider does synchonize the IOC will subsequently pick up and use the
|
a time provider does synchronize the IOC will subsequently pick up and use the
|
||||||
correct time. This check code also primes the registered event system provider
|
correct time. This check code also primes the registered event system provider
|
||||||
if there is one so the `epicsTimeGetEventInt()` routine will work on IOCs
|
if there is one so the `epicsTimeGetEventInt()` routine will work on IOCs
|
||||||
that ask for event time within an interrupt service routine.
|
that ask for event time within an interrupt service routine.
|
||||||
@@ -642,7 +642,7 @@ change will not cause the IOC to see time going backwards.
|
|||||||
### Microsoft Visual Studio builds
|
### Microsoft Visual Studio builds
|
||||||
|
|
||||||
The build configuration files for builds using the Microsoft compilers have been
|
The build configuration files for builds using the Microsoft compilers have been
|
||||||
updated, although there should be no noticable difference at most sites. One
|
updated, although there should be no noticeable difference at most sites. One
|
||||||
extra compiler warning is now being suppressed for C++ code, `C4344: behavior
|
extra compiler warning is now being suppressed for C++ code, `C4344: behavior
|
||||||
change: use of explicit template arguments results in ...` which is gratuitous
|
change: use of explicit template arguments results in ...` which is gratuitous
|
||||||
and was appearing frequently in builds of the EPICS V4 modules.
|
and was appearing frequently in builds of the EPICS V4 modules.
|
||||||
|
|||||||
@@ -661,7 +661,7 @@ the `DB_OPT` build configuration variable.
|
|||||||
|
|
||||||
The compressRecord has a new field `BALG` which can select between FIFO
|
The compressRecord has a new field `BALG` which can select between FIFO
|
||||||
(append) and LIFO (prepend) ordering for insertion of new elements. FIFO
|
(append) and LIFO (prepend) ordering for insertion of new elements. FIFO
|
||||||
ordering is the default, matching the behviour of previous versions.
|
ordering is the default, matching the behaviour of previous versions.
|
||||||
|
|
||||||
### Valgrind Instrumentation
|
### Valgrind Instrumentation
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ been split into 4 separate Git repositories. External modules should build
|
|||||||
against this new structure with little or no changes needed, except that some
|
against this new structure with little or no changes needed, except that some
|
||||||
allowance may be needed for the merging of the V4 modules.
|
allowance may be needed for the merging of the V4 modules.
|
||||||
|
|
||||||
There should be rather more description and documantation of these changes
|
There should be rather more description and documentation of these changes
|
||||||
than is currently available, but as developers we generally much prefer to
|
than is currently available, but as developers we generally much prefer to
|
||||||
write code than documentation. Send questions to the tech-talk mailing list
|
write code than documentation. Send questions to the tech-talk mailing list
|
||||||
and we'll be happy to try and answer them!
|
and we'll be happy to try and answer them!
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ A suggested form for IOC shell commands is:
|
|||||||
|
|
||||||
### Relocatable Builds
|
### Relocatable Builds
|
||||||
|
|
||||||
Allows built trees to be copied or moved without invalidating RPATH entires.
|
Allows built trees to be copied or moved without invalidating RPATH entries.
|
||||||
|
|
||||||
The `LINKER_USE_RPATH` Makefile variable (see `configure/CONFIG_SITE`) may be
|
The `LINKER_USE_RPATH` Makefile variable (see `configure/CONFIG_SITE`) may be
|
||||||
set to `YES`, `NO`, and a new third option `ORIGIN`. This is limited to
|
set to `YES`, `NO`, and a new third option `ORIGIN`. This is limited to
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ This also fixes [lauchpad bug #1714455](https://bugs.launchpad.net/bugs/1714455)
|
|||||||
declared in epicsString.h no longer accept octal escaped characters such as
|
declared in epicsString.h no longer accept octal escaped characters such as
|
||||||
`\123` or `\41`.
|
`\123` or `\41`.
|
||||||
- The routine `epicsStrnEscapedFromRaw()` now generates hex
|
- The routine `epicsStrnEscapedFromRaw()` now generates hex
|
||||||
excaped characters for unprintable characters such as `\x1f`.
|
escaped characters for unprintable characters such as `\x1f`.
|
||||||
- Hex escape character sequences `\xXX` must now contain exactly 2 hex digits.
|
- Hex escape character sequences `\xXX` must now contain exactly 2 hex digits.
|
||||||
- An escape sequence `\0` now generates a zero byte in the raw string, but the
|
- An escape sequence `\0` now generates a zero byte in the raw string, but the
|
||||||
other digits `1-9` should not appear after a back-slash.
|
other digits `1-9` should not appear after a back-slash.
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ with the TCP port number selected.
|
|||||||
|
|
||||||
DBD files generated by the `dbdExpand.pl` script are now sorted within each
|
DBD files generated by the `dbdExpand.pl` script are now sorted within each
|
||||||
item type by the primary name of the item. The result should resolve any
|
item type by the primary name of the item. The result should resolve any
|
||||||
issues with reproducable builds. No option is provided to prevent the sorting,
|
issues with reproducible builds. No option is provided to prevent the sorting,
|
||||||
previously the order was essentially random and varied each time.
|
previously the order was essentially random and varied each time.
|
||||||
|
|
||||||
### `dbExpand.pl` sorts records by name
|
### `dbExpand.pl` sorts records by name
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ record(bi, "bit1") {
|
|||||||
|
|
||||||
### ANSI escapes in stderr
|
### ANSI escapes in stderr
|
||||||
|
|
||||||
ANSI escape charactor sequences may now be printed to the stderr stream.
|
ANSI escape character sequences may now be printed to the stderr stream.
|
||||||
These escapes will appear in logs captured from that stream.
|
These escapes will appear in logs captured from that stream.
|
||||||
Tools which parse and/or render these logs may need to be adjusted to
|
Tools which parse and/or render these logs may need to be adjusted to
|
||||||
either strip out the escapes, or to translate them into markup.
|
either strip out the escapes, or to translate them into markup.
|
||||||
@@ -227,7 +227,7 @@ The pvDatabase module was updated to version 4.7.1:
|
|||||||
|
|
||||||
`_[distributor=group:<group id>;set:<set_id>;trigger:<field_name>;updates:<n_updates>;mode:<update_mode>]`
|
`_[distributor=group:<group id>;set:<set_id>;trigger:<field_name>;updates:<n_updates>;mode:<update_mode>]`
|
||||||
|
|
||||||
The plugin parameters are optional and are described bellow:
|
The plugin parameters are optional and are described below:
|
||||||
|
|
||||||
- group: this parameter indicates a group that client application belongs to (default value: "default"); groups of clients are completely independent of each other
|
- group: this parameter indicates a group that client application belongs to (default value: "default"); groups of clients are completely independent of each other
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ although it doesn't currently cover the new processes added to epics-base.
|
|||||||
Much of the documentation generated from .dbd.pod files at build time is now
|
Much of the documentation generated from .dbd.pod files at build time is now
|
||||||
also being converted into MarkDown (.md) files and installed into the top-level
|
also being converted into MarkDown (.md) files and installed into the top-level
|
||||||
`doc` directory. Some users might find it quicker to look up information about a
|
`doc` directory. Some users might find it quicker to look up information about a
|
||||||
record type by opening these files in a text editor intead of opening a browser
|
record type by opening these files in a text editor instead of opening a browser
|
||||||
and loading the HTML versions or finding and opening the files from the EPICS
|
and loading the HTML versions or finding and opening the files from the EPICS
|
||||||
Documentation site.
|
Documentation site.
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@ record("#", "unwanted") {}
|
|||||||
|
|
||||||
### Only keep readline history for interactive sessions
|
### Only keep readline history for interactive sessions
|
||||||
|
|
||||||
Previously, all IOCsh commands were persisited in the libreadline history
|
Previously, all IOCsh commands were persisted in the libreadline history
|
||||||
(when readline support is included).
|
(when readline support is included).
|
||||||
Going forward, only interactive commands are saved.
|
Going forward, only interactive commands are saved.
|
||||||
|
|
||||||
@@ -111,7 +111,7 @@ already be conditionally casting to/from the appropriate type.
|
|||||||
|
|
||||||
### Fix issues with `_FORTIFY_SOURCE=3`
|
### Fix issues with `_FORTIFY_SOURCE=3`
|
||||||
|
|
||||||
This release fixes the false positives failures whhen building with `_FORTIFY_SOURCE` level 3.
|
This release fixes the false positives failures when building with `_FORTIFY_SOURCE` level 3.
|
||||||
The override introduced in 7.0.8.1 has been removed.
|
The override introduced in 7.0.8.1 has been removed.
|
||||||
|
|
||||||
### Other
|
### Other
|
||||||
|
|||||||
@@ -419,7 +419,7 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
<tr>
|
<tr>
|
||||||
<td><input type="checkbox"></td>
|
<td><input type="checkbox"></td>
|
||||||
<td>Website Editor</td>
|
<td>Website Editor</td>
|
||||||
<td>Link to the release webpage from other relevent areas of the
|
<td>Link to the release webpage from other relevant areas of the
|
||||||
website - update front page and sidebars.</td>
|
website - update front page and sidebars.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ This release incorporates [PR #558](https://github.com/epics-base/epics-base/pul
|
|||||||
- it replaces the community [`afterInit`](https://github.com/paulscherrerinstitute/iocsh_utilities/blob/master/afterInit.c) and [`doAfterIocInit`](https://github.com/epics-modules/std/blob/master/stdApp/src/delayCmd.cpp) IOC shell commands,
|
- it replaces the community [`afterInit`](https://github.com/paulscherrerinstitute/iocsh_utilities/blob/master/afterInit.c) and [`doAfterIocInit`](https://github.com/epics-modules/std/blob/master/stdApp/src/delayCmd.cpp) IOC shell commands,
|
||||||
- community usage examples:
|
- community usage examples:
|
||||||
- [`pf4filters.iocsh`](https://github.com/epics-modules/optics/blob/master/opticsApp/iocsh/pf4filters.iocsh) - enable/disable with a single comment ([full description](https://github.com/epics-base/epics-base/pull/558#issuecomment-2430057167))
|
- [`pf4filters.iocsh`](https://github.com/epics-modules/optics/blob/master/opticsApp/iocsh/pf4filters.iocsh) - enable/disable with a single comment ([full description](https://github.com/epics-base/epics-base/pull/558#issuecomment-2430057167))
|
||||||
- [ALS-U autosave managment](https://github.com/epics-base/epics-base/pull/558#issuecomment-2430447220)
|
- [ALS-U autosave management](https://github.com/epics-base/epics-base/pull/558#issuecomment-2430447220)
|
||||||
|
|
||||||
#### Features
|
#### Features
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ prints.
|
|||||||
- The default IOC Shell prompt is now displayed in green; this color can be
|
- The default IOC Shell prompt is now displayed in green; this color can be
|
||||||
modified in the `configure/CONFIG_SITE_ENV` file for all targets, or set for
|
modified in the `configure/CONFIG_SITE_ENV` file for all targets, or set for
|
||||||
a specific target by adding a `configure/os/CONFIG_SITE_ENV.<arch>` file.
|
a specific target by adding a `configure/os/CONFIG_SITE_ENV.<arch>` file.
|
||||||
The value of the `IOCSH_PS1` environment paremeter in those files can use the
|
The value of the `IOCSH_PS1` environment parameter in those files can use the
|
||||||
`ANSI_ENV_*` and `ANSI_*()` color macros found in errlog.h to configure the
|
`ANSI_ENV_*` and `ANSI_*()` color macros found in errlog.h to configure the
|
||||||
appearance of the prompt. The C string literal concatenation syntax can be
|
appearance of the prompt. The C string literal concatenation syntax can be
|
||||||
used to construct the prompt string:
|
used to construct the prompt string:
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ in the file LICENSE that is included with this distribution.</span></p>
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="#Broadcast">Client and Server Broadcast Addresses Don't
|
<li><a href="#Broadcast">Client and Server Broadcast Addresses Don't
|
||||||
Match</a></li>
|
Match</a></li>
|
||||||
<li><a href="#Client">Client Isnt Configured to Use the Server's
|
<li><a href="#Client">Client Isn't Configured to Use the Server's
|
||||||
Port</a></li>
|
Port</a></li>
|
||||||
<li><a href="#Unicast">Unicast Addresses in the EPICS_CA_ADDR_LIST Does
|
<li><a href="#Unicast">Unicast Addresses in the EPICS_CA_ADDR_LIST Does
|
||||||
not Reliably Contact Servers Sharing the Same UDP Port on the Same
|
not Reliably Contact Servers Sharing the Same UDP Port on the Same
|
||||||
@@ -759,7 +759,7 @@ to respect the EPICS_CA_MAX_ARRAY_BYTES setting as described below instead.</p>
|
|||||||
<p>Starting with version R3.14 the environment variable
|
<p>Starting with version R3.14 the environment variable
|
||||||
EPICS_CA_MAX_ARRAY_BYTES determines the size of the largest array that may pass
|
EPICS_CA_MAX_ARRAY_BYTES determines the size of the largest array that may pass
|
||||||
through CA. Prior to this version only arrays smaller than 16k bytes could be
|
through CA. Prior to this version only arrays smaller than 16k bytes could be
|
||||||
transfered. The CA libraries maintains a free list of 16384 byte network
|
transferred. The CA libraries maintains a free list of 16384 byte network
|
||||||
buffers that are used for ordinary communication. If EPICS_CA_MAX_ARRAY_BYTES
|
buffers that are used for ordinary communication. If EPICS_CA_MAX_ARRAY_BYTES
|
||||||
is larger than 16384 then a second free list of larger data buffers is
|
is larger than 16384 then a second free list of larger data buffers is
|
||||||
established and used only after a client send its first large array request.</p>
|
established and used only after a client send its first large array request.</p>
|
||||||
@@ -1085,7 +1085,7 @@ to standard out.</p>
|
|||||||
|
|
||||||
<p>If a value is specified it is written to the PV. Next, the current value of
|
<p>If a value is specified it is written to the PV. Next, the current value of
|
||||||
the PV is converted to each of the many external data type that can be
|
the PV is converted to each of the many external data type that can be
|
||||||
specified at the CA client library interface, and each of these is formated and
|
specified at the CA client library interface, and each of these is formatted and
|
||||||
then output to the console.</p>
|
then output to the console.</p>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
@@ -1631,7 +1631,7 @@ stdout.</p>
|
|||||||
|
|
||||||
<p>The -s option allows to specify an interest level for calling Channel
|
<p>The -s option allows to specify an interest level for calling Channel
|
||||||
Access' internal report function <code>ca_client_status()</code>, that prints lots of
|
Access' internal report function <code>ca_client_status()</code>, that prints lots of
|
||||||
internal informations on stdout, including environment settings, used CA ports
|
internal information on stdout, including environment settings, used CA ports
|
||||||
etc.</p>
|
etc.</p>
|
||||||
|
|
||||||
<table border="1">
|
<table border="1">
|
||||||
@@ -1969,7 +1969,7 @@ that the request is sent call <code>ca_flush_io()</code> followed by
|
|||||||
|
|
||||||
<h3><a name="Problems">ENOBUFS Messages</a></h3>
|
<h3><a name="Problems">ENOBUFS Messages</a></h3>
|
||||||
|
|
||||||
<p>Many Berkley UNIX derived Internet Protocol (IP) kernels use a memory
|
<p>Many Berkeley UNIX derived Internet Protocol (IP) kernels use a memory
|
||||||
management scheme with a fixed sized low level memory allocation quantum called
|
management scheme with a fixed sized low level memory allocation quantum called
|
||||||
an "mbuf". Messages about "ENOBUFS" are an indication that your IP kernel is
|
an "mbuf". Messages about "ENOBUFS" are an indication that your IP kernel is
|
||||||
running low on mbuf buffers. An IP kernel mbuf starvation situation may lead to
|
running low on mbuf buffers. An IP kernel mbuf starvation situation may lead to
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ const char * ca_message_text []
|
|||||||
"Sorry, that feature is planned but not supported at this time",
|
"Sorry, that feature is planned but not supported at this time",
|
||||||
"The supplied string is unusually large",
|
"The supplied string is unusually large",
|
||||||
"The request was ignored because the specified channel is disconnected",
|
"The request was ignored because the specified channel is disconnected",
|
||||||
"The data type specifed is invalid",
|
"The data type specified is invalid",
|
||||||
|
|
||||||
"Remote Channel not found",
|
"Remote Channel not found",
|
||||||
"Unable to locate all user specified channels",
|
"Unable to locate all user specified channels",
|
||||||
@@ -94,7 +94,7 @@ const char * ca_message_text []
|
|||||||
"The supplied string is empty",
|
"The supplied string is empty",
|
||||||
"Unable to spawn the CA repeater thread- auto reconnect will fail",
|
"Unable to spawn the CA repeater thread- auto reconnect will fail",
|
||||||
"No channel id match for search reply- search reply ignored",
|
"No channel id match for search reply- search reply ignored",
|
||||||
"Reseting dead connection- will try to reconnect",
|
"Resetting dead connection- will try to reconnect",
|
||||||
"Server (IOC) has fallen behind or is not responding- still waiting",
|
"Server (IOC) has fallen behind or is not responding- still waiting",
|
||||||
|
|
||||||
"No internet interface with broadcast available",
|
"No internet interface with broadcast available",
|
||||||
@@ -381,11 +381,11 @@ int epicsStdCall ca_clear_channel ( chid pChan )
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//
|
//
|
||||||
// we will definately stall out here if all of the
|
// we will definitely stall out here if all of the
|
||||||
// following are true
|
// following are true
|
||||||
//
|
//
|
||||||
// o user creates non-preemptive mode client library context
|
// o user creates non-preemptive mode client library context
|
||||||
// o user doesnt periodically call a ca function
|
// o user doesn't periodically call a ca function
|
||||||
// o user calls this function from an auxiliary thread
|
// o user calls this function from an auxiliary thread
|
||||||
//
|
//
|
||||||
CallbackGuard cbGuard ( cac.cbMutex );
|
CallbackGuard cbGuard ( cac.cbMutex );
|
||||||
|
|||||||
@@ -844,7 +844,7 @@ void verifyBlockInPendIO ( chid chan, unsigned interestLevel )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( resp != -100 ) {
|
else if ( resp != -100 ) {
|
||||||
printf ( "CA didnt block for get to return?\n" );
|
printf ( "CA didn't block for get to return?\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
req = 1;
|
req = 1;
|
||||||
@@ -1739,7 +1739,7 @@ void arrayEventExceptionNotify ( struct event_handler_args args )
|
|||||||
if ( args.status == ECA_NORMAL ) {
|
if ( args.status == ECA_NORMAL ) {
|
||||||
printf (
|
printf (
|
||||||
"arrayEventExceptionNotify: expected "
|
"arrayEventExceptionNotify: expected "
|
||||||
"exception but didnt receive one against \"%s\" \n",
|
"exception but didn't receive one against \"%s\" \n",
|
||||||
ca_name ( args.chid ) );
|
ca_name ( args.chid ) );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -3233,7 +3233,7 @@ void verifyDisconnect (
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* if its a local channel and will never disconnect
|
* if its a local channel and will never disconnect
|
||||||
* then skip the portions of this test that cant be
|
* then skip the portions of this test that can't be
|
||||||
* completed.
|
* completed.
|
||||||
*/
|
*/
|
||||||
if ( ca_get_ioc_connection_count () == 0 ) {
|
if ( ca_get_ioc_connection_count () == 0 ) {
|
||||||
@@ -3307,7 +3307,7 @@ void verifyContextRundownFlush ( const char * pName, unsigned interestLevel )
|
|||||||
|
|
||||||
status = ca_create_channel ( pName, 0, 0, 0, & chan );
|
status = ca_create_channel ( pName, 0, 0, 0, & chan );
|
||||||
/*
|
/*
|
||||||
* currently in-memory channels cant be used with this test
|
* currently in-memory channels can't be used with this test
|
||||||
* !!!! FIX ME, FIX ME, FIX ME, FIX ME !!!!
|
* !!!! FIX ME, FIX ME, FIX ME, FIX ME !!!!
|
||||||
*/
|
*/
|
||||||
if ( status != ECA_UNAVAILINSERV ) {
|
if ( status != ECA_UNAVAILINSERV ) {
|
||||||
@@ -3335,7 +3335,7 @@ void verifyContextRundownFlush ( const char * pName, unsigned interestLevel )
|
|||||||
status = ca_create_channel ( pName, 0, 0, 0, & chan );
|
status = ca_create_channel ( pName, 0, 0, 0, & chan );
|
||||||
SEVCHK ( status, NULL );
|
SEVCHK ( status, NULL );
|
||||||
/*
|
/*
|
||||||
* currently in-memory channels cant be used with this test
|
* currently in-memory channels can't be used with this test
|
||||||
* !!!! FIX ME, FIX ME, FIX ME, FIX ME !!!!
|
* !!!! FIX ME, FIX ME, FIX ME, FIX ME !!!!
|
||||||
*/
|
*/
|
||||||
if ( status != ECA_UNAVAILINSERV ) {
|
if ( status != ECA_UNAVAILINSERV ) {
|
||||||
@@ -3379,7 +3379,7 @@ void verifyContextRundownChanStillExist (
|
|||||||
for ( i = 0; i < NELEMENTS ( chan ); i++ ) {
|
for ( i = 0; i < NELEMENTS ( chan ); i++ ) {
|
||||||
status = ca_create_channel ( pName, 0, 0, 0, & chan[i] );
|
status = ca_create_channel ( pName, 0, 0, 0, & chan[i] );
|
||||||
/*
|
/*
|
||||||
* currently in-memory channels cant be used with this test
|
* currently in-memory channels can't be used with this test
|
||||||
* !!!! FIX ME, FIX ME, FIX ME, FIX ME !!!!
|
* !!!! FIX ME, FIX ME, FIX ME, FIX ME !!!!
|
||||||
*/
|
*/
|
||||||
if ( status == ECA_UNAVAILINSERV ) {
|
if ( status == ECA_UNAVAILINSERV ) {
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ bool bhe::updatePeriod (
|
|||||||
this->beaconAnomalyNotify ( guard );
|
this->beaconAnomalyNotify ( guard );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* this is the 2nd beacon seen. We cant tell about
|
* this is the 2nd beacon seen. We can't tell about
|
||||||
* the change in period at this point so we just
|
* the change in period at this point so we just
|
||||||
* initialize the average period and return.
|
* initialize the average period and return.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* These port numbers are only used if the CA repeater and
|
* These port numbers are only used if the CA repeater and
|
||||||
* CA server port numbers cant be obtained from the EPICS
|
* CA server port numbers can't be obtained from the EPICS
|
||||||
* environment variables "EPICS_CA_REPEATER_PORT" and
|
* environment variables "EPICS_CA_REPEATER_PORT" and
|
||||||
* "EPICS_CA_SERVER_PORT"
|
* "EPICS_CA_SERVER_PORT"
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -775,11 +775,11 @@ LIBCA_API int epicsStdCall ca_clear_subscription ( evid pMon )
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//
|
//
|
||||||
// we will definately stall out here if all of the
|
// we will definitely stall out here if all of the
|
||||||
// following are true
|
// following are true
|
||||||
//
|
//
|
||||||
// o user creates non-preemptive mode client library context
|
// o user creates non-preemptive mode client library context
|
||||||
// o user doesnt periodically call a ca function
|
// o user doesn't periodically call a ca function
|
||||||
// o user calls this function from an auxiliary thread
|
// o user calls this function from an auxiliary thread
|
||||||
//
|
//
|
||||||
CallbackGuard cbGuard ( cac.cbMutex );
|
CallbackGuard cbGuard ( cac.cbMutex );
|
||||||
|
|||||||
@@ -7,4 +7,4 @@
|
|||||||
If a value is specified it is written to the PV. Next, the current value
|
If a value is specified it is written to the PV. Next, the current value
|
||||||
of the PV is converted to each of the many external data type that can
|
of the PV is converted to each of the many external data type that can
|
||||||
be specified at the CA client library interface, and each of these is
|
be specified at the CA client library interface, and each of these is
|
||||||
formated and then output to the console.
|
formatted and then output to the console.
|
||||||
|
|||||||
@@ -1461,7 +1461,7 @@ LIBCA_API unsigned epicsStdCall ca_get_host_name ( chid pChan,
|
|||||||
char *pBuf, unsigned bufLength );
|
char *pBuf, unsigned bufLength );
|
||||||
|
|
||||||
/** \brief Return the minor protocol version number used by the host to
|
/** \brief Return the minor protocol version number used by the host to
|
||||||
* which a channel is cuurently connected.
|
* which a channel is currently connected.
|
||||||
*
|
*
|
||||||
* \param[in] pChan channel identifier
|
* \param[in] pChan channel identifier
|
||||||
* \returns The minor protocol version number.
|
* \returns The minor protocol version number.
|
||||||
|
|||||||
@@ -108,7 +108,7 @@
|
|||||||
#define ECA_STRTOBIG DEFMSG(CA_K_WARNING, 12) /* defunct */
|
#define ECA_STRTOBIG DEFMSG(CA_K_WARNING, 12) /* defunct */
|
||||||
/// The request was ignored because the specified channel is disconnected
|
/// The request was ignored because the specified channel is disconnected
|
||||||
#define ECA_DISCONNCHID DEFMSG(CA_K_ERROR, 13) /* defunct */
|
#define ECA_DISCONNCHID DEFMSG(CA_K_ERROR, 13) /* defunct */
|
||||||
/// The data type specifed is invalid
|
/// The data type specified is invalid
|
||||||
#define ECA_BADTYPE DEFMSG(CA_K_ERROR, 14)
|
#define ECA_BADTYPE DEFMSG(CA_K_ERROR, 14)
|
||||||
/// Remote Channel not found
|
/// Remote Channel not found
|
||||||
#define ECA_CHIDNOTFND DEFMSG(CA_K_INFO, 15) /* defunct */
|
#define ECA_CHIDNOTFND DEFMSG(CA_K_INFO, 15) /* defunct */
|
||||||
@@ -146,7 +146,7 @@
|
|||||||
#define ECA_NEWADDR DEFMSG(CA_K_WARNING, 31) /* defunct */
|
#define ECA_NEWADDR DEFMSG(CA_K_WARNING, 31) /* defunct */
|
||||||
/// New or resumed network connection
|
/// New or resumed network connection
|
||||||
#define ECA_NEWCONN DEFMSG(CA_K_INFO, 32) /* defunct */
|
#define ECA_NEWCONN DEFMSG(CA_K_INFO, 32) /* defunct */
|
||||||
/// Specified task isnt a member of a CA context
|
/// Specified task isn't a member of a CA context
|
||||||
#define ECA_NOCACTX DEFMSG(CA_K_WARNING, 33) /* defunct */
|
#define ECA_NOCACTX DEFMSG(CA_K_WARNING, 33) /* defunct */
|
||||||
/// Attempt to use defunct CA feature failed
|
/// Attempt to use defunct CA feature failed
|
||||||
#define ECA_DEFUNCT DEFMSG(CA_K_FATAL, 34) /* defunct */
|
#define ECA_DEFUNCT DEFMSG(CA_K_FATAL, 34) /* defunct */
|
||||||
@@ -156,7 +156,7 @@
|
|||||||
#define ECA_NOREPEATER DEFMSG(CA_K_WARNING, 36) /* defunct */
|
#define ECA_NOREPEATER DEFMSG(CA_K_WARNING, 36) /* defunct */
|
||||||
/// No channel id match for search reply- search reply ignored
|
/// No channel id match for search reply- search reply ignored
|
||||||
#define ECA_NOCHANMSG DEFMSG(CA_K_WARNING, 37) /* defunct */
|
#define ECA_NOCHANMSG DEFMSG(CA_K_WARNING, 37) /* defunct */
|
||||||
/// Reseting dead connection- will try to reconnect
|
/// Resetting dead connection- will try to reconnect
|
||||||
#define ECA_DLCKREST DEFMSG(CA_K_WARNING, 38) /* defunct */
|
#define ECA_DLCKREST DEFMSG(CA_K_WARNING, 38) /* defunct */
|
||||||
/// Server (IOC) has fallen behind or is not responding- still waiting
|
/// Server (IOC) has fallen behind or is not responding- still waiting
|
||||||
#define ECA_SERVBEHIND DEFMSG(CA_K_WARNING, 39) /* defunct */
|
#define ECA_SERVBEHIND DEFMSG(CA_K_WARNING, 39) /* defunct */
|
||||||
|
|||||||
@@ -24,14 +24,14 @@
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Requirements:
|
// Requirements:
|
||||||
// 1) Allow sufficent headroom so that users will be able to perform
|
// 1) Allow sufficient headroom so that users will be able to perform
|
||||||
// a reasonable amount of IO within CA callbacks without experiencing
|
// a reasonable amount of IO within CA callbacks without experiencing
|
||||||
// a push/pull deadlock. If a potential push/pull deadlock situation
|
// a push/pull deadlock. If a potential push/pull deadlock situation
|
||||||
// occurs then detect and avoid it and provide diagnostic to the user
|
// occurs then detect and avoid it and provide diagnostic to the user
|
||||||
// via special status.
|
// via special status.
|
||||||
// 2) Return status to the user when there is insufficient memory to
|
// 2) Return status to the user when there is insufficient memory to
|
||||||
// queue a complete message.
|
// queue a complete message.
|
||||||
// 3) return status to the user when a message cant be flushed because
|
// 3) return status to the user when a message can't be flushed because
|
||||||
// a connection dropped.
|
// a connection dropped.
|
||||||
// 4) Do not allocate too much memory in exception situations (such as
|
// 4) Do not allocate too much memory in exception situations (such as
|
||||||
// after a circuit disconnect).
|
// after a circuit disconnect).
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
*
|
*
|
||||||
* 1) All routines in this file have an encode argument which
|
* 1) All routines in this file have an encode argument which
|
||||||
* determines if we are converting from the standard format to
|
* determines if we are converting from the standard format to
|
||||||
* the local format or vise versa. To date only float and double data
|
* the local format or vice versa. To date only float and double data
|
||||||
* types must be converted differently depending on the encode
|
* types must be converted differently depending on the encode
|
||||||
* argument - joh
|
* argument - joh
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ void nciu::connect ( unsigned nativeType,
|
|||||||
// the callback lock is also taken when a channel
|
// the callback lock is also taken when a channel
|
||||||
// disconnects to prevent a race condition with the
|
// disconnects to prevent a race condition with the
|
||||||
// code below - ie we hold the callback lock here
|
// code below - ie we hold the callback lock here
|
||||||
// so a channel cant be destroyed out from under us.
|
// so a channel can't be destroyed out from under us.
|
||||||
this->notify().connectNotify ( guard );
|
this->notify().connectNotify ( guard );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -625,7 +625,7 @@ unsigned channelNode::getSearchTimerIndex (
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw std::runtime_error (
|
throw std::runtime_error (
|
||||||
"channel was expected to be in a search timer, but wasnt" );;
|
"channel was expected to be in a search timer, but wasn't" );;
|
||||||
}
|
}
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ void netiiu::uninstallChanDueToSuccessfulSearchResponse (
|
|||||||
epicsGuard < epicsMutex > &, nciu &, const epicsTime & )
|
epicsGuard < epicsMutex > &, nciu &, const epicsTime & )
|
||||||
{
|
{
|
||||||
throw std::runtime_error (
|
throw std::runtime_error (
|
||||||
"search response occured when not attached to udpiiu?" );
|
"search response occurred when not attached to udpiiu?" );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool netiiu::searchMsg (
|
bool netiiu::searchMsg (
|
||||||
|
|||||||
@@ -597,11 +597,11 @@ void ca_client_context :: whenThereIsAnExceptionDestroySyncGroupIO (
|
|||||||
epicsGuardRelease < epicsMutex > guardRelease ( guard );
|
epicsGuardRelease < epicsMutex > guardRelease ( guard );
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// we will definately stall out here if all of the
|
// we will definitely stall out here if all of the
|
||||||
// following are true
|
// following are true
|
||||||
//
|
//
|
||||||
// o user creates non-preemptive mode client library context
|
// o user creates non-preemptive mode client library context
|
||||||
// o user doesnt periodically call a ca function
|
// o user doesn't periodically call a ca function
|
||||||
// o user calls this function from an auxiliary thread
|
// o user calls this function from an auxiliary thread
|
||||||
//
|
//
|
||||||
CallbackGuard cbGuard ( this->cbMutex );
|
CallbackGuard cbGuard ( this->cbMutex );
|
||||||
|
|||||||
@@ -353,7 +353,7 @@ void searchTimer::uninstallChanDueToSuccessfulSearchResponse (
|
|||||||
// when we get 100% success immediately
|
// when we get 100% success immediately
|
||||||
// send another search request
|
// send another search request
|
||||||
//
|
//
|
||||||
debugPrintf ( ( "All requests succesful, set timer delay to zero\n" ) );
|
debugPrintf ( ( "All requests successful, set timer delay to zero\n" ) );
|
||||||
this->timer.start ( *this, currentTime );
|
this->timer.start ( *this, currentTime );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,11 +79,11 @@ extern "C" int epicsStdCall ca_sg_delete ( const CA_SYNC_GID gid )
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//
|
//
|
||||||
// we will definately stall out here if all of the
|
// we will definitely stall out here if all of the
|
||||||
// following are true
|
// following are true
|
||||||
//
|
//
|
||||||
// o user creates non-preemptive mode client library context
|
// o user creates non-preemptive mode client library context
|
||||||
// o user doesnt periodically call a ca function
|
// o user doesn't periodically call a ca function
|
||||||
// o user calls this function from an auxiliary thread
|
// o user calls this function from an auxiliary thread
|
||||||
//
|
//
|
||||||
CallbackGuard cbGuard ( pcac->cbMutex );
|
CallbackGuard cbGuard ( pcac->cbMutex );
|
||||||
@@ -103,11 +103,11 @@ void sync_group_reset ( ca_client_context & client, CASG & sg )
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//
|
//
|
||||||
// we will definately stall out here if all of the
|
// we will definitely stall out here if all of the
|
||||||
// following are true
|
// following are true
|
||||||
//
|
//
|
||||||
// o user creates non-preemptive mode client library context
|
// o user creates non-preemptive mode client library context
|
||||||
// o user doesnt periodically call a ca function
|
// o user doesn't periodically call a ca function
|
||||||
// o user calls this function from an auxiliary thread
|
// o user calls this function from an auxiliary thread
|
||||||
//
|
//
|
||||||
CallbackGuard cbGuard ( client.cbMutex );
|
CallbackGuard cbGuard ( client.cbMutex );
|
||||||
@@ -216,11 +216,11 @@ extern "C" int epicsStdCall ca_sg_test ( const CA_SYNC_GID gid )
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//
|
//
|
||||||
// we will definately stall out here if all of the
|
// we will definitely stall out here if all of the
|
||||||
// following are true
|
// following are true
|
||||||
//
|
//
|
||||||
// o user creates non-preemptive mode client library context
|
// o user creates non-preemptive mode client library context
|
||||||
// o user doesnt periodically call a ca function
|
// o user doesn't periodically call a ca function
|
||||||
// o user calls this function from an auxiliary thread
|
// o user calls this function from an auxiliary thread
|
||||||
//
|
//
|
||||||
CallbackGuard cbGuard ( pcac->cbMutex );
|
CallbackGuard cbGuard ( pcac->cbMutex );
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ void tcpRecvWatchdog::beaconArrivalNotify (
|
|||||||
guard.assertIdenticalMutex ( this->mutex );
|
guard.assertIdenticalMutex ( this->mutex );
|
||||||
if ( ! ( this->shuttingDown || this->beaconAnomaly || this->probeResponsePending ) ) {
|
if ( ! ( this->shuttingDown || this->beaconAnomaly || this->probeResponsePending ) ) {
|
||||||
this->timer.start ( *this, this->period );
|
this->timer.start ( *this, this->period );
|
||||||
debugPrintf ( ("saw a normal beacon - reseting circuit receive watchdog\n") );
|
debugPrintf ( ("saw a normal beacon - resetting circuit receive watchdog\n") );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ void tcpRecvWatchdog::messageArrivalNotify (
|
|||||||
if ( ! ( this->shuttingDown || this->probeResponsePending ) ) {
|
if ( ! ( this->shuttingDown || this->probeResponsePending ) ) {
|
||||||
this->beaconAnomaly = false;
|
this->beaconAnomaly = false;
|
||||||
this->timer.start ( *this, this->period );
|
this->timer.start ( *this, this->period );
|
||||||
debugPrintf ( ("received a message - reseting circuit recv watchdog\n") );
|
debugPrintf ( ("received a message - resetting circuit recv watchdog\n") );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,7 +182,7 @@ void tcpRecvWatchdog::sendBacklogProgressNotify (
|
|||||||
// receive at least one message from the server.
|
// receive at least one message from the server.
|
||||||
if ( this->probeResponsePending && ! this->shuttingDown ) {
|
if ( this->probeResponsePending && ! this->shuttingDown ) {
|
||||||
this->timer.start ( *this, CA_ECHO_TIMEOUT );
|
this->timer.start ( *this, CA_ECHO_TIMEOUT );
|
||||||
debugPrintf ( ("saw heavy send backlog - reseting circuit recv watchdog\n") );
|
debugPrintf ( ("saw heavy send backlog - resetting circuit recv watchdog\n") );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1824,7 +1824,7 @@ void tcpiiu::disconnectAllChannels (
|
|||||||
}
|
}
|
||||||
|
|
||||||
while ( nciu * pChan = this->createRespPend.get () ) {
|
while ( nciu * pChan = this->createRespPend.get () ) {
|
||||||
// we don't yet know the server's id so we cant
|
// we don't yet know the server's id so we can't
|
||||||
// send a channel delete request and will instead
|
// send a channel delete request and will instead
|
||||||
// trust that the server can do the proper cleanup
|
// trust that the server can do the proper cleanup
|
||||||
// when the circuit disconnects
|
// when the circuit disconnects
|
||||||
@@ -1890,7 +1890,7 @@ void tcpiiu::unlinkAllChannels (
|
|||||||
while ( nciu * pChan = this->createRespPend.get () ) {
|
while ( nciu * pChan = this->createRespPend.get () ) {
|
||||||
pChan->channelNode::listMember =
|
pChan->channelNode::listMember =
|
||||||
channelNode::cs_none;
|
channelNode::cs_none;
|
||||||
// we don't yet know the server's id so we cant
|
// we don't yet know the server's id so we can't
|
||||||
// send a channel delete request and will instead
|
// send a channel delete request and will instead
|
||||||
// trust that the server can do the proper cleanup
|
// trust that the server can do the proper cleanup
|
||||||
// when the circuit disconnects
|
// when the circuit disconnects
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ double getMaxPeriod()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
epicsPrintf ( "EPICS \"%s\" wasnt a real number\n",
|
epicsPrintf ( "EPICS \"%s\" wasn't a real number\n",
|
||||||
EPICS_CA_MAX_SEARCH_PERIOD.name );
|
EPICS_CA_MAX_SEARCH_PERIOD.name );
|
||||||
epicsPrintf ( "Setting \"%s\" = %f seconds\n",
|
epicsPrintf ( "Setting \"%s\" = %f seconds\n",
|
||||||
EPICS_CA_MAX_SEARCH_PERIOD.name, maxPeriod );
|
EPICS_CA_MAX_SEARCH_PERIOD.name, maxPeriod );
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ const char * get_error_msg(int status) {
|
|||||||
"ECA_NOSUPPORT - Sorry, that feature is planned but not supported at this time",
|
"ECA_NOSUPPORT - Sorry, that feature is planned but not supported at this time",
|
||||||
"ECA_STRTOBIG - The supplied string is unusually large",
|
"ECA_STRTOBIG - The supplied string is unusually large",
|
||||||
"ECA_DISCONNCHID - The request was ignored because the specified channel is disconnected",
|
"ECA_DISCONNCHID - The request was ignored because the specified channel is disconnected",
|
||||||
"ECA_BADTYPE - The data type specifed is invalid",
|
"ECA_BADTYPE - The data type specified is invalid",
|
||||||
"ECA_CHIDNOTFND - Remote Channel not found",
|
"ECA_CHIDNOTFND - Remote Channel not found",
|
||||||
"ECA_CHIDRETRY - Unable to locate all user specified channels",
|
"ECA_CHIDRETRY - Unable to locate all user specified channels",
|
||||||
"ECA_INTERNAL - Channel Access Internal Failure",
|
"ECA_INTERNAL - Channel Access Internal Failure",
|
||||||
@@ -83,12 +83,12 @@ const char * get_error_msg(int status) {
|
|||||||
"ECA_BADMONID - Bad event subscription (monitor) identifier",
|
"ECA_BADMONID - Bad event subscription (monitor) identifier",
|
||||||
"ECA_NEWADDR - Remote channel has new network address",
|
"ECA_NEWADDR - Remote channel has new network address",
|
||||||
"ECA_NEWCONN - New or resumed network connection",
|
"ECA_NEWCONN - New or resumed network connection",
|
||||||
"ECA_NOCACTX - Specified task isnt a member of a CA context",
|
"ECA_NOCACTX - Specified task isn't a member of a CA context",
|
||||||
"ECA_DEFUNCT - Attempt to use defunct CA feature failed",
|
"ECA_DEFUNCT - Attempt to use defunct CA feature failed",
|
||||||
"ECA_EMPTYSTR - The supplied string is empty",
|
"ECA_EMPTYSTR - The supplied string is empty",
|
||||||
"ECA_NOREPEATER - Unable to spawn the CA repeater thread- auto reconnect will fail",
|
"ECA_NOREPEATER - Unable to spawn the CA repeater thread- auto reconnect will fail",
|
||||||
"ECA_NOCHANMSG - No channel id match for search reply- search reply ignored",
|
"ECA_NOCHANMSG - No channel id match for search reply- search reply ignored",
|
||||||
"ECA_DLCKREST - Reseting dead connection- will try to reconnect",
|
"ECA_DLCKREST - Resetting dead connection- will try to reconnect",
|
||||||
"ECA_SERVBEHIND - Server (IOC) has fallen behind or is not responding- still waiting",
|
"ECA_SERVBEHIND - Server (IOC) has fallen behind or is not responding- still waiting",
|
||||||
"ECA_NOCAST - No internet interface with broadcast available",
|
"ECA_NOCAST - No internet interface with broadcast available",
|
||||||
"ECA_BADMASK - Invalid event selection mask",
|
"ECA_BADMASK - Invalid event selection mask",
|
||||||
@@ -886,7 +886,7 @@ void CA_get_callback(SV *ca_ref, SV *sub, ...) {
|
|||||||
while (items > i
|
while (items > i
|
||||||
&& SvOK(ST(i))) {
|
&& SvOK(ST(i))) {
|
||||||
if (SvIOK(ST(i))) {
|
if (SvIOK(ST(i))) {
|
||||||
/* Interger => Count arg, zero means current size */
|
/* Integer => Count arg, zero means current size */
|
||||||
count = SvIV(ST(i));
|
count = SvIV(ST(i));
|
||||||
if (count < 0 || count > ca_element_count(pch->chan)) {
|
if (count < 0 || count > ca_element_count(pch->chan)) {
|
||||||
croak_msg = "Requested array size is out of range";
|
croak_msg = "Requested array size is out of range";
|
||||||
@@ -962,7 +962,7 @@ SV * CA_create_subscription(SV *ca_ref, const char *mask_str, SV *sub, ...) {
|
|||||||
while (items > i
|
while (items > i
|
||||||
&& SvOK(ST(i))) {
|
&& SvOK(ST(i))) {
|
||||||
if (SvIOK(ST(i))) {
|
if (SvIOK(ST(i))) {
|
||||||
/* Interger => Count arg, zero means current size */
|
/* Integer => Count arg, zero means current size */
|
||||||
count = SvIV(ST(i));
|
count = SvIV(ST(i));
|
||||||
if (count < 0 || count > ca_element_count(pch->chan)) {
|
if (count < 0 || count > ca_element_count(pch->chan)) {
|
||||||
croak_msg = "Requested array size is out of range";
|
croak_msg = "Requested array size is out of range";
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ ifdef T_A
|
|||||||
# Special settings for Darwin:
|
# Special settings for Darwin:
|
||||||
ifeq ($(OS_CLASS),Darwin)
|
ifeq ($(OS_CLASS),Darwin)
|
||||||
# Use hdepends command (not GNU compiler flags)
|
# Use hdepends command (not GNU compiler flags)
|
||||||
# to generate header file dependancies for Darwin.
|
# to generate header file dependencies for Darwin.
|
||||||
# Darwin has multiple -arch compiler flags.
|
# Darwin has multiple -arch compiler flags.
|
||||||
HDEPENDS_METHOD = MKMF
|
HDEPENDS_METHOD = MKMF
|
||||||
|
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ sub HELP_MESSAGE {
|
|||||||
" -w <sec>: Wait time, specifies CA timeout, default is $opt_w second\n",
|
" -w <sec>: Wait time, specifies CA timeout, default is $opt_w second\n",
|
||||||
" -c: Use put_callback to wait for completion\n",
|
" -c: Use put_callback to wait for completion\n",
|
||||||
"Format options:\n",
|
"Format options:\n",
|
||||||
" -t: Terse mode - print only sucessfully written value, without name\n",
|
" -t: Terse mode - print only successfully written value, without name\n",
|
||||||
" -l: Long mode \"name timestamp value stat sevr\" (read PVs as DBR_TIME_xxx)\n",
|
" -l: Long mode \"name timestamp value stat sevr\" (read PVs as DBR_TIME_xxx)\n",
|
||||||
" -S: Put string as an array of char (long string)\n",
|
" -S: Put string as an array of char (long string)\n",
|
||||||
"Enum format:\n",
|
"Enum format:\n",
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ to stdout.
|
|||||||
|
|
||||||
The {option}`-s` option allows to specify an interest level for calling Channel
|
The {option}`-s` option allows to specify an interest level for calling Channel
|
||||||
Access' internal report function `ca_client_status()`, that prints lots
|
Access' internal report function `ca_client_status()`, that prints lots
|
||||||
of internal informations on stdout, including environment settings, used
|
of internal information on stdout, including environment settings, used
|
||||||
CA ports etc.
|
CA ports etc.
|
||||||
|
|
||||||
## Options
|
## Options
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ void usage (void)
|
|||||||
" -c: Asynchronous put (use ca_put_callback and wait for completion)\n"
|
" -c: Asynchronous put (use ca_put_callback and wait for completion)\n"
|
||||||
" -p <prio>: CA priority (0-%u, default 0=lowest)\n"
|
" -p <prio>: CA priority (0-%u, default 0=lowest)\n"
|
||||||
"Format options:\n"
|
"Format options:\n"
|
||||||
" -t: Terse mode - print only sucessfully written value, without name\n"
|
" -t: Terse mode - print only successfully written value, without name\n"
|
||||||
" -l: Long mode \"name timestamp value stat sevr\" (read PVs as DBR_TIME_xxx)\n"
|
" -l: Long mode \"name timestamp value stat sevr\" (read PVs as DBR_TIME_xxx)\n"
|
||||||
"Enum format:\n"
|
"Enum format:\n"
|
||||||
" Default: Auto - try value as ENUM string, then as index number\n"
|
" Default: Auto - try value as ENUM string, then as index number\n"
|
||||||
@@ -571,7 +571,7 @@ int main (int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (result != ECA_NORMAL) {
|
if (result != ECA_NORMAL) {
|
||||||
fprintf(stderr, ERL_ERROR " occured writing data: %s\n", ca_message(result));
|
fprintf(stderr, ERL_ERROR " occurred writing data: %s\n", ca_message(result));
|
||||||
free(sbuf); free(dbuf); free(ebuf);
|
free(sbuf); free(dbuf); free(ebuf);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ static const iocshArg asSetSubstitutionsArg0 = { "substitutions",iocshArgString}
|
|||||||
static const iocshArg * const asSetSubstitutionsArgs[] = {&asSetSubstitutionsArg0};
|
static const iocshArg * const asSetSubstitutionsArgs[] = {&asSetSubstitutionsArg0};
|
||||||
static const iocshFuncDef asSetSubstitutionsFuncDef =
|
static const iocshFuncDef asSetSubstitutionsFuncDef =
|
||||||
{"asSetSubstitutions",1,asSetSubstitutionsArgs,
|
{"asSetSubstitutions",1,asSetSubstitutionsArgs,
|
||||||
"Set subtitutions used when reading ACF file.\n"
|
"Set substitutions used when reading ACF file.\n"
|
||||||
"No immediate effect. Run asInit to (re)load.\n"
|
"No immediate effect. Run asInit to (re)load.\n"
|
||||||
"Example: asSetSubstitutions var1=5,var2=hello\n"};
|
"Example: asSetSubstitutions var1=5,var2=hello\n"};
|
||||||
static void asSetSubstitutionsCallFunc(const iocshArgBuf *args)
|
static void asSetSubstitutionsCallFunc(const iocshArgBuf *args)
|
||||||
|
|||||||
@@ -360,7 +360,7 @@ static int create_break( struct brkCreateInfo *pbci, brkInt *pabrkInt,
|
|||||||
if (inc < 1)
|
if (inc < 1)
|
||||||
inc = 1;
|
inc = 1;
|
||||||
valid = TRUE;
|
valid = TRUE;
|
||||||
/* keep trying intervals until cant do better */
|
/* keep trying intervals until can't do better */
|
||||||
expanding = TRUE; /* originally we are trying larger and larger
|
expanding = TRUE; /* originally we are trying larger and larger
|
||||||
* intervals */
|
* intervals */
|
||||||
while (valid) {
|
while (valid) {
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ static void get_enum_strs(DBADDR *paddr, char **ppbuffer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(nchoices > NELEMENTS(penum->strs))
|
if(nchoices > NELEMENTS(penum->strs))
|
||||||
nchoices = NELEMENTS(penum->strs); /* availible > capacity, truncated list */
|
nchoices = NELEMENTS(penum->strs); /* available > capacity, truncated list */
|
||||||
|
|
||||||
penum->no_str = nchoices;
|
penum->no_str = nchoices;
|
||||||
|
|
||||||
@@ -1130,7 +1130,7 @@ static long dbPutFieldLink(DBADDR *paddr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (dbCanSetLink(plink, &link_info, new_devsup)) {
|
if (dbCanSetLink(plink, &link_info, new_devsup)) {
|
||||||
/* link type mis-match prevents assignment */
|
/* link type mismatch prevents assignment */
|
||||||
status = S_dbLib_badField;
|
status = S_dbLib_badField;
|
||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ static int dbca_chan_count;
|
|||||||
* The libca callbacks take no action if pca->plink==NULL.
|
* The libca callbacks take no action if pca->plink==NULL.
|
||||||
*
|
*
|
||||||
* dbCaPutLinkCallback causes an additional complication because
|
* dbCaPutLinkCallback causes an additional complication because
|
||||||
* when dbCaRemoveLink is called the callback may not have occured.
|
* when dbCaRemoveLink is called the callback may not have occurred.
|
||||||
* If putComplete sees plink==0 it will not call the user's code.
|
* If putComplete sees plink==0 it will not call the user's code.
|
||||||
* If pca->putCallback is non-zero, dbCaTask will call the
|
* If pca->putCallback is non-zero, dbCaTask will call the
|
||||||
* user's callback AFTER it has called ca_clear_channel.
|
* user's callback AFTER it has called ca_clear_channel.
|
||||||
|
|||||||
@@ -346,7 +346,7 @@ DBCORE_API void dbChannelInit(void);
|
|||||||
/** \brief Cleanup the dbChannel subsystem. */
|
/** \brief Cleanup the dbChannel subsystem. */
|
||||||
DBCORE_API void dbChannelExit(void);
|
DBCORE_API void dbChannelExit(void);
|
||||||
|
|
||||||
/** \brief Test the given PV name for existance.
|
/** \brief Test the given PV name for existence.
|
||||||
*
|
*
|
||||||
* This routine looks up the given record and field name, but does not check
|
* This routine looks up the given record and field name, but does not check
|
||||||
* whether any field modifiers given after the field name are correct.
|
* whether any field modifiers given after the field name are correct.
|
||||||
|
|||||||
@@ -521,7 +521,7 @@ hardware.
|
|||||||
|
|
||||||
=item *
|
=item *
|
||||||
|
|
||||||
Positive values (normally between 1-255) get the time of the last occurance of
|
Positive values (normally between 1-255) get the time of the last occurrence of
|
||||||
the numbered generalTime event.
|
the numbered generalTime event.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ static const iocshFuncDef dblFuncDef = {"dbl",2,dblArgs,
|
|||||||
"Database list.\n"
|
"Database list.\n"
|
||||||
"List record/field names.\n"
|
"List record/field names.\n"
|
||||||
"With no arguments, lists all record names.\n"
|
"With no arguments, lists all record names.\n"
|
||||||
"If record type is given, then only the names of records maching the type are printed\n"
|
"If record type is given, then only the names of records matching the type are printed\n"
|
||||||
"If a field list is given, then their values are also printed\n\n"
|
"If a field list is given, then their values are also printed\n\n"
|
||||||
"Example: dbl(\"\")\n"
|
"Example: dbl(\"\")\n"
|
||||||
" dbl(\"ai\")\n"
|
" dbl(\"ai\")\n"
|
||||||
@@ -440,7 +440,7 @@ static const iocshArg scanOnceQueueShowArg0 = { "reset",iocshArgInt};
|
|||||||
static const iocshArg * const scanOnceQueueShowArgs[1] =
|
static const iocshArg * const scanOnceQueueShowArgs[1] =
|
||||||
{&scanOnceQueueShowArg0};
|
{&scanOnceQueueShowArg0};
|
||||||
static const iocshFuncDef scanOnceQueueShowFuncDef = {"scanOnceQueueShow",1,scanOnceQueueShowArgs,
|
static const iocshFuncDef scanOnceQueueShowFuncDef = {"scanOnceQueueShow",1,scanOnceQueueShowArgs,
|
||||||
"Show details and statitics of scan once queue processing.\n"};
|
"Show details and statistics of scan once queue processing.\n"};
|
||||||
static void scanOnceQueueShowCallFunc(const iocshArgBuf *args)
|
static void scanOnceQueueShowCallFunc(const iocshArgBuf *args)
|
||||||
{
|
{
|
||||||
scanOnceQueueShow(args[0].ival);
|
scanOnceQueueShow(args[0].ival);
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ DBCORE_API void scanIoInit(IOSCANPVT *ppios);
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
DBCORE_API unsigned int scanIoRequest(IOSCANPVT pios);
|
DBCORE_API unsigned int scanIoRequest(IOSCANPVT pios);
|
||||||
/** @brief Process all records on the scan list for the specificed priority.
|
/** @brief Process all records on the scan list for the specified priority.
|
||||||
*
|
*
|
||||||
* Also executes the callback set by scanIoSetComplete()
|
* Also executes the callback set by scanIoSetComplete()
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ DBCORE_API long dbnr(int verbose);
|
|||||||
/* list aliases */
|
/* list aliases */
|
||||||
DBCORE_API long dbla(const char *pmask);
|
DBCORE_API long dbla(const char *pmask);
|
||||||
/* list infos */
|
/* list infos */
|
||||||
DBCORE_API long dbli(const char *patern);
|
DBCORE_API long dbli(const char *pattern);
|
||||||
/*list records filtered by glob pattern*/
|
/*list records filtered by glob pattern*/
|
||||||
DBCORE_API long dbglob(const char *ppattern,const char *fields);
|
DBCORE_API long dbglob(const char *ppattern,const char *fields);
|
||||||
/*list records filtered by glob pattern; alias for dbglob*/
|
/*list records filtered by glob pattern; alias for dbglob*/
|
||||||
|
|||||||
@@ -307,7 +307,7 @@ void testdbGetArrFieldEqual(const char* pv, short dbfType, long nRequest, unsign
|
|||||||
long n, N = nRequest < cnt ? nRequest : cnt;
|
long n, N = nRequest < cnt ? nRequest : cnt;
|
||||||
|
|
||||||
if(!match)
|
if(!match)
|
||||||
testDiag("Length mis-match. expected=%lu actual=%lu", cnt, nRequest);
|
testDiag("Length mismatch. expected=%lu actual=%lu", cnt, nRequest);
|
||||||
|
|
||||||
for(n=0; n<N; n++, gbuf+=vSize, pbuf+=vSize) {
|
for(n=0; n<N; n++, gbuf+=vSize, pbuf+=vSize) {
|
||||||
|
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ DBCORE_API void testMonitorWait(testMonitor*);
|
|||||||
* @since UNRELEASED
|
* @since UNRELEASED
|
||||||
*/
|
*/
|
||||||
DBCORE_API void testMonitorSync(testMonitor*);
|
DBCORE_API void testMonitorSync(testMonitor*);
|
||||||
/** Return the number of monitor events which have occured since create,
|
/** Return the number of monitor events which have occurred since create,
|
||||||
* or a previous reset (called reset=1).
|
* or a previous reset (called reset=1).
|
||||||
* Calling w/ reset=0 only returns the count.
|
* Calling w/ reset=0 only returns the count.
|
||||||
* Calling w/ reset=1 resets the count to zero and ensures that the next
|
* Calling w/ reset=1 resets the count to zero and ensures that the next
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ typedef struct dbRecordNode {
|
|||||||
struct dbRecordNode *aliasedRecnode; /* NULL unless flags|DBRN_FLAGS_ISALIAS */
|
struct dbRecordNode *aliasedRecnode; /* NULL unless flags|DBRN_FLAGS_ISALIAS */
|
||||||
}dbRecordNode;
|
}dbRecordNode;
|
||||||
|
|
||||||
/*dbRecordAttribute is for "psuedo" fields */
|
/*dbRecordAttribute is for "pseudo" fields */
|
||||||
/*pdbFldDes is so that other access routines work correctly*/
|
/*pdbFldDes is so that other access routines work correctly*/
|
||||||
/*Until base supports char * value MUST be fixed length string*/
|
/*Until base supports char * value MUST be fixed length string*/
|
||||||
typedef struct dbRecordAttribute {
|
typedef struct dbRecordAttribute {
|
||||||
|
|||||||
@@ -712,7 +712,7 @@ static void dbRecordtypeEmpty(void)
|
|||||||
ptempListNode = (tempListNode *)ellFirst(&tempList);
|
ptempListNode = (tempListNode *)ellFirst(&tempList);
|
||||||
pdbRecordType = ptempListNode->item;
|
pdbRecordType = ptempListNode->item;
|
||||||
fprintf(stderr, ERL_ERROR
|
fprintf(stderr, ERL_ERROR
|
||||||
": Declaration of recordtype(%s) preceeded full definition.\n",
|
": Declaration of recordtype(%s) preceded full definition.\n",
|
||||||
pdbRecordType->name);
|
pdbRecordType->name);
|
||||||
yyerrorAbort(NULL);
|
yyerrorAbort(NULL);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ static const iocshArg dbDumpMenuArg1 = { "menuName",iocshArgString};
|
|||||||
static const iocshArg * const dbDumpMenuArgs[] = {
|
static const iocshArg * const dbDumpMenuArgs[] = {
|
||||||
&argPdbbase, &dbDumpMenuArg1};
|
&argPdbbase, &dbDumpMenuArg1};
|
||||||
static const iocshFuncDef dbDumpMenuFuncDef = {"dbDumpMenu",2,dbDumpMenuArgs,
|
static const iocshFuncDef dbDumpMenuFuncDef = {"dbDumpMenu",2,dbDumpMenuArgs,
|
||||||
"Dump information about the available menuNames and choices defined withing each menuName.\n"
|
"Dump information about the available menuNames and choices defined within each menuName.\n"
|
||||||
"Example: dbDumpMenu pdbbase menuAlarmStat \n"
|
"Example: dbDumpMenu pdbbase menuAlarmStat \n"
|
||||||
"If last argument(s) are missing, dump all menuNames information in the database.\n"};
|
"If last argument(s) are missing, dump all menuNames information in the database.\n"};
|
||||||
static void dbDumpMenuCallFunc(const iocshArgBuf *args)
|
static void dbDumpMenuCallFunc(const iocshArgBuf *args)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ static const iocshFuncDef dbLoadTemplateFuncDef = {
|
|||||||
"for each template in the substitution file, and load them using 'dbLoadRecords'.\n\n"
|
"for each template in the substitution file, and load them using 'dbLoadRecords'.\n\n"
|
||||||
"The second argument provides extra variables to substitute in the\n"
|
"The second argument provides extra variables to substitute in the\n"
|
||||||
"template files (not the substitution file). The third argument provides\n"
|
"template files (not the substitution file). The third argument provides\n"
|
||||||
"a list of paths to search through for the subsitution and template files.\n\n"
|
"a list of paths to search through for the substitution and template files.\n\n"
|
||||||
"See 'help dbLoadRecords' for more information.\n\n"
|
"See 'help dbLoadRecords' for more information.\n\n"
|
||||||
"Example: dbLoadTemplate db/my.substitutions 'user=myself,host=myhost' 'path/to/subst:path2/to2/subst2'\n",
|
"Example: dbLoadTemplate db/my.substitutions 'user=myself,host=myhost' 'path/to/subst:path2/to2/subst2'\n",
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ discouraged.
|
|||||||
:::
|
:::
|
||||||
|
|
||||||
::: {option} -o <file>
|
::: {option} -o <file>
|
||||||
Output will be written to the specifed \<file\> rather than to the
|
Output will be written to the specified \<file\> rather than to the
|
||||||
standard output.
|
standard output.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
@@ -166,7 +166,7 @@ expanded properly.
|
|||||||
However neither back-slash characters nor quotes of either variety are
|
However neither back-slash characters nor quotes of either variety are
|
||||||
removed when generating the output file, so depending on what is being
|
removed when generating the output file, so depending on what is being
|
||||||
output the single quote behaviour may not be useful and may even be a
|
output the single quote behaviour may not be useful and may even be a
|
||||||
hinderance. It cannot be disabled in the current version of msi.
|
hindrance. It cannot be disabled in the current version of msi.
|
||||||
|
|
||||||
|
|
||||||
### Template file commands
|
### Template file commands
|
||||||
|
|||||||
@@ -1452,7 +1452,7 @@ static void sendAllUpdateAS ( struct client *client )
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
errlogPrintf (
|
errlogPrintf (
|
||||||
"%s at %d: corrupt channel state detected durring AR update\n",
|
"%s at %d: corrupt channel state detected during AR update\n",
|
||||||
__FILE__, __LINE__);
|
__FILE__, __LINE__);
|
||||||
}
|
}
|
||||||
pciu->state = rsrvCS_inService;
|
pciu->state = rsrvCS_inService;
|
||||||
@@ -1493,7 +1493,7 @@ static void putNotifyErrorReply ( struct client *client, caHdrLargeArray *mp, in
|
|||||||
mp->m_available, 0 );
|
mp->m_available, 0 );
|
||||||
if ( status != ECA_NORMAL ) {
|
if ( status != ECA_NORMAL ) {
|
||||||
SEND_UNLOCK ( client );
|
SEND_UNLOCK ( client );
|
||||||
errlogPrintf ("%s at %d: should always get sufficent space for put notify error reply\n",
|
errlogPrintf ("%s at %d: should always get sufficient space for put notify error reply\n",
|
||||||
__FILE__, __LINE__);
|
__FILE__, __LINE__);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1835,7 +1835,7 @@ static int event_add_action (caHdrLargeArray *mp, void *pPayload, struct client
|
|||||||
* the monitors and I could get deadlocked.
|
* the monitors and I could get deadlocked.
|
||||||
* The client is blocked sending and the server
|
* The client is blocked sending and the server
|
||||||
* task for the client is blocked sending in
|
* task for the client is blocked sending in
|
||||||
* this case. I cant check the recv part of the
|
* this case. I can't check the recv part of the
|
||||||
* socket in the client since I am still handling an
|
* socket in the client since I am still handling an
|
||||||
* outstanding recv ( they must be processed in order).
|
* outstanding recv ( they must be processed in order).
|
||||||
* I handle this problem in the server by using
|
* I handle this problem in the server by using
|
||||||
@@ -2080,7 +2080,7 @@ static void search_fail_reply ( caHdrLargeArray *mp, void *pPayload, struct clie
|
|||||||
0u, mp->m_dataType, mp->m_count, mp->m_cid, mp->m_available, NULL );
|
0u, mp->m_dataType, mp->m_count, mp->m_cid, mp->m_available, NULL );
|
||||||
if ( status != ECA_NORMAL ) {
|
if ( status != ECA_NORMAL ) {
|
||||||
SEND_UNLOCK ( client );
|
SEND_UNLOCK ( client );
|
||||||
errlogPrintf ( "%s at %d: should always get sufficent space for search fail reply?\n",
|
errlogPrintf ( "%s at %d: should always get sufficient space for search fail reply?\n",
|
||||||
__FILE__, __LINE__ );
|
__FILE__, __LINE__ );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -367,7 +367,7 @@ void cas_commit_msg ( struct client *pClient, ca_uint32_t size )
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* this assumes that we have already checked to see
|
* this assumes that we have already checked to see
|
||||||
* if sufficent bytes are available
|
* if sufficient bytes are available
|
||||||
*/
|
*/
|
||||||
ca_uint16_t rsrvGetUInt16 ( struct message_buffer *recv )
|
ca_uint16_t rsrvGetUInt16 ( struct message_buffer *recv )
|
||||||
{
|
{
|
||||||
@@ -375,7 +375,7 @@ ca_uint16_t rsrvGetUInt16 ( struct message_buffer *recv )
|
|||||||
ca_uint16_t result;
|
ca_uint16_t result;
|
||||||
/*
|
/*
|
||||||
* this assumes that we have already checked to see
|
* this assumes that we have already checked to see
|
||||||
* if sufficent bytes are available
|
* if sufficient bytes are available
|
||||||
*/
|
*/
|
||||||
assert ( recv->cnt - recv->stk >= 2u );
|
assert ( recv->cnt - recv->stk >= 2u );
|
||||||
result = pBuf[recv->stk++] << 8u;
|
result = pBuf[recv->stk++] << 8u;
|
||||||
@@ -385,7 +385,7 @@ ca_uint16_t rsrvGetUInt16 ( struct message_buffer *recv )
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* this assumes that we have already checked to see
|
* this assumes that we have already checked to see
|
||||||
* if sufficent bytes are available
|
* if sufficient bytes are available
|
||||||
*/
|
*/
|
||||||
ca_uint32_t rsrvGetUInt32 ( struct message_buffer *recv )
|
ca_uint32_t rsrvGetUInt32 ( struct message_buffer *recv )
|
||||||
{
|
{
|
||||||
@@ -393,7 +393,7 @@ ca_uint32_t rsrvGetUInt32 ( struct message_buffer *recv )
|
|||||||
ca_uint32_t result;
|
ca_uint32_t result;
|
||||||
/*
|
/*
|
||||||
* this assumes that we have already checked to see
|
* this assumes that we have already checked to see
|
||||||
* if sufficent bytes are available
|
* if sufficient bytes are available
|
||||||
*/
|
*/
|
||||||
assert ( recv->cnt - recv->stk >= 4u );
|
assert ( recv->cnt - recv->stk >= 4u );
|
||||||
result = pBuf[recv->stk++] << 24u;
|
result = pBuf[recv->stk++] << 24u;
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ link(const, lnkConstIf)
|
|||||||
|
|
||||||
=head3 Constant Link C<"const">
|
=head3 Constant Link C<"const">
|
||||||
|
|
||||||
Constant links are input links that provide literal values at link initalization
|
Constant links are input links that provide literal values at link initialization
|
||||||
time, but do not return any data when their C<getValue()> routine is called.
|
time, but do not return any data when their C<getValue()> routine is called.
|
||||||
Most record types support the use of constant links on their input links by
|
Most record types support the use of constant links on their input links by
|
||||||
calling C<recGblInitConstantLink()> at record initialization, which results in
|
calling C<recGblInitConstantLink()> at record initialization, which results in
|
||||||
|
|||||||
@@ -338,7 +338,7 @@ during record processing.
|
|||||||
|
|
||||||
=head3 Input Value Fields
|
=head3 Input Value Fields
|
||||||
|
|
||||||
Thse fields hold the scalar or array values fetched through the input links
|
These fields hold the scalar or array values fetched through the input links
|
||||||
INPA,...,INPU.
|
INPA,...,INPU.
|
||||||
|
|
||||||
=fields A - U
|
=fields A - U
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
|||||||
return(S_dev_missingSup);
|
return(S_dev_missingSup);
|
||||||
}
|
}
|
||||||
prec->init = TRUE;
|
prec->init = TRUE;
|
||||||
/*The following is for old device support that doesnt know about eoff*/
|
/*The following is for old device support that doesn't know about eoff*/
|
||||||
if ((prec->eslo==1.0) && (prec->eoff==0.0)) {
|
if ((prec->eslo==1.0) && (prec->eoff==0.0)) {
|
||||||
prec->eoff = prec->egul;
|
prec->eoff = prec->egul;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ static long init_record(struct dbCommon *pcommon, int pass)
|
|||||||
return(S_dev_missingSup);
|
return(S_dev_missingSup);
|
||||||
}
|
}
|
||||||
prec->init = TRUE;
|
prec->init = TRUE;
|
||||||
/*The following is for old device support that doesnt know about eoff*/
|
/*The following is for old device support that doesn't know about eoff*/
|
||||||
if ((prec->eslo==1.0) && (prec->eoff==0.0)) {
|
if ((prec->eslo==1.0) && (prec->eoff==0.0)) {
|
||||||
prec->eoff = prec->egul;
|
prec->eoff = prec->egul;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -224,8 +224,8 @@ alarms that are common to all record types.
|
|||||||
These parameters are used to specify deadbands for monitors on the VAL
|
These parameters are used to specify deadbands for monitors on the VAL
|
||||||
field. The monitors are sent when the value field exceeds the last
|
field. The monitors are sent when the value field exceeds the last
|
||||||
monitored field by the specified deadband. If these fields have a value
|
monitored field by the specified deadband. If these fields have a value
|
||||||
of zero, everytime the value changes, a monitor will be triggered; if
|
of zero, every time the value changes, a monitor will be triggered; if
|
||||||
they have a value of -1, everytime the record is processed, monitors
|
they have a value of -1, every time the record is processed, monitors
|
||||||
are triggered. ADEL is the deadband for archive monitors, and MDEL the
|
are triggered. ADEL is the deadband for archive monitors, and MDEL the
|
||||||
deadband for all other types of monitors. See Monitor Specification for
|
deadband for all other types of monitors. See Monitor Specification for
|
||||||
a complete explanation of monitors.
|
a complete explanation of monitors.
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ These parameters are used to determine if the binary input is in alarm
|
|||||||
condition and to determine the severity of that condition. The possible
|
condition and to determine the severity of that condition. The possible
|
||||||
alarm conditions for binary inputs are the SCAN, READ state alarms, and the
|
alarm conditions for binary inputs are the SCAN, READ state alarms, and the
|
||||||
change of state alarm. The SCAN and READ alarms are called by the device
|
change of state alarm. The SCAN and READ alarms are called by the device
|
||||||
supprt routines.
|
support routines.
|
||||||
|
|
||||||
The user can choose the severity of each state in the ZSV and OSV fields.
|
The user can choose the severity of each state in the ZSV and OSV fields.
|
||||||
The possible values for these fields are C<NO_ALARM>, C<MINOR>, and
|
The possible values for these fields are C<NO_ALARM>, C<MINOR>, and
|
||||||
@@ -126,7 +126,7 @@ MASK is given a value by ithe device support routines. This value is used to
|
|||||||
manipulate the record's value, but is only the concern of the hardware device
|
manipulate the record's value, but is only the concern of the hardware device
|
||||||
support routines.
|
support routines.
|
||||||
|
|
||||||
The LALM fields holds the value of the last occurence of the change of
|
The LALM fields holds the value of the last occurrence of the change of
|
||||||
state alarm. It is used to implement the change of state alarm, and thus
|
state alarm. It is used to implement the change of state alarm, and thus
|
||||||
only has meaning if COSV is MAJOR or MINOR.
|
only has meaning if COSV is MAJOR or MINOR.
|
||||||
|
|
||||||
@@ -407,7 +407,7 @@ Scan forward link if necessary, set PACT FALSE, and return.
|
|||||||
=head3 Fields of Interest to Device Support
|
=head3 Fields of Interest to Device Support
|
||||||
|
|
||||||
Each binary input record must have an associated set of device support
|
Each binary input record must have an associated set of device support
|
||||||
routines. The primary resposibility of the device support routines is to
|
routines. The primary responsibility of the device support routines is to
|
||||||
obtain a new raw input value whenever C<read_bi()> is called. The device
|
obtain a new raw input value whenever C<read_bi()> is called. The device
|
||||||
support routines are primarily interested in the following fields:
|
support routines are primarily interested in the following fields:
|
||||||
|
|
||||||
|
|||||||
@@ -391,7 +391,7 @@ If either device support or the device support write routine does not
|
|||||||
exist, and error message is issued and processing is terminated.
|
exist, and error message is issued and processing is terminated.
|
||||||
|
|
||||||
If DOL is a constant, then VAL is initialized to 1 if its value is nonzero
|
If DOL is a constant, then VAL is initialized to 1 if its value is nonzero
|
||||||
or initialzed to 0 if DOL is zero, and UDF is set to FALSE.
|
or initialized to 0 if DOL is zero, and UDF is set to FALSE.
|
||||||
|
|
||||||
If device support includes C<init_record()>, it is called. VAL is set using
|
If device support includes C<init_record()>, it is called. VAL is set using
|
||||||
RVAL, and UDF is set to FALSE.
|
RVAL, and UDF is set to FALSE.
|
||||||
|
|||||||
@@ -442,7 +442,7 @@ Result is C<E> if C<<< (A + B)<(C + D) >>>
|
|||||||
=item *
|
=item *
|
||||||
Result is unchanged if C<<< (A + B)>=(C + D) >>>
|
Result is unchanged if C<<< (A + B)>=(C + D) >>>
|
||||||
|
|
||||||
From 3.14.9 onwards, this expresion must be written as
|
From 3.14.9 onwards, this expression must be written as
|
||||||
C<<< (A + B) < (C + D) ? E : VAL >>>
|
C<<< (A + B) < (C + D) ? E : VAL >>>
|
||||||
|
|
||||||
=back
|
=back
|
||||||
@@ -537,8 +537,8 @@ These paramaeters are used to determine when to send monitors for the value
|
|||||||
fields. These monitors are sent when the value field exceeds the last
|
fields. These monitors are sent when the value field exceeds the last
|
||||||
monitored field by the appropriate deadband, the ADEL for archiver monitors
|
monitored field by the appropriate deadband, the ADEL for archiver monitors
|
||||||
and the MDEL field for all other types of monitors. If these fields have a
|
and the MDEL field for all other types of monitors. If these fields have a
|
||||||
value of zero, everytime the value changes, monitors are triggered; if they have a
|
value of zero, every time the value changes, monitors are triggered; if they have a
|
||||||
value of -1, everytime the record is scanned, monitors are triggered. See
|
value of -1, every time the record is scanned, monitors are triggered. See
|
||||||
L<Monitor Specification> for a complete explanation of monitors.
|
L<Monitor Specification> for a complete explanation of monitors.
|
||||||
|
|
||||||
=fields ADEL, MDEL
|
=fields ADEL, MDEL
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ holds the average of the first element of INP over N samples, VAL[1] holds the
|
|||||||
average of the next element of INP over N samples, and so on. The following
|
average of the next element of INP over N samples, and so on. The following
|
||||||
shows the equation:
|
shows the equation:
|
||||||
|
|
||||||
=for comment Latex form of equation bellow : VAL[i] \leftarrow \frac{1}{N}\sum_{n=1}^NINP_{n}[i]
|
=for comment Latex form of equation below : VAL[i] \leftarrow \frac{1}{N}\sum_{n=1}^NINP_{n}[i]
|
||||||
|
|
||||||
=begin html
|
=begin html
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ These fields are listed in L<Scan Fields|dbCommonRecord/Scan Fields>.
|
|||||||
=head3 Desired Output Parameters
|
=head3 Desired Output Parameters
|
||||||
|
|
||||||
The data fanout record must specify where the desired output value
|
The data fanout record must specify where the desired output value
|
||||||
originates, i.e., the data which is to be fowarded to the records in its
|
originates, i.e., the data which is to be forwarded to the records in its
|
||||||
output links. The output mode select (OMSL) field determines whether the
|
output links. The output mode select (OMSL) field determines whether the
|
||||||
output originates from another record or from run-time database access.
|
output originates from another record or from run-time database access.
|
||||||
When set to C<closed_loop>, the desired output is retrieved from the link
|
When set to C<closed_loop>, the desired output is retrieved from the link
|
||||||
@@ -156,8 +156,8 @@ These parameters are used to determine when to send monitors placed on the
|
|||||||
VAL field. These monitors are sent when the value field exceeds the last
|
VAL field. These monitors are sent when the value field exceeds the last
|
||||||
monitored fields by the specified deadband, ADEL for archivers monitors and
|
monitored fields by the specified deadband, ADEL for archivers monitors and
|
||||||
MDEL for all other types of monitors. If these fields have a value of zero,
|
MDEL for all other types of monitors. If these fields have a value of zero,
|
||||||
everytime the value changes, a monitor will be triggered; if they have a
|
every time the value changes, a monitor will be triggered; if they have a
|
||||||
value of -1, everytime the record is scanned, monitors are triggered. See
|
value of -1, every time the record is scanned, monitors are triggered. See
|
||||||
L<Monitor Specification> for a complete explanation of monitors.
|
L<Monitor Specification> for a complete explanation of monitors.
|
||||||
|
|
||||||
=fields ADEL, MDEL
|
=fields ADEL, MDEL
|
||||||
@@ -165,7 +165,7 @@ L<Monitor Specification> for a complete explanation of monitors.
|
|||||||
=head3 Run-Time Parameters and Simulation Mode Parameters
|
=head3 Run-Time Parameters and Simulation Mode Parameters
|
||||||
|
|
||||||
These parameters are used by the run-time code for processing the data
|
These parameters are used by the run-time code for processing the data
|
||||||
fanout record. Ther are not configurable. They are used to implement the
|
fanout record. They are not configurable. They are used to implement the
|
||||||
hysteresis factors for monitor callbacks.
|
hysteresis factors for monitor callbacks.
|
||||||
|
|
||||||
=fields LALM, ALST, MLST
|
=fields LALM, ALST, MLST
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ alarms that are common to all record types.
|
|||||||
|
|
||||||
The MDEL field implements the monitor count deadband. Only when MCNT is greater
|
The MDEL field implements the monitor count deadband. Only when MCNT is greater
|
||||||
than the value given to MDEL are monitors triggered, MCNT being the number of
|
than the value given to MDEL are monitors triggered, MCNT being the number of
|
||||||
counts since the last time the record was processed. If MDEL is -1, everytime
|
counts since the last time the record was processed. If MDEL is -1, every time
|
||||||
the record is processed, a monitor is triggered regardless.
|
the record is processed, a monitor is triggered regardless.
|
||||||
|
|
||||||
If SDEL is greater than 0, it causes a callback routine to be called. The number
|
If SDEL is greater than 0, it causes a callback routine to be called. The number
|
||||||
|
|||||||
@@ -93,8 +93,8 @@ alarms that are common to all record types.
|
|||||||
These parameters are used to determine when to send monitors placed on the value
|
These parameters are used to determine when to send monitors placed on the value
|
||||||
field. The monitors are sent when the value field exceeds the last monitored
|
field. The monitors are sent when the value field exceeds the last monitored
|
||||||
field (see the next section) by the appropriate deadband. If these fields have a
|
field (see the next section) by the appropriate deadband. If these fields have a
|
||||||
value of zero, everytime the value changes, a monitor will be triggered; if they
|
value of zero, every time the value changes, a monitor will be triggered; if they
|
||||||
have a value of -1, everytime the record is scanned, monitors are triggered. The
|
have a value of -1, every time the record is scanned, monitors are triggered. The
|
||||||
ADEL field is used by archive monitors and the MDEL field for all other types of
|
ADEL field is used by archive monitors and the MDEL field for all other types of
|
||||||
monitors.
|
monitors.
|
||||||
|
|
||||||
|
|||||||
@@ -312,9 +312,9 @@ to alarms that are common to all record types.
|
|||||||
|
|
||||||
These parameters are used to determine when to send monitors placed on the value
|
These parameters are used to determine when to send monitors placed on the value
|
||||||
field. The monitors are sent when the value field exceeds the last monitored
|
field. The monitors are sent when the value field exceeds the last monitored
|
||||||
field by the appropriate delta. If these fields have a value of zero, everytime
|
field by the appropriate delta. If these fields have a value of zero, every time
|
||||||
the value changes, a monitor will be triggered; if they have a value of -1,
|
the value changes, a monitor will be triggered; if they have a value of -1,
|
||||||
everytime the record is scanned, monitors are triggered. The ADEL field is the
|
every time the record is scanned, monitors are triggered. The ADEL field is the
|
||||||
delta for archive monitors, and the MDEL field is the delta for all other types
|
delta for archive monitors, and the MDEL field is the delta for all other types
|
||||||
of monitors. See L<Monitor Specification> for a complete explanation of
|
of monitors. See L<Monitor Specification> for a complete explanation of
|
||||||
monitors.
|
monitors.
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ It can accept boolean values in its 32 bit fields (B0-B9, BA-BF, B10-B19 and
|
|||||||
B1A-B1F), and converts them to a 32-bit signed integer in VAL which is provided
|
B1A-B1F), and converts them to a 32-bit signed integer in VAL which is provided
|
||||||
to the device support. A zero value in a bit field becomes a zero bit in VAL, a
|
to the device support. A zero value in a bit field becomes a zero bit in VAL, a
|
||||||
non-zero value in a bit field becomes a one bit in VAL, with B0 being the least
|
non-zero value in a bit field becomes a one bit in VAL, with B0 being the least
|
||||||
signficant bit and B1F the MSB/sign bit.
|
significant bit and B1F the MSB/sign bit.
|
||||||
|
|
||||||
=recordtype mbboDirect
|
=recordtype mbboDirect
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ placed into the VAL field.
|
|||||||
|
|
||||||
When OMSL is set to C<<< supervisory >>>, the DOL field is ignored during
|
When OMSL is set to C<<< supervisory >>>, the DOL field is ignored during
|
||||||
processing and the contents of VAL are used. A value to be output may thus be
|
processing and the contents of VAL are used. A value to be output may thus be
|
||||||
written direcly into the VAL field from elsewhere as long as the record is in
|
written directly into the VAL field from elsewhere as long as the record is in
|
||||||
C<<< supervisory >>> mode.
|
C<<< supervisory >>> mode.
|
||||||
|
|
||||||
=fields OMSL, DOL, VAL
|
=fields OMSL, DOL, VAL
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ These fields are described in L<Scan Fields|dbCommonRecord/Scan Fields>.
|
|||||||
The printf record must specify the desired output string with embedded format
|
The printf record must specify the desired output string with embedded format
|
||||||
specifiers in the FMT field. Plain characters are copied directly to the output
|
specifiers in the FMT field. Plain characters are copied directly to the output
|
||||||
string. A pair of percent characters 'C<%%>' are converted into a single percent
|
string. A pair of percent characters 'C<%%>' are converted into a single percent
|
||||||
character in the output string. A single precent character 'C<%>' introduces a
|
character in the output string. A single percent character 'C<%>' introduces a
|
||||||
format specifier and is followed by zero or more of the standard C<printf()>
|
format specifier and is followed by zero or more of the standard C<printf()>
|
||||||
format flags and modifiers:
|
format flags and modifiers:
|
||||||
|
|
||||||
|
|||||||
@@ -133,8 +133,8 @@ alarms that are common to all record types.
|
|||||||
These fields are configurable by the user. They are used as deadbands for the
|
These fields are configurable by the user. They are used as deadbands for the
|
||||||
archiver and monitor calls for the VAL field. Unless, VAL changes by more than
|
archiver and monitor calls for the VAL field. Unless, VAL changes by more than
|
||||||
the value specified by each, then the respective monitors will not be called. If
|
the value specified by each, then the respective monitors will not be called. If
|
||||||
these fields have a value of zero, everytime the VAL changes, monitors are
|
these fields have a value of zero, every time the VAL changes, monitors are
|
||||||
triggered; if they have a value of -1, everytime the record is processed,
|
triggered; if they have a value of -1, every time the record is processed,
|
||||||
monitors are triggered.
|
monitors are triggered.
|
||||||
|
|
||||||
=fields ADEL, MDEL
|
=fields ADEL, MDEL
|
||||||
|
|||||||
@@ -100,8 +100,8 @@ field. The appropriate monitors are invoked when VAL differs from the values in
|
|||||||
the ALST and MLST run-time fields, i.e., when the value of VAL changes by more
|
the ALST and MLST run-time fields, i.e., when the value of VAL changes by more
|
||||||
than the deadband specified in these fields. The ADEL and MDEL fields specify a
|
than the deadband specified in these fields. The ADEL and MDEL fields specify a
|
||||||
minimum delta which the change must surpass before the value-change monitors are
|
minimum delta which the change must surpass before the value-change monitors are
|
||||||
invoked. If these fields have a value of zero, everytime the value changes, a
|
invoked. If these fields have a value of zero, every time the value changes, a
|
||||||
monitor will be triggered; if they have a value of -1, everytime the record is
|
monitor will be triggered; if they have a value of -1, every time the record is
|
||||||
processed, monitors are triggered. The ADEL field is used by archive monitors
|
processed, monitors are triggered. The ADEL field is used by archive monitors
|
||||||
and the MDEL field for all other types of monitors.
|
and the MDEL field for all other types of monitors.
|
||||||
|
|
||||||
@@ -290,7 +290,7 @@ This example for a VxWorks IOC shows an asynchronous subroutine. It uses
|
|||||||
(actually misuses) fields A and B. Field A is taken as the number of seconds
|
(actually misuses) fields A and B. Field A is taken as the number of seconds
|
||||||
until asynchronous completion. Field B is a flag to decide if messages should be
|
until asynchronous completion. Field B is a flag to decide if messages should be
|
||||||
printed. Lets assume A E<gt> 0 and B = 1. The following sequence of actions will
|
printed. Lets assume A E<gt> 0 and B = 1. The following sequence of actions will
|
||||||
occcur:
|
occur:
|
||||||
|
|
||||||
=over
|
=over
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# Fixed menus
|
# Fixed menus
|
||||||
include "menuGlobal.dbd"
|
include "menuGlobal.dbd"
|
||||||
|
|
||||||
# Modifyable menus
|
# Modifiable menus
|
||||||
include "menuConvert.dbd"
|
include "menuConvert.dbd"
|
||||||
include "menuScan.dbd"
|
include "menuScan.dbd"
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ void usage(const char *arg0, const std::string& base_dbd) {
|
|||||||
" -D <dbd> If used, must come first. Specify the path to the softIoc.dbdfile."
|
" -D <dbd> If used, must come first. Specify the path to the softIoc.dbdfile."
|
||||||
" The compile-time install location is saved in the binary as a default.\n"
|
" The compile-time install location is saved in the binary as a default.\n"
|
||||||
"\n"
|
"\n"
|
||||||
" -h Print this mesage and exit.\n"
|
" -h Print this message and exit.\n"
|
||||||
"\n"
|
"\n"
|
||||||
" -S Prevents an interactive shell being started.\n"
|
" -S Prevents an interactive shell being started.\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
|||||||
@@ -405,7 +405,7 @@ field tables that refer to a locally-defined menu will generate a link to a
|
|||||||
document section which must be titled "Menu [menuName]".
|
document section which must be titled "Menu [menuName]".
|
||||||
|
|
||||||
The "title" keyword should only appear once in each file, it sets the document
|
The "title" keyword should only appear once in each file, it sets the document
|
||||||
title as well as generating a "head1" heading with "EPICS Reference:" pre-pended
|
title as well as generating a "head1" heading with "EPICS Reference:" prepended
|
||||||
to the text.
|
to the text.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ static void testLinkParse(void)
|
|||||||
if (td->info.target && info.target)
|
if (td->info.target && info.target)
|
||||||
testStrcmp(0, info.target, td->info.target);
|
testStrcmp(0, info.target, td->info.target);
|
||||||
else if(!!td->info.target ^ !!info.target)
|
else if(!!td->info.target ^ !!info.target)
|
||||||
testFail("info target NULL mis-match %s %s", info.target, td->info.target);
|
testFail("info target NULL mismatch %s %s", info.target, td->info.target);
|
||||||
else
|
else
|
||||||
testPass("info target NULL as expected");
|
testPass("info target NULL as expected");
|
||||||
if (info.ltype == td->info.ltype) {
|
if (info.ltype == td->info.ltype) {
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
# ERROR: alias using name of exising alias for different record
|
# ERROR: alias using name of existing alias for different record
|
||||||
alias("testrec", "testaliasAgain1")
|
alias("testrec", "testaliasAgain1")
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
# ERROR: alias using name of exising record fails
|
# ERROR: alias using name of existing record fails
|
||||||
alias("testrecAgain", "testrec")
|
alias("testrecAgain", "testrec")
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ record(x, "testdelrec8") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
record("#", "no:such:record") { }
|
record("#", "no:such:record") { }
|
||||||
record("#", "also:non:existant") {
|
record("#", "also:non:existent") {
|
||||||
field(FOO, "5")
|
field(FOO, "5")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ xdrv *xdrv_get(int group)
|
|||||||
return curd;
|
return curd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cantProceed("xdrv_get() for non-existant group");
|
cantProceed("xdrv_get() for non-existent group");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ record(sub, "done1") {
|
|||||||
|
|
||||||
|
|
||||||
# original problem case
|
# original problem case
|
||||||
# async record chained after syncronous record
|
# async record chained after synchronous record
|
||||||
record(calcout, "chain2:1") {
|
record(calcout, "chain2:1") {
|
||||||
field(CALC, "A:=A+1;B")
|
field(CALC, "A:=A+1;B")
|
||||||
# ODLY=0 synchronous
|
# ODLY=0 synchronous
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ static void test_high(void){
|
|||||||
/* set VAL to process record */
|
/* set VAL to process record */
|
||||||
testdbPutFieldOk("test_bo_rec.VAL", DBF_SHORT, TRUE);
|
testdbPutFieldOk("test_bo_rec.VAL", DBF_SHORT, TRUE);
|
||||||
|
|
||||||
/* wait and verfiy time */
|
/* wait and verify time */
|
||||||
testMonitorWait(test_mon);
|
testMonitorWait(test_mon);
|
||||||
epicsTimeGetCurrent(&endTime);
|
epicsTimeGetCurrent(&endTime);
|
||||||
|
|
||||||
|
|||||||
@@ -1018,7 +1018,7 @@ POSIX_Init ( void *argument __attribute__((unused)))
|
|||||||
#if defined(QEMU_FIXUPS) && defined(__i386__)
|
#if defined(QEMU_FIXUPS) && defined(__i386__)
|
||||||
// glorious hack to stub out useless EEPROM check
|
// glorious hack to stub out useless EEPROM check
|
||||||
// which takes sooooo longggg w/ QEMU
|
// which takes sooooo longggg w/ QEMU
|
||||||
// Writes a 'ret' instruction to immediatly return to the caller
|
// Writes a 'ret' instruction to immediately return to the caller
|
||||||
extern void _bsd_e1000_validate_nvm_checksum(void);
|
extern void _bsd_e1000_validate_nvm_checksum(void);
|
||||||
*(char*)&_bsd_e1000_validate_nvm_checksum = 0xc3;
|
*(char*)&_bsd_e1000_validate_nvm_checksum = 0xc3;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ static int cond_search(const char **ppinst, int match);
|
|||||||
|
|
||||||
/* calcPerform
|
/* calcPerform
|
||||||
*
|
*
|
||||||
* Evalutate the postfix expression
|
* Evaluate the postfix expression
|
||||||
*/
|
*/
|
||||||
LIBCOM_API long
|
LIBCOM_API long
|
||||||
calcPerform(double *parg, double *presult, const char *pinst)
|
calcPerform(double *parg, double *presult, const char *pinst)
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ typedef enum {
|
|||||||
UNARY_OPERATOR,
|
UNARY_OPERATOR,
|
||||||
VARARG_OPERATOR,
|
VARARG_OPERATOR,
|
||||||
BINARY_OPERATOR,
|
BINARY_OPERATOR,
|
||||||
SEPERATOR,
|
SEPARATOR,
|
||||||
CLOSE_PAREN,
|
CLOSE_PAREN,
|
||||||
CONDITIONAL,
|
CONDITIONAL,
|
||||||
EXPR_TERMINATOR,
|
EXPR_TERMINATOR,
|
||||||
@@ -155,7 +155,7 @@ static const ELEMENT operators[] = {
|
|||||||
{"*", 5, 5, -1, BINARY_OPERATOR,MULT},
|
{"*", 5, 5, -1, BINARY_OPERATOR,MULT},
|
||||||
{"**", 6, 6, -1, BINARY_OPERATOR,POWER},
|
{"**", 6, 6, -1, BINARY_OPERATOR,POWER},
|
||||||
{"+", 4, 4, -1, BINARY_OPERATOR,ADD},
|
{"+", 4, 4, -1, BINARY_OPERATOR,ADD},
|
||||||
{",", 0, 0, 0, SEPERATOR, NOT_GENERATED},
|
{",", 0, 0, 0, SEPARATOR, NOT_GENERATED},
|
||||||
{"-", 4, 4, -1, BINARY_OPERATOR,SUB},
|
{"-", 4, 4, -1, BINARY_OPERATOR,SUB},
|
||||||
{"/", 5, 5, -1, BINARY_OPERATOR,DIV},
|
{"/", 5, 5, -1, BINARY_OPERATOR,DIV},
|
||||||
{":", 0, 0, -1, CONDITIONAL, COND_ELSE},
|
{":", 0, 0, -1, CONDITIONAL, COND_ELSE},
|
||||||
@@ -343,7 +343,7 @@ LIBCOM_API long
|
|||||||
operand_needed = TRUE;
|
operand_needed = TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SEPERATOR:
|
case SEPARATOR:
|
||||||
if (pstacktop == stack) {
|
if (pstacktop == stack) {
|
||||||
*perror = CALC_ERR_BAD_SEPERATOR;
|
*perror = CALC_ERR_BAD_SEPERATOR;
|
||||||
goto bad;
|
goto bad;
|
||||||
|
|||||||
@@ -323,7 +323,7 @@ LIBCOM_API long
|
|||||||
|
|
||||||
/** \brief Run the calculation engine
|
/** \brief Run the calculation engine
|
||||||
*
|
*
|
||||||
* Evaluates the postfix expression against a set ot input values.
|
* Evaluates the postfix expression against a set of input values.
|
||||||
*
|
*
|
||||||
* \param parg Pointer to an array of double values for the arguments
|
* \param parg Pointer to an array of double values for the arguments
|
||||||
* \c A-U that can appear in the expression.
|
* \c A-U that can appear in the expression.
|
||||||
|
|||||||
@@ -423,7 +423,7 @@ void resTable<T,ID>::show ( unsigned level ) const
|
|||||||
mean, stdDev, maxEntries );
|
mean, stdDev, maxEntries );
|
||||||
printf("%u empty buckets\n", empty);
|
printf("%u empty buckets\n", empty);
|
||||||
if ( X != this->nInUse ) {
|
if ( X != this->nInUse ) {
|
||||||
printf ("this->nInUse didnt match items counted which was %f????\n", X );
|
printf ("this->nInUse didn't match items counted which was %f????\n", X );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1140,7 +1140,7 @@ stringId::~stringId()
|
|||||||
//
|
//
|
||||||
// the HP-UX compiler gives us a warning on
|
// the HP-UX compiler gives us a warning on
|
||||||
// each cast away of const, but in this case
|
// each cast away of const, but in this case
|
||||||
// it cant be avoided.
|
// it can't be avoided.
|
||||||
//
|
//
|
||||||
// The DEC compiler complains that const isn't
|
// The DEC compiler complains that const isn't
|
||||||
// really significant in a cast if it is present.
|
// really significant in a cast if it is present.
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ int dbmfInit(size_t size, int chunkItems)
|
|||||||
pdbmfPvt = &dbmfPvt;
|
pdbmfPvt = &dbmfPvt;
|
||||||
ellInit(&pdbmfPvt->chunkList);
|
ellInit(&pdbmfPvt->chunkList);
|
||||||
pdbmfPvt->lock = epicsMutexMustCreate();
|
pdbmfPvt->lock = epicsMutexMustCreate();
|
||||||
/*allign to at least a double*/
|
/*align to at least a double*/
|
||||||
pdbmfPvt->size = size + size%sizeof(double);
|
pdbmfPvt->size = size + size%sizeof(double);
|
||||||
/* layout is
|
/* layout is
|
||||||
* | itemHeader | REDZONE | size | REDZONE |
|
* | itemHeader | REDZONE | size | REDZONE |
|
||||||
|
|||||||
2
modules/libcom/src/env/envDefs.h
vendored
2
modules/libcom/src/env/envDefs.h
vendored
@@ -82,7 +82,7 @@ LIBCOM_API extern const ENV_PARAM EPICS_ALLOW_POSIX_THREAD_PRIORITY_SCHEDULING;
|
|||||||
*
|
*
|
||||||
* A NULL terminated array of all ENV_PARAM known to EPICS Base.
|
* A NULL terminated array of all ENV_PARAM known to EPICS Base.
|
||||||
* This array is assembled during the EPICS Base build, and
|
* This array is assembled during the EPICS Base build, and
|
||||||
* contains at least the preceeding parameters.
|
* contains at least the preceding parameters.
|
||||||
*/
|
*/
|
||||||
LIBCOM_API extern const ENV_PARAM *env_param_list[];
|
LIBCOM_API extern const ENV_PARAM *env_param_list[];
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ extern "C" {
|
|||||||
*
|
*
|
||||||
* Handles EPICS message codes, and "errno" codes.
|
* Handles EPICS message codes, and "errno" codes.
|
||||||
*
|
*
|
||||||
* Copies in a mesage for any status code. Unknown status codes
|
* Copies in a message for any status code. Unknown status codes
|
||||||
* are printed numerically.
|
* are printed numerically.
|
||||||
*/
|
*/
|
||||||
LIBCOM_API void errSymLookup(long status, char *pBuf, size_t bufLength);
|
LIBCOM_API void errSymLookup(long status, char *pBuf, size_t bufLength);
|
||||||
@@ -65,7 +65,7 @@ LIBCOM_API void errSymTest(epicsUInt16 modnum, epicsUInt16 begErrNum,
|
|||||||
LIBCOM_API void errSymTestPrint(long errNum);
|
LIBCOM_API void errSymTestPrint(long errNum);
|
||||||
LIBCOM_API int errSymBld(void);
|
LIBCOM_API int errSymBld(void);
|
||||||
/** @brief Define new custom error code and associate message string.
|
/** @brief Define new custom error code and associate message string.
|
||||||
* @param errNum New error code. Caller is reponsible for avoiding reuse of existing codes.
|
* @param errNum New error code. Caller is responsible for avoiding reuse of existing codes.
|
||||||
* @param message New message. Pointer stored. Caller must not free pointed storage.
|
* @param message New message. Pointer stored. Caller must not free pointed storage.
|
||||||
* @return 0 on success
|
* @return 0 on success
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ LIBCOM_API fdctx * epicsStdCall fdmgr_init(void);
|
|||||||
* Specify a function to be called with a specified parameter
|
* Specify a function to be called with a specified parameter
|
||||||
* after a specified delay relative to the current time
|
* after a specified delay relative to the current time
|
||||||
*
|
*
|
||||||
* Returns fdmgrNoAlarm (zero) if alarm cant be created
|
* Returns fdmgrNoAlarm (zero) if alarm can't be created
|
||||||
*/
|
*/
|
||||||
#define fdmgrNoAlarm 0
|
#define fdmgrNoAlarm 0
|
||||||
LIBCOM_API fdmgrAlarmId epicsStdCall fdmgr_add_timeout(
|
LIBCOM_API fdmgrAlarmId epicsStdCall fdmgr_add_timeout(
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user