Add test for interrupt handler function to the virtual os table.
Adds a stub implementation to devLib.c
Renames OS implementations functions for RTEMS and vxWorks to avoid symbol name conflicts
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.
* Pulled out tcpiiu::SearchDestTCP to have cac create the SearchDest independent from the TCP circuit
* Reorganized the relation between the SearchDestTCP and the TCP circuit:
- SearchDest stays always on the cac list
- TCP connection going down sets SearchDest inactive and SearchDestTCP's circuit member to NULL
- Next seach request creates the new TCP circuit and sets SearchDestTCP's member, but leaves SearchDest inactive
- Successful connect sets SearchDest active
* ReceiveThread releases the cac mutex before going to sleep in connect loop
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