<base>/dbd/softIoc.dbd adopted as a default under $EPICS_BASE/dbd/softIoc.dbd
Default CAPR_DBD_FILE becomes EPICS_CAPR_DBD_FILE
Clearer validation and default assignment for interest level ($ARGV[1])
Removed mapping of DBFs that were still using "ezca" labels.
Double quotes around channel names. Tested with ai, calc and mbbo records.
Tested DBF_ULONG fields on mbbo records.
Fixed problem when displaying hex char.
This is a partial fix of a WIN32-only problem Mark Rivers reported.
A WIN32 thread created by a manufacturer's library is used to call one
of his callback routines, which tries to use an epics facility that has
an epicsThreadOnce(). The new version of epicsThreadOnce() uses
epicsThreadGetIdSelf() to detect recursive initialization; the thread
doesn't have an epicsThreadId yet, so epicsThreadImplicitCreate() is
asked to make one. It calls epicsThreadGetOsiPriorityValue(), but
osdPriority is 15 which is not known by that code, so it reports an
error by calling errlogPrintf(). That checks epicsThreadIsOkToBlock()
which calls epicsThreadOnce() but that needs our epicsThreadId...
This doesn't solve the issue of the unknown osdPriority value 15
(priorityClass = 32), but it allows the IOC to continue working with
just a warning message at init time.
It also points out that calling epicsThreadGetIdSelf() every time we
check an epicsThreadOnce() is probably not good for performance.
An epicsThreadOnceId is now an epicsThreadId.
During initialization, it is set to the thread running the init routine
which can now detect a recursive initialization attempt and suspend.
EPICS_THREAD_ONCE_INIT is still zero, the implementations now define a
new private value for EPICS_THREAD_ONCE_DONE. This is deliberately not
made public.
Loading a .db file that uses an unknown record type leaves items
on the parser's tempList. This patch empties that list when the
error is reported so future dbLoadRecords() commands can run.
Device support init_record is allowed to set VAL to 1.
If uninitialized then mlst is 0.
During the first process() this will miss a monitor if VAL is changed to 0,
and cause a spurious monitor if VAL remains 1.
- mdavidsaver