When sending a message, if the queue is full so we have to wait, we
create a threadNode with an eventNode in it and stick it on the
sendQueue, then wait for a receiver to signal that event, waking us.
If we awoke due to a timeout but a receiver was actually waking us
up anyway (i.e. eventSent was set), we shouldn't give up.
Introduced freeEventNode() which ensures eventNodes don't have a
signalled event in them before returning the node to the freeList.
Callers pass the status from epicsEventWaitWithTimeout() to indicate
whether it was signalled or not. If it timed out we must trigger it
and Wait to clear the event state.
It appears that previously a negative timeout actually implemented a
'wait forever', but the VxWorks and RTEMS implementations both check
for (timeout <= 0) and return immediately if nothing can be done
without waiting.
* lp-anj7/expanded-rules:
Generate module version files with new RULES_EXPAND facilities
Extend RULES_EXPAND to add more features
More generator doc updates
Document <library>_API = <stem> for Makefiles
Convert epicsShareAPI to epicsStdCall in modules/ca
Update generator script
Modify rules to allow multiple API.h libraries to be built
Convert modules/ca to use LIBCA_API instead of epicsShare
Try out a representative sample of APIs from multiple libraries
Add build rules to generate and install *API.h header files
Add script to generate *API.h headers
* lp-anj7/typed-dsets:
Bump database version to 3.18.0, use in SHRLIB_VERSION
Adjust example code in devSup.h
Set USE_TYPED_DSET centrally now everything uses it
Update the wording of the Release Notes entry
- Record updates: . histogramRecord . eventRecord . aaiRecord . aaoRecord
- Record updates: . aoRecord . biRecord . boRecord . mbbiRecord . mbbiDirectRecord . mbboRecord . mbboDirectRecord . longinRecord . longoutRecord . stringoutRecord . stringinRecord . waveformRecord . calcoutRecord . subArrayRecord
initial typed-dset changes for ao record
Add Release Notes entry about dsets
Export and use aidset, set USE_TYPED_DSET
Remove duplicated include line
Add HAS_<record>dset macros to allow detection
Export and use int64outdset, set USE_TYPED_DSET
Export and use int64indset, set USE_TYPED_DSET
Modify lsodset, set USE_TYPED_DSET
Modify lsidset, set USE_TYPED_DSET
Modify printfdset, set USE_TYPED_DSET
Don't apply the %.tap: %.t and %.xml: %.tap rules to tap and junit
result files from other test frameworks.
(They would overwrite the other frameworks' own rules.)
Use only %.t files in new TESTSCRIPTS.t var for Perl tests.
TAPFILES and JUNITFILES can be appended to by other rules.
The runtests and test-results rules have no direct recipes.
Added run-tap-tests and tap-results rules, simlified recipe.
Make %.tap:%.t and %.xml:%.tap into static pattern rules.
It was created before modern continuous integration systems
came along; Diamond were supposed to run the tests for us,
but they didn't last for very long.
For all standard build ACTIONS, a rule before-<action> is
run just before running that action in the subdirectories
given by the DIRS variable. Only works in Makefiles that
include RULES_DIRS or RULES_TOP.
Lists the directories with failed tests at the end of the build.
It is no longer necessary to use 'make -k' to see the results
of all tests after one or more failures as only the top-level
test-results recipe will generate a build error.