These replace the mixture of macros used to pick the features
presented by the standard system header files on Linux.
Updated the section of the CA reference manual that showed some
example compile lines to correct for 3.15 build changes.
Removed unused code & out-of-date comments.
dependent on its ability to lock part or all of the process's virtual
address space into RAM, preventing that memory from being paged to the swap
area. This patch will attempt to lock the process's virtual address space into
RAM if the process has the ability to run threads with different priorities. If
unsuccessful, it prints an message to stderr.
In Linux, one can grant a process the ability to run threads with different
priorities by using a command like ulimit -r unlimited. To use the FIFO
scheduler, use a command like so - chrt -f 1 softIoc -d test.db
In Linux, one can grant a process the ability to lock memory by using a command
like ulimit -l unlimited. Alternatively, these limits can be configured on a per
user/per group basis by using /etc/security/limits.conf or its equivalent.
In Linux, a child process created via fork inherits its parent's resource
limits. Thus, it is probably a good idea to start the caRepeater before
starting the IOC.
Circular initialization problem that Murali discovered when you
try to fprintf(stderr) from the posix/osdThread.c once() routine.
This change lets the stderr stream through in that case.
The __STDC_VERSION__ >= 199901L test never succeeds
in C++, and there were issues with the epicsInt8
definition anyway (int8_t is signed, but char might
not be).
I also removed the epicsBoolean enum which we never use.
Using the m_ prefix to denote class data members is dangerous in
code that has to compile on VxWorks 5.5 (which 3.15 does) because
the net/mbuf.h header contains the following macro definitions:
#define m_next mBlkHdr.mNext
#define m_len mBlkHdr.mLen
#define m_data mBlkHdr.mData
#define m_type mBlkHdr.mType
#define m_flags mBlkHdr.mFlags
#define m_nextpkt mBlkHdr.mNextPkt
#define m_act m_nextpkt
#define m_pkthdr mBlkPktHdr
#define m_ext pClBlk
#define m_extBuf m_ext->clNode.pClBuf
#define m_extFreeRtn m_ext->pClFreeRtn
#define m_extSize m_ext->clSize
#define m_extRefCnt m_ext->clRefCnt
#define m_extArg1 m_ext->clFreeArg1
#define m_extArg2 m_ext->clFreeArg2
#define m_extArg3 m_ext->clFreeArg3
#define m_copy(m, o, l) m_copym((m), (o), (l), M_DONTWAIT)
#define m_copym(m, o, l, w) netMblkChainDup(_pNetDpool, (m), (o), (l), (w))
#define m_freem(m) netMblkClChainFree(m)
#define m_free(m) netMblkClFree(m)
#define m_mbufs mNum
#define m_drops mDrops
#define m_wait mWait
#define m_drain mDrain
#define m_mtypes mTypes
While the names in the original change all appear to be safe, I
don't want us to start using this convention because we will then
have to police commits more closely or risk build failures in the
future when someone who doesn't know about or remember the issue
can't or doesn't try building their code against VxWorks 5.5.
I don't particularly like the this-> convention to mark member
names either, but until the VxWorks 5.5 support requirement goes
away the m_ convention is worse. Another common convention of
using a leading underscore is not safe either, those names are
reserved for the C/C++ implementation.
Build errors: Include guard missing from epicsUnitTest.h;
dbShutdownTest.c was calling the non-universal strcasecmp()
instead of epicsStrCaseCmp().
ioc/db/test no longer depends on std. I modified
xRecord to make it a working record type, and simplified the
other test programs so they all use the same new expanded
dbd file rather than each making their own. I also added
dbShutdownTest() to epicsRunDbTests().
add epicsSpinMustCreate()
Fix spinlock on RTEMS and vxWorks
UP systems to disable task preemption.
Don't use posix spinlocks when
thread priorities are used.