plugins don't need to inspect more than
field_type, field_size, and no_elements.
In case they do define type=val to prevent
accidental use of uninitialized pointer.
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.
The filter plugins are now in src/std/filters
and their tests in the test subdirectory.
Various portability issues found and fixed:
* Variable declarations after statements in a block
* Code assuming that epicsInt32 = long
* // comments in C files
Removed a number of tests that weren't really tests;
preconditions for future tests that don't actually check
the code being tested should call testAbort() if the
condition fails, which tells the test harness that you
meant to die at that point.
Split up lots of very long source lines.
Probably made a few other changes that I forget about now.
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.
All are now robust against overflow, NAN or negative argument.
Passing seconds=0 calls the OS scheduler, offering to yield.
Passing seconds>0 delays at least the requested time, up to a
limit which usually depends on the OS tick rate.
Mostly just layout changes, removing unnecessary casts, and
replacing 'unsigned short' with epicsEnum16 types.
The only significant code change is in the alarm filtering
code of the mbbi record, which wasn't handling UDF alarms
or unknown state alarms quite right.