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()
Initialize dbCa workList lock so that CA_LINK
creation in test code doesn't crash.
Once created links will never connect.
clean up workList for unittest when dbCaShutdown
is called state is already exit.
* Moved routines into dbLink.h and dbLink.c
* Created separate routines for DB_LINK processing
* Added dbinitLink() and dbAddLink()
* Started a Link Support Entry Table, not used yet
* Everything should still work as before...
Combine recIoc and softDevIoc libraries into dbRecStd
Move base.dbd from ioc/misc/ to std/softIoc/
Generate stdRecords.dbd from the std/rec/Makefile list of record
types instead of hard-coding it in base.dbd
Merge miscIoc rsrvIoc dbtoolsIoc asIoc dbIoc registryIoc dbStaticIoc
into dbCore.
Move ioc/misc/asSubRecordFunctions.c to std/dev/asSubRecordFunctions.c
since it depends on the subRecord type.
Extracted ioc variable definitions from base.dbd into dbCore.dbd
Added new PN_LINK type in link.h, make dbStaticLib display it.
Made all device support extended so links can be changed at runtime.
Modified startup so add_record() always called before regular link processing.
Incomplete, stilll need to add MS/MSS/MSI support, currently disabled.