Systems that generate large numbers of errlog messages or have a slow
message listener could overwrite older messages in the message buffer
after the buffer wraps. This also corrects and annotates the test
code to describe what's being checked.
o Fixed race condition where win32 thread parm was not pushed onto the
list before the thread was started, and so if the thread exits very
quickly it can try to remove a non-existent thread parameter from
the list.
o This impacts only win32.
In disconnectAllChannels mark channels as unassigned to any list
because in some unusual situations (abrupt shutdown) the channels are
not immediately assigned to another list.
Don't use epicsMutexMustLock() in msgbufGetFree().
When we're shutting down, the pvtData.msgQueueLock gets destroyed.
This makes msgbufGetFree() return NULL if the lock is dead.
The epicsMutexMustLock() routine asserts(), which recurses...
Fixed a bug reported by Michael Abbott, NORD goes -ve.
Modified soft channel support so when INP="" it extracts the relevent
sub-array of the existing VAL field; use an external put to set the
array. This lets the other records pull a series of values from the
record in sequence.
Cygwin 1.7 changed the socket shutdown method from BothShutdown
to Close. This fix looks at the cygwin version to work out what
value to return from esscimqi().
o gnu compiler for windows doesnt support well dll exporting individual functions from a class
in debug builds so I switched to exporting the entire interface class in several places
o fixed several places in ca lib where include of epicsTimer.h wasnt properly ifdef'd so
that it is imported by ca header files
--- these issues were already fixed on cvs main trunk ---
Made epicsThreadOnceTest more deterministic, replacing an
epicsThreadSleep() with epicsEventMustWait(), and added a diagnostic
message before running the thread recurse test.
Eric added a series of checks to epicsEventTest.cpp which ensure that
epicsEventSignal() only wakes one waiting thread.
This fixes a bug introduced with the dynamic-array branch.
The new version of db_get_field() was using the dbr_size_n() macro to
calculate the offset to the start of the buffer area to be zeroed, but
when nRequest is zero this gives the wrong result; the dbr_ structures
always contain at least one value element, and dbr_size_n() thus has
to include that in its size calculation.
This fixes the perl compilation failures of fullPathName.pl
that occur before the src/tools directory has been built, and
ensures that the other tools that use EPICS modules also work.