* master: (226 commits)
ioc/db: testdbGetFieldEqual() detect zero size
Cleanup in asLib
Allow whitespace before comments in AS config files
Supress MS warning C4251
Add a plan to std/filters/test/syncTest.c
Fix dbUnitTest.c
avoid void* +=
Fix and test for macLib losing error status
update notes
libCom/test: ipAddrToAsciiTest skip cleanup unless valgrind is possible
libCom/test: add ipAddrToAsciiTest to testHarness
db/test: dbPutGetTest check dbGet() of long string field
db: dbGet() ensure long string nil and actual string length
db/test: dbPutGetTest check for dbGet() attribute crash
db: fix dbGet() for attributes as long string
db/test: dbPutGetTest add test for lp:1678494
db: fix dbGet() of link fields as DBF_CHAR
dbUnitTest: add testdbGetArrFieldEqual()
db/test: add dbPutGetTest
Update release notes as per Michael's review comment
...
Conflicts:
src/ioc/db/dbLink.c
src/ioc/db/test/Makefile
src/std/dev/devSoSoftCallback.c
src/std/rec/boRecord.c
src/std/rec/dfanoutRecord.c
src/std/rec/longinRecord.c
src/std/rec/longoutRecord.c
The lnkConst.c implementation is not yet complete, no support for arrays of
strings (JMOP).
Link error messages should display their record & field name, which is not yet
possible.
The ability to embed links as parameters to other link types is not complete
yet; this will be required for the calc link type.
This code currently passes all existing tests, but additional tests are needed
for the new functionality.
These are set at the same time as the ARCH variable.
Had to add EPICS_VERSION_SHORT and EPICS_VERSION_FULL to epicsVersion.h.
This uses more uniform names, should we change epicsVersion.h names?
We would continue to support the old names in parallel for some time.
This is being done to free the link private struct,
but dbDbRemoveLink() is not used to avoid the overhead
of splitting every lockset just before the PDB
is free'd.
No reason to do this for non-isolated until scans threads
are stopped.
All link types now have a plink->precord pointer.
Add link support entry tables for const, DB and CA link types.
Route all link I/O options through the new plink->lset.
The main reason for this merge proposal is the change to "public" API functions.
Use atomic counter to resolve data race on threadsRunning in callback.
Split up callbackShutdown() and scanShutdown() into two phases *Stop() and
*Cleanup(). The *Stop() functions signal worker threads, and wait for them to
exit. The *Cleanup() functions actually reclaim global resources.
These two mechanisms have couplings which are quite complex. I/O Intr scans
involve both scan lists and callbacks.
iocShutdown() should only stop threads and cleanup
if the IOC was started with iocBuildIsolated().
If iocBuild() is used then only close CA links
as was done previously.
This is needed as some device support calls epicsExit()
(while holding a record lock). This make it impossible
to run the full iocShutdown without deadlocking
in scan/callback shutdown, or segfaulting
in doFreeRecord() or dbLockCleanupRecords()