Also made additional changes:
* Simplified xRecord.c so it can run on vxWorks.
* Standard way to load DBD and DB files in tests
All test harnesses now run on vxWorks (but some tests still fail).
- call (generic) exit hook after calling the (specific) epicsExitCallAtThreadExits()
- for start hooks added as 1-2-3, run exit hooks in opposite order: 3-2-1
- add calls to hooks module to WIN32 osdThread.c
- add lock/unlock to hook list traversal
The strtoul() routine accepts negative numbers. This fix
ensures we handle them properly, and adds suitable tests.
Also fix the test for 1e300, in case the compiler gives a
slightly different literal constant than strtod() returns.
This lets us use epicsParseDouble() for scan rate parsing.
Ensure the scanOnce thread is a higher priority than the fastest
periodic scan thread, irrespective of how many threads there are.
- add Linux implementation that
+ sets the system command name to the EPICS thread name
+ retrieves the Linux LWP ID and prints it instead of the posix thread ID
in show commands
Adds new routines for converting numeric strings into the
standard epicsInt8, epicsUInt8, epicsInt16, epicsUInt16,
epicsInt32 and epicsUInt32 types, along with Long, ULong,
Double and Float. These all provide error checking and
detection of extraneous characters. The epicsScanDouble
and epicsScanFloat routines originally in epicsStdlib.h
are replaced by macros that call the epicsParse routine,
and this also provides epicsScanLong and epicsScanULong
to match.
A test file is added to ensure conversions work properly
and report appropriate errors. This file also checks the
native strtod() routine if not used to check whether the
epicsStrtod() code is required on this platform.
Michael backed out a few changes and added some others.
I added some modifications to default/osdMessageQueue.cpp to
remove arguments from a couple of internal (static) functions.
This removes various calls to cantProceed() and its relatives
and replaces them with an error return status when a resource
allocation fails. It only does it for routines that already
have an error status return, so it makes no API changes, and
will prevent threads from being suspended unnecessarily.
This separates out the rules for %.d files from the rules that
create the related target file (%.o etc). Doing this can reduce
the amount of work to be done when rebuilding applications after
making source changes. For files in O.Common which can be built
by any target architecture this can solve problems when parallel
builds (-j) are used.
Report throw from first call to epicsTime::getCurrent().
Reorganized test order so a bad time provider doesn't stop
all tests from being run. Also cleaned up a few extraneous
variables.