Merged changes from 3.14 branch
Fixed issues building on Solaris. Up to revno 12497.
This commit is contained in:
@@ -197,7 +197,7 @@ endif
|
||||
|
||||
$(TESTPRODNAME) $(PRODNAME): $(PRODUCT_OBJS) $(PROD_RESS) $(PROD_DEPLIBS)
|
||||
|
||||
$(TESTPRODNAME) $(PRODNAME):%$(EXE):
|
||||
$(TESTPRODNAME) $(PRODNAME): %$(EXE):
|
||||
@$(RM) $@
|
||||
$(DEBUGCMD) $(LINK.cpp)
|
||||
$(MT_EXE_COMMAND)
|
||||
@@ -218,15 +218,21 @@ $(TESTPRODNAME) $(PRODNAME):%$(EXE):
|
||||
@$(RM) $@
|
||||
$(HDEPENDS.cpp) $<
|
||||
|
||||
%$(OBJ): %.c
|
||||
# Cancel GNUMake's built-in rules, which don't have our _INC
|
||||
# dependencies so could get used in some circumstances (gdd)
|
||||
%.o : %.c
|
||||
%.o : %.cc
|
||||
%.o : %.cpp
|
||||
|
||||
%$(OBJ): %.c $(COMMON_INC) $(INSTALL_INC)
|
||||
@$(RM) $@
|
||||
$(COMPILE.c) -c $<
|
||||
|
||||
%$(OBJ): %.cc
|
||||
%$(OBJ): %.cc $(COMMON_INC) $(INSTALL_INC)
|
||||
@$(RM) $@
|
||||
$(COMPILE.cpp) -c $<
|
||||
|
||||
%$(OBJ): %.cpp
|
||||
%$(OBJ): %.cpp $(COMMON_INC) $(INSTALL_INC)
|
||||
@$(RM) $@
|
||||
$(COMPILE.cpp) -c $<
|
||||
|
||||
|
||||
@@ -20,12 +20,11 @@ COMPILER_LDFLAGS += -mt
|
||||
|
||||
SOLARIS_VERSION = $(subst 5.,,$(shell uname -r))
|
||||
|
||||
POSIX_CPPFLAGS += -D_POSIX_C_SOURCE=200112L $(POSIX_CPPFLAGS_$(SOLARIS_VERSION))
|
||||
POSIX_CPPFLAGS += -D_XOPEN_SOURCE=500
|
||||
POSIX_LDLIBS += -lposix4 -lpthread $(POSIX_LDLIBS_$(SOLARIS_VERSION))
|
||||
POSIX_CFLAGS = -xc99 -D_POSIX_C_SOURCE=200112L
|
||||
POSIX_LDLIBS += -lposix4 -lpthread
|
||||
|
||||
OP_SYS_CPPFLAGS += -DSOLARIS=$(SOLARIS_VERSION) $(COMPILER_CPPFLAGS)
|
||||
OP_SYS_LDFLAGS += $(COMPILER_LDFLAGS)
|
||||
OP_SYS_LDFLAGS += $(COMPILER_LDFLAGS)
|
||||
|
||||
# Set runtime path for shared libraries
|
||||
SHRLIBDIR_RPATH_LDFLAGS_YES += $(SHRLIB_DEPLIB_DIRS:%=-R%)
|
||||
|
||||
@@ -9,13 +9,15 @@
|
||||
|
||||
# Include definitions common to all solaris-sparc target archs
|
||||
include $(CONFIG)/os/CONFIG.Common.solaris-sparc
|
||||
# CONFIG.Common.solaris-sparc
|
||||
|
||||
COMPILER_CPPFLAGS = -D_REENTRANT
|
||||
COMPILER_CPPFLAGS = -D_REENTRANT
|
||||
|
||||
POSIX_CFLAGS = -std=gnu99 -D_POSIX_C_SOURCE=200112L
|
||||
|
||||
STLPORT_LDLIBS_NO =
|
||||
|
||||
OP_SYS_LDLIBS_8 = -ldl
|
||||
OP_SYS_LDLIBS_9 = -ldl
|
||||
OP_SYS_LDLIBS_10 =
|
||||
OP_SYS_LDLIBS_11 = -lc
|
||||
|
||||
|
||||
@@ -20,9 +20,8 @@ COMPILER_LDFLAGS += -mt
|
||||
|
||||
SOLARIS_VERSION = $(subst 5.,,$(shell uname -r))
|
||||
|
||||
POSIX_CPPFLAGS += -D_POSIX_C_SOURCE=200112L $(POSIX_CPPFLAGS_$(SOLARIS_VERSION))
|
||||
POSIX_CPPFLAGS += -D_XOPEN_SOURCE=500
|
||||
POSIX_LDLIBS += -lposix4 -lpthread $(POSIX_LDLIBS_$(SOLARIS_VERSION))
|
||||
POSIX_CFLAGS = -xc99 -D_POSIX_C_SOURCE=200112L
|
||||
POSIX_LDLIBS += -lposix4 -lpthread
|
||||
|
||||
OP_SYS_CPPFLAGS += -DSOLARIS=$(SOLARIS_VERSION) $(COMPILER_CPPFLAGS)
|
||||
OP_SYS_LDFLAGS += $(COMPILER_LDFLAGS)
|
||||
@@ -53,6 +52,7 @@ OP_SYS_LDLIBS += -lsocket -lnsl
|
||||
OP_SYS_LDLIBS_8 += -ldl -lCrun -lc
|
||||
OP_SYS_LDLIBS_9 += -ldl -lCrun -lc
|
||||
OP_SYS_LDLIBS_10 += -lCrun -lc
|
||||
OP_SYS_LDLIBS_11 += -lCrun -lc
|
||||
OP_SYS_LDLIBS += $(OP_SYS_LDLIBS_$(SOLARIS_VERSION))
|
||||
OP_SYS_LDLIBS += $(STLPORT_LDLIBS_$(USE_STLPORT))
|
||||
|
||||
|
||||
@@ -12,9 +12,12 @@ include $(CONFIG)/os/CONFIG.Common.solaris-x86
|
||||
|
||||
COMPILER_CPPFLAGS = -D_REENTRANT
|
||||
|
||||
POSIX_CFLAGS = -std=gnu99 -D_POSIX_C_SOURCE=200112L
|
||||
|
||||
STLPORT_LDLIBS_NO =
|
||||
|
||||
OP_SYS_LDLIBS_8 = -ldl -lc
|
||||
OP_SYS_LDLIBS_9 = -ldl -lc
|
||||
OP_SYS_LDLIBS_10 = -lc
|
||||
OP_SYS_LDLIBS_11 = -lc
|
||||
|
||||
|
||||
@@ -11,14 +11,13 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorksCommon
|
||||
|
||||
# Vx GNU cross compiler suffix
|
||||
CMPLR_SUFFIX = 386
|
||||
CMPLR_SUFFIX = pentium
|
||||
|
||||
ARCH_CLASS = pc486
|
||||
ARCH_CLASS = x86
|
||||
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=I80486 -D_X86_
|
||||
ARCH_DEP_CFLAGS = -m486
|
||||
ARCH_DEP_CXXFLAGS += -x 'c++'
|
||||
ARCH_DEP_CFLAGS += -fno-defer-pop
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=I80486 -D_X86_
|
||||
ARCH_DEP_CFLAGS = -mtune=i486 -march=i486
|
||||
ARCH_DEP_CFLAGS += -fno-zero-initialized-in-bss -fno-defer-pop
|
||||
|
||||
# Allow site overrides
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.vxWorks-486
|
||||
|
||||
@@ -11,12 +11,14 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorksCommon
|
||||
|
||||
# Vx GNU cross compiler suffix
|
||||
CMPLR_SUFFIX = 386
|
||||
|
||||
ARCH_CLASS = pcPentium
|
||||
CMPLR_SUFFIX = pentium
|
||||
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=PENTIUM -D_X86_
|
||||
ARCH_DEP_CFLAGS = -mpentium
|
||||
ARCH_DEP_CXXFLAGS += -x 'c++'
|
||||
ARCH_DEP_CFLAGS += -fno-defer-pop
|
||||
ARCH_CLASS = x86
|
||||
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=PENTIUM -D_X86_
|
||||
ARCH_DEP_CFLAGS = -mtune=pentium -march=pentium
|
||||
ARCH_DEP_CFLAGS += -fno-zero-initialized-in-bss -fno-defer-pop
|
||||
|
||||
# Allow site overrides
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.vxWorks-pentium
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ CMPLR_CLASS = solStudio
|
||||
SPARCWORKS = /opt/SUNWspro
|
||||
GNU = NO
|
||||
|
||||
# SPARCWORKS path is set in a CONFIG_SITE file
|
||||
|
||||
CC = $(SPARCWORKS)/bin/cc
|
||||
CCC = $(SPARCWORKS)/bin/CC
|
||||
CPP = $(CC) -E -Qn
|
||||
|
||||
@@ -5,11 +5,12 @@
|
||||
# Site Specific definitions for solaris-sparc target
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# If readline is installed uncomment the following macro definition
|
||||
# to include command-line editing and history support
|
||||
#
|
||||
# location of the Solaris Studio (was SunPro) compilers
|
||||
SPARCWORKS = /opt/SUNWspro
|
||||
#SPARCWORKS = /opt/solarisstudio12.3
|
||||
|
||||
# Readline library provides command-line editing and history in IOC shell
|
||||
# If readline is installed, uncomment the following macro definition
|
||||
# to use it for command-line editing and history support
|
||||
#COMMANDLINE_LIBRARY = READLINE
|
||||
|
||||
# Use stLport library instead of default Cstd library
|
||||
|
||||
11
configure/os/CONFIG_SITE.Common.solaris-x86
Normal file
11
configure/os/CONFIG_SITE.Common.solaris-x86
Normal file
@@ -0,0 +1,11 @@
|
||||
# CONFIG_SITE.Common.solaris-x86
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific definitions for solaris-x86 targets
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# location of the Solaris Studio (was SunPro) compilers
|
||||
SPARCWORKS = /opt/SUNWspro
|
||||
#SPARCWORKS = /opt/solarisstudio12.3
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
# Site Specific definitions for solaris-x86_64 target
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Include definitions common to all solaris-x86_64 target archs
|
||||
# Include definitions common to all solaris-x86 target archs
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.solaris-x86
|
||||
|
||||
COMMANDLINE_LIBRARY = EPICS
|
||||
|
||||
@@ -4,7 +4,4 @@
|
||||
#
|
||||
# Site specific override definitions for solaris-sparc host builds
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
#INSTALL_LOCATION = /home/phoebus/JBA/testBaseNew
|
||||
|
||||
#CROSS_COMPILER_TARGET_ARCHS += vxWorks-ppc604 vxWorks-ppc603 vxWorks-68040
|
||||
|
||||
@@ -631,7 +631,7 @@ standard out for each CA client beacon anomaly detect event.</p>
|
||||
<p>See also <a href="#Client1">When a Client Does not See the Server's
|
||||
Beacon</a>.</p>
|
||||
|
||||
<h3><a name="Configurin3" id="Configurin3">Configuring the Maximum Search
|
||||
<h3><a name="Configurin3">Configuring the Maximum Search
|
||||
Period</a></h3>
|
||||
|
||||
<p>The rate at which name resolution (search) requests are sent exponentially
|
||||
@@ -896,9 +896,9 @@ feature.</em></p>
|
||||
<p>See also <a href="#Routing">Routing Restrictions on vxWorks Systems</a>.</p>
|
||||
<hr>
|
||||
|
||||
<h2><a name="Building" id="Building">Building an Application</a></h2>
|
||||
<h2><a name="Building">Building an Application</a></h2>
|
||||
|
||||
<h3><a name="Required1" id="Required1">Required Header (.h) Files</a></h3>
|
||||
<h3><a name="Required1">Required Header (.h) Files</a></h3>
|
||||
|
||||
<p>An application that uses the CA client library functions described in this
|
||||
document will need to include the cadef.h header files as follows.</p>
|
||||
@@ -910,7 +910,7 @@ many other header files (operating system specific and otherwise), and
|
||||
therefore the application must also specify "<EPICS
|
||||
base>/include/os/<arch>" in its header file search path.</p>
|
||||
|
||||
<h3><a name="Required" id="Required">Required Libraries</a></h3>
|
||||
<h3><a name="Required">Required Libraries</a></h3>
|
||||
|
||||
<p>An application that uses the Channel Access Client Library functions
|
||||
described in this document will need to link with the EPICS CA Client Library
|
||||
@@ -956,7 +956,7 @@ and Windows systems.</p>
|
||||
<p>The above libraries are located in "<EPICS
|
||||
base>/lib/<architechture>".</p>
|
||||
|
||||
<h3><a name="Compiler" id="Compiler">Compiler and System Specific Build
|
||||
<h3><a name="Compiler">Compiler and System Specific Build
|
||||
Options</a></h3>
|
||||
|
||||
<p>If you do not use the EPICS build environment (layered make files) then it
|
||||
@@ -1641,7 +1641,7 @@ etc.</p>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3><a name="excas" id="excas">excas</a></h3>
|
||||
<h3><a name="excas">excas</a></h3>
|
||||
|
||||
<p>excas [options]</p>
|
||||
|
||||
@@ -1933,7 +1933,7 @@ made to build a new circuit. This behavior could result in undesirable resource
|
||||
consumption resulting from periodic circuit setup and teardown overhead
|
||||
(thrashing) during periods of CPU / network / IP kernel buffer congestion.</p>
|
||||
|
||||
<h3><a name="Requests" id="Requests">Put Requests Just Prior to Process
|
||||
<h3><a name="Requests">Put Requests Just Prior to Process
|
||||
Termination Appear to be Ignored</a></h3>
|
||||
|
||||
<p>Short lived CA client applications that issue a CA put request and then
|
||||
@@ -2555,7 +2555,7 @@ questionable practice for the following reasons.</p>
|
||||
is the same behavior as on all other OS.</li>
|
||||
</ul>
|
||||
|
||||
<h3><a name="Calling1" id="Calling1">Calling CA Functions from POSIX signal
|
||||
<h3><a name="Calling1">Calling CA Functions from POSIX signal
|
||||
handlers</a></h3>
|
||||
|
||||
<p>As you might expect, it isnt safe to call the CA client library from a POSIX
|
||||
|
||||
@@ -57,9 +57,9 @@ void getCallback::completion (
|
||||
// fetch client context and destroy prior to releasing
|
||||
// the lock and calling cb in case they destroy channel there
|
||||
this->chan.getClientCtx().destroyGetCallback ( guard, *this );
|
||||
{
|
||||
if ( pFuncTmp ) {
|
||||
epicsGuardRelease < epicsMutex > unguard ( guard );
|
||||
( *pFuncTmp ) ( args );
|
||||
pFuncTmp ( args );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -343,6 +343,9 @@ int epicsShareAPI ca_array_get_callback ( chtype type,
|
||||
if ( type < 0 ) {
|
||||
return ECA_BADTYPE;
|
||||
}
|
||||
if ( pfunc == NULL ) {
|
||||
return ECA_BADFUNCPTR;
|
||||
}
|
||||
unsigned tmpType = static_cast < unsigned > ( type );
|
||||
|
||||
epicsGuard < epicsMutex > guard ( pChan->cacCtx.mutexRef () );
|
||||
@@ -416,6 +419,9 @@ int epicsShareAPI ca_array_put_callback ( chtype type, arrayElementCount count,
|
||||
if ( type < 0 ) {
|
||||
return ECA_BADTYPE;
|
||||
}
|
||||
if ( pfunc == NULL ) {
|
||||
return ECA_BADFUNCPTR;
|
||||
}
|
||||
epicsGuard < epicsMutex > guard ( pChan->cacCtx.mutexRef () );
|
||||
pChan->eliminateExcessiveSendBacklog ( guard );
|
||||
unsigned tmpType = static_cast < unsigned > ( type );
|
||||
|
||||
@@ -638,7 +638,7 @@ not follow this pattern, but are still printable strings.
|
||||
|
||||
=item [1] R3.14 Channel Access Reference Manual by Jeffrey O. Hill
|
||||
|
||||
L<http://www.aps.anl.gov/epics/base/R3-14/11-docs/CAref.html>
|
||||
L<http://www.aps.anl.gov/epics/base/R3-14/12-docs/CAref.html>
|
||||
|
||||
=back
|
||||
|
||||
@@ -649,7 +649,7 @@ Andrew Johnson, E<lt>anj@aps.anl.govE<gt>
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
Copyright (C) 2008 UChicago Argonne LLC, as Operator of Argonne National
|
||||
Copyright (C) 2008-2014 UChicago Argonne LLC, as Operator of Argonne National
|
||||
Laboratory.
|
||||
|
||||
This software is distributed under the terms of the EPICS Open License.
|
||||
|
||||
@@ -57,9 +57,9 @@ void putCallback::completion ( epicsGuard < epicsMutex > & guard )
|
||||
// fetch client context and destroy prior to releasing
|
||||
// the lock and calling cb in case they destroy channel there
|
||||
this->chan.getClientCtx().destroyPutCallback ( guard, *this );
|
||||
{
|
||||
if ( pFuncTmp ) {
|
||||
epicsGuardRelease < epicsMutex > unguard ( guard );
|
||||
( *pFuncTmp ) ( args );
|
||||
pFuncTmp ( args );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -30,9 +30,11 @@ INC += dbMapper.h
|
||||
INC += gddAppTable.h
|
||||
INC += gddAppFuncTable.h
|
||||
INC += smartGDDPointer.h
|
||||
INC += gddApps.h
|
||||
INC += gddEnumStringTable.h
|
||||
|
||||
# Can't put this in INC, it causes a circular build dependency
|
||||
TARGETS += $(INSTALL_INCLUDE)/gddApps.h
|
||||
|
||||
HTMLS += gdd.html
|
||||
HTMLS += gddref.html
|
||||
HTMLS += gddref2.html
|
||||
|
||||
@@ -63,7 +63,7 @@ rtems_task Init (rtems_task_argument argument);
|
||||
* appropriate conditionals to use.
|
||||
* The new general time support makes including the RTC driverr less important.
|
||||
*/
|
||||
#if !defined(mpc604) && !defined(__mc68040__) && !defined(__mcf5200__) && !defined(mpc7455) && !defined(__arm__) /* don't have RTC code */
|
||||
#if !defined(mpc604) && !defined(__mc68040__) && !defined(__mcf5200__) && !defined(mpc7455) && !defined(__arm__) && !defined(__nios2__)/* don't have RTC code */
|
||||
#define CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
|
||||
#endif
|
||||
|
||||
|
||||
@@ -279,11 +279,45 @@ initialize_remote_filesystem(char **argv, int hasLocalFilesystem)
|
||||
LogFatal("\"%s\" is not a valid command pathname.\n", rtems_bsdnet_bootp_cmdline);
|
||||
cp = mustMalloc(l + 20, "NFS mount paths");
|
||||
server_path = cp;
|
||||
server_name = rtems_bsdnet_bootp_server_name;
|
||||
if (rtems_bsdnet_bootp_cmdline[0] == '/') {
|
||||
mount_point = server_path;
|
||||
strncpy(mount_point, rtems_bsdnet_bootp_cmdline, l);
|
||||
mount_point[l] = '\0';
|
||||
argv[1] = rtems_bsdnet_bootp_cmdline;
|
||||
/*
|
||||
* Its probably common to embed the mount point in the server
|
||||
* name so, when this is occurring, dont clobber the mount point
|
||||
* by appending the first node from the command path. This allows
|
||||
* the mount point to be a different path then the server's mount
|
||||
* path.
|
||||
*
|
||||
* This allows for example a line similar to as follows the DHCP
|
||||
* configuration file.
|
||||
*
|
||||
* server-name "159.233@192.168.0.123:/vol/vol0/bootRTEMS";
|
||||
*/
|
||||
if ( server_name ) {
|
||||
const size_t allocSize = strlen ( server_name ) + 2;
|
||||
char * const pServerName = mustMalloc( allocSize,
|
||||
"NFS mount paths");
|
||||
char * const pServerPath = mustMalloc ( allocSize,
|
||||
"NFS mount paths");
|
||||
const int scanfStatus = sscanf (
|
||||
server_name,
|
||||
"%[^:] : / %s",
|
||||
pServerName,
|
||||
pServerPath + 1u );
|
||||
if ( scanfStatus == 2 ) {
|
||||
pServerPath[0u]= '/';
|
||||
server_name = pServerName;
|
||||
server_path = pServerPath;
|
||||
}
|
||||
else {
|
||||
free ( pServerName );
|
||||
free ( pServerPath );
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
char *abspath = mustMalloc(strlen(rtems_bsdnet_bootp_cmdline)+2,"Absolute command path");
|
||||
@@ -296,7 +330,6 @@ initialize_remote_filesystem(char **argv, int hasLocalFilesystem)
|
||||
strcat(abspath, rtems_bsdnet_bootp_cmdline);
|
||||
argv[1] = abspath;
|
||||
}
|
||||
server_name = rtems_bsdnet_bootp_server_name;
|
||||
}
|
||||
nfsMount(server_name, server_path, mount_point);
|
||||
#endif
|
||||
|
||||
@@ -38,7 +38,7 @@ void epicsThreadRunable::run () {}
|
||||
void epicsThreadRunable::show ( unsigned int ) const {}
|
||||
|
||||
class epicsThread :: unableToCreateThread :
|
||||
public exception {
|
||||
public std :: exception {
|
||||
public:
|
||||
const char * what () const throw ();
|
||||
};
|
||||
@@ -90,7 +90,7 @@ extern "C" void epicsThreadCallEntryPoint ( void * pPvt )
|
||||
}
|
||||
catch ( const epicsThread::exitException & ) {
|
||||
}
|
||||
catch ( std::exception & except ) {
|
||||
catch ( std :: exception & except ) {
|
||||
if ( ! waitRelease ) {
|
||||
pThread->printLastChanceExceptionMessage (
|
||||
typeid ( except ).name (), except.what () );
|
||||
|
||||
@@ -281,39 +281,45 @@ epicsShareFunc osiSockAddr epicsShareAPI osiLocalAddr (SOCKET socket)
|
||||
|
||||
for ( pifreq = ifconf.ifc_req; pifreq <= pIfreqListEnd; pifreq = pnextifreq ) {
|
||||
osiSockAddr addrCpy;
|
||||
uint32_t current_ifreqsize;
|
||||
|
||||
/*
|
||||
* find the next if req
|
||||
*/
|
||||
pnextifreq = ifreqNext ( pifreq );
|
||||
|
||||
if ( pifreq->ifr_addr.sa_family != AF_INET ) {
|
||||
ifDepenDebugPrintf ( ("osiLocalAddr(): interface %s was not AF_INET\n", pifreq->ifr_name) );
|
||||
/* determine ifreq size */
|
||||
current_ifreqsize = ifreqSize ( pifreq );
|
||||
/* copy current ifreq to aligned bufferspace (to start of pIfreqList buffer) */
|
||||
memmove(pIfreqList, pifreq, current_ifreqsize);
|
||||
|
||||
if ( pIfreqList->ifr_addr.sa_family != AF_INET ) {
|
||||
ifDepenDebugPrintf ( ("osiLocalAddr(): interface %s was not AF_INET\n", pIfreqList->ifr_name) );
|
||||
continue;
|
||||
}
|
||||
|
||||
addrCpy.sa = pifreq->ifr_addr;
|
||||
addrCpy.sa = pIfreqList->ifr_addr;
|
||||
|
||||
status = socket_ioctl ( socket, SIOCGIFFLAGS, pifreq );
|
||||
status = socket_ioctl ( socket, SIOCGIFFLAGS, pIfreqList );
|
||||
if ( status < 0 ) {
|
||||
errlogPrintf ( "osiLocalAddr(): net intf flags fetch for %s failed\n", pifreq->ifr_name );
|
||||
errlogPrintf ( "osiLocalAddr(): net intf flags fetch for %s failed\n", pIfreqList->ifr_name );
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( ! ( pifreq->ifr_flags & IFF_UP ) ) {
|
||||
ifDepenDebugPrintf ( ("osiLocalAddr(): net intf %s was down\n", pifreq->ifr_name) );
|
||||
if ( ! ( pIfreqList->ifr_flags & IFF_UP ) ) {
|
||||
ifDepenDebugPrintf ( ("osiLocalAddr(): net intf %s was down\n", pIfreqList->ifr_name) );
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* dont use the loop back interface
|
||||
*/
|
||||
if ( pifreq->ifr_flags & IFF_LOOPBACK ) {
|
||||
ifDepenDebugPrintf ( ("osiLocalAddr(): ignoring loopback interface: %s\n", pifreq->ifr_name) );
|
||||
if ( pIfreqList->ifr_flags & IFF_LOOPBACK ) {
|
||||
ifDepenDebugPrintf ( ("osiLocalAddr(): ignoring loopback interface: %s\n", pIfreqList->ifr_name) );
|
||||
continue;
|
||||
}
|
||||
|
||||
ifDepenDebugPrintf ( ("osiLocalAddr(): net intf %s found\n", pifreq->ifr_name) );
|
||||
ifDepenDebugPrintf ( ("osiLocalAddr(): net intf %s found\n", pIfreqList->ifr_name) );
|
||||
|
||||
init = 1;
|
||||
addr = addrCpy;
|
||||
|
||||
@@ -17,6 +17,10 @@
|
||||
/* same as (!isnan(x) && !finite(x)) */
|
||||
#endif
|
||||
|
||||
#ifndef isnan
|
||||
# define isnan(x) ((x) != (x))
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
@@ -311,7 +311,7 @@ MAIN(epicsCalcTest)
|
||||
testExpr(exp(1.));
|
||||
testExpr(floor(1.5));
|
||||
|
||||
testExpr(finite(0));
|
||||
testExpr(finite(0.));
|
||||
testExpr(finite(Inf));
|
||||
testExpr(finite(-Inf));
|
||||
testExpr(finite(NaN));
|
||||
@@ -325,11 +325,11 @@ MAIN(epicsCalcTest)
|
||||
testCalc("finite(0,1,-Inf)", 0);
|
||||
testCalc("finite(0,-Inf,2)", 0);
|
||||
testCalc("finite(-Inf,1,2)", 0);
|
||||
testExpr(isinf(0));
|
||||
testExpr(isinf(0.));
|
||||
testExpr(isinf(Inf));
|
||||
testExpr(!!isinf(-Inf)); // Some GCCs return -1/0/+1 rather than 0/+1
|
||||
testExpr(isinf(NaN));
|
||||
testExpr(isnan(0));
|
||||
testExpr(isnan(0.));
|
||||
testExpr(isnan(Inf));
|
||||
testExpr(isnan(-Inf));
|
||||
testExpr(isnan(NaN));
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "alarm.h"
|
||||
#include "dbDefs.h"
|
||||
#include "dbAccess.h"
|
||||
#include "epicsMath.h"
|
||||
#include "recGbl.h"
|
||||
#include "devSup.h"
|
||||
#include "aiRecord.h"
|
||||
@@ -78,7 +79,7 @@ static long read_ai(aiRecord *prec)
|
||||
if (!dbGetLink(&prec->inp, DBR_DOUBLE, &val, 0, 0)) {
|
||||
|
||||
/* Apply smoothing algorithm */
|
||||
if (prec->smoo != 0.0 && prec->dpvt)
|
||||
if (prec->smoo != 0.0 && prec->dpvt && finite(prec->val))
|
||||
prec->val = val * (1.00 - prec->smoo) + (prec->val * prec->smoo);
|
||||
else
|
||||
prec->val = val;
|
||||
|
||||
@@ -444,7 +444,7 @@ static void convert(aiRecord *prec)
|
||||
}
|
||||
|
||||
/* apply smoothing algorithm */
|
||||
if (prec->smoo != 0.0){
|
||||
if (prec->smoo != 0.0 && finite(prec->val)){
|
||||
if (prec->init) prec->val = val; /* initial condition */
|
||||
prec->val = val * (1.00 - prec->smoo) + (prec->val * prec->smoo);
|
||||
}else{
|
||||
|
||||
@@ -1,25 +1,18 @@
|
||||
TOP=../..
|
||||
include $(TOP)/configure/CONFIG
|
||||
#----------------------------------------
|
||||
# ADD MACRO DEFINITIONS AFTER THIS LINE
|
||||
# ADD MACRO DEFINITIONS BELOW HERE
|
||||
|
||||
#----------------------------------------------------
|
||||
# Optimization of db files using dbst (DEFAULT: NO)
|
||||
#DB_OPT = YES
|
||||
|
||||
#----------------------------------------------------
|
||||
# Create and install (or just install)
|
||||
# databases, templates, substitutions like this
|
||||
# Install databases, templates & substitutions like this
|
||||
DB += dbExample1.db
|
||||
DB += dbExample2.db
|
||||
DB += dbSubExample.db
|
||||
DB += user.substitutions
|
||||
|
||||
#----------------------------------------------------
|
||||
# If <anyname>.db template is not named <anyname>*.template add
|
||||
# <anyname>_TEMPLATE = <templatename>
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
#----------------------------------------
|
||||
# ADD RULES AFTER THIS LINE
|
||||
# ADD EXTRA GNUMAKE RULES BELOW HERE
|
||||
|
||||
|
||||
@@ -2,38 +2,37 @@ TOP=../..
|
||||
|
||||
include $(TOP)/configure/CONFIG
|
||||
#----------------------------------------
|
||||
# ADD MACRO DEFINITIONS AFTER THIS LINE
|
||||
|
||||
#=============================
|
||||
# Build the IOC support library
|
||||
|
||||
LIBRARY_IOC += _APPNAME_Support
|
||||
# ADD MACRO DEFINITIONS BELOW HERE
|
||||
|
||||
# xxxRecord.h will be created from xxxRecord.dbd
|
||||
DBDINC += xxxRecord
|
||||
# Install devXxxSoft.dbd into <top>/dbd
|
||||
|
||||
# Install xxxSupport.dbd into <top>/dbd
|
||||
DBD += xxxSupport.dbd
|
||||
|
||||
# Build an IOC support library
|
||||
LIBRARY_IOC += _APPNAME_Support
|
||||
|
||||
# Compile and add the code to the support library
|
||||
_APPNAME_Support_SRCS += xxxRecord.c
|
||||
_APPNAME_Support_SRCS += devXxxSoft.c
|
||||
|
||||
# Link locally-provided code into the support library,
|
||||
# rather than directly into the IOC application.
|
||||
# This is required for Windows DLL builds.
|
||||
_APPNAME_Support_SRCS += dbSubExample.c
|
||||
_APPNAME_Support_SRCS += _APPNAME_Hello.c
|
||||
_APPNAME_Support_SRCS += initTrace.c
|
||||
|
||||
_APPNAME_Support_LIBS += $(EPICS_BASE_IOC_LIBS)
|
||||
|
||||
#=============================
|
||||
# Build the IOC application
|
||||
|
||||
PROD_IOC = _APPNAME_
|
||||
|
||||
# _APPNAME_.dbd will be created and installed
|
||||
DBD += _APPNAME_.dbd
|
||||
|
||||
# _APPNAME_.dbd will be made up from these files:
|
||||
# _APPNAME_.dbd will include these files:
|
||||
_APPNAME__DBD += base.dbd
|
||||
_APPNAME__DBD += xxxSupport.dbd
|
||||
_APPNAME__DBD += dbSubExample.dbd
|
||||
@@ -43,19 +42,18 @@ _APPNAME__DBD += initTrace.dbd
|
||||
# _APPNAME__registerRecordDeviceDriver.cpp derives from _APPNAME_.dbd
|
||||
_APPNAME__SRCS += _APPNAME__registerRecordDeviceDriver.cpp
|
||||
|
||||
# Build the main IOC entry point on workstation OSs.
|
||||
# Build the main IOC entry point where needed
|
||||
_APPNAME__SRCS_DEFAULT += _APPNAME_Main.cpp
|
||||
_APPNAME__SRCS_vxWorks += -nil-
|
||||
|
||||
# Add support from base/src/vxWorks if needed
|
||||
#_APPNAME__OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
|
||||
|
||||
# Link in the code from the support library
|
||||
# Link in the code from our support library
|
||||
_APPNAME__LIBS += _APPNAME_Support
|
||||
|
||||
# NOTE: To build SNL programs, SNCSEQ must be defined
|
||||
# To build SNL programs, SNCSEQ must be defined
|
||||
# in the <top>/configure/RELEASE file
|
||||
|
||||
ifneq ($(SNCSEQ),)
|
||||
# Build sncExample into _APPNAME_Support
|
||||
sncExample_SNCFLAGS += +r
|
||||
@@ -72,12 +70,10 @@ ifneq ($(SNCSEQ),)
|
||||
sncProgram_LIBS += $(EPICS_BASE_HOST_LIBS)
|
||||
endif
|
||||
|
||||
# Finally link to the EPICS Base libraries
|
||||
# Finally link IOC to the EPICS Base libraries
|
||||
_APPNAME__LIBS += $(EPICS_BASE_IOC_LIBS)
|
||||
|
||||
#=============================
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
#----------------------------------------
|
||||
# ADD RULES AFTER THIS LINE
|
||||
# ADD EXTRA GNUMAKE RULES BELOW HERE
|
||||
|
||||
|
||||
Reference in New Issue
Block a user