Commit Graph

23 Commits

Author SHA1 Message Date
Andrew Johnson
34e0b2f305 osdMessageQueue: Undo change to -ve timeout handling
The internal mySend() and myReceive() routines do expect a timeout
of -1 to mean wait forever, see the epicsMessageQueueSend() and
epicsMessageQueueReceive() API routines.
2020-05-04 11:56:14 -05:00
Andrew Johnson
ceb13797a6 Cosmetic 2020-05-01 00:13:02 -05:00
Andrew Johnson
084557bd3e osdMessageQueue: Don't wake our sender until we're ready for it
Move the code that wakes up the next sending task to after we've
added our threadNode to the receiveQueue. He still has to wait for
us to release the Mutex though, so this might make no difference.
This commit also changes when we decrement the number of waiting
senders so it always happens immediately after a threadNode gets
taken off the sendQueue by the code that removed it.
2020-05-01 00:12:32 -05:00
Andrew Johnson
aeed7cfbdd osdMessageQueue: This is the mirror of Heinz Junkes' earlier fix
When sending a message, if the queue is full so we have to wait, we
create a threadNode with an eventNode in it and stick it on the
sendQueue, then wait for a receiver to signal that event, waking us.
If we awoke due to a timeout but a receiver was actually waking us
up anyway (i.e. eventSent was set), we shouldn't give up.
2020-04-30 23:55:30 -05:00
Andrew Johnson
183c3b2a3e osdMessageQueue: Clear eventNode before returning it
Introduced freeEventNode() which ensures eventNodes don't have a
signalled event in them before returning the node to the freeList.
Callers pass the status from epicsEventWaitWithTimeout() to indicate
whether it was signalled or not. If it timed out we must trigger it
and Wait to clear the event state.
2020-04-30 23:38:51 -05:00
Andrew Johnson
cf2fef2405 osdMessageQueue: Return sooner on -ve timeout
It appears that previously a negative timeout actually implemented a
'wait forever', but the VxWorks and RTEMS implementations both check
for (timeout <= 0) and return immediately if nothing can be done
without waiting.
2020-04-30 23:27:43 -05:00
Andrew Johnson
298c8706ec osdMessageQueue: Rename freeEventNode() -> destroyEventNode() 2020-04-30 22:59:58 -05:00
Andrew Johnson
a9727fd5cb Ben Franksen's fix for lp: #1868486 2020-04-16 17:12:25 -05:00
Andrew Johnson
b9f0ef5158 Merge 3.14 version and add 3.15 edits 2016-05-22 14:38:18 +02:00
Andrew Johnson
f4a16a1e1e Remaining Revision-Id keywords in source 2016-05-22 05:43:09 +02:00
Andrew Johnson
84a8bacc58 Re-merged the dontcant branch.
Michael backed out a few changes and added some others.
I added some modifications to default/osdMessageQueue.cpp to
remove arguments from a couple of internal (static) functions.
2012-06-19 14:28:26 -05:00
Michael Davidsaver
3e9bae45b9 default MQ report event wait errors 2012-05-24 14:31:29 -04:00
Michael Davidsaver
3333217f56 simplify 2012-05-24 14:31:28 -04:00
Michael Davidsaver
6060f2eaaa Only ignore errors when there is an error reporting path
can't report from thread free mutex unlock or implicit thread creation
2012-05-24 14:31:27 -04:00
Michael Davidsaver
e41bd3994e default osdMessageQueue avoid cantProceed 2011-08-26 16:33:58 -07:00
Andrew Johnson
fbda9f3280 RCS keyword updates for Bazaar
Replaced $Id$ and $Header$ keywords with $Revision-Id$
Deleted $Log$ keywords and any log messages
2010-10-05 14:27:37 -05:00
Andrew Johnson
215bbed49c Include standard headers before defining epicsExportSharedSymbols 2010-01-11 17:56:17 -06:00
W. Eric Norum
1e84246cb7 Add 'size' argument to all epicsMessageQueue receive routines. 2003-05-29 03:10:16 +00:00
Ralph Lange
2624a16170 Fixed/suppressed HP-UX native (aCC) warnings 2003-04-23 14:56:07 +00:00
W. Eric Norum
c13617af36 Remove support for 0-length queues. vxWorks doesn't support them nor
does RTEMS so why go to the effort to support them on other systems.
2003-03-04 22:28:32 +00:00
W. Eric Norum
36ffa70608 Cosmetic. 2003-02-28 22:21:48 +00:00
W. Eric Norum
a1a6e8861e Add support for 0-length message queues. 2003-02-28 16:14:10 +00:00
W. Eric Norum
17624a28c3 Create os-dependent message queue routines. 2003-02-27 22:59:07 +00:00