From 3e9bae45b9ddc6833da762fa0a576dbb62d1e660 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Thu, 24 May 2012 14:31:29 -0400 Subject: [PATCH] default MQ report event wait errors --- src/libCom/osi/os/default/osdMessageQueue.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/libCom/osi/os/default/osdMessageQueue.cpp b/src/libCom/osi/os/default/osdMessageQueue.cpp index 2c4a2f728..76fbadc63 100644 --- a/src/libCom/osi/os/default/osdMessageQueue.cpp +++ b/src/libCom/osi/os/default/osdMessageQueue.cpp @@ -187,10 +187,11 @@ mySend(epicsMessageQueueId pmsg, void *message, unsigned int size, bool wait, bo epicsMutexUnlock(pmsg->mutex); + epicsEventStatus sts; if(haveTimeout) - epicsEventWaitWithTimeout(threadNode.evp->event, timeout); + sts=epicsEventWaitWithTimeout(threadNode.evp->event, timeout); else - epicsEventWait(threadNode.evp->event); + sts=epicsEventWait(threadNode.evp->event); epicsMutexMustLock(pmsg->mutex); @@ -200,7 +201,7 @@ mySend(epicsMessageQueueId pmsg, void *message, unsigned int size, bool wait, bo ellAdd(&pmsg->eventFreeList, &threadNode.evp->link); - if (pmsg->full && (ellFirst(&pmsg->receiveQueue) == NULL)) { + if ((pmsg->full && (ellFirst(&pmsg->receiveQueue) == NULL)) || sts!=epicsEventOK) { epicsMutexUnlock(pmsg->mutex); return -1; } @@ -331,10 +332,11 @@ myReceive(epicsMessageQueueId pmsg, void *message, unsigned int size, bool wait, ellAdd(&pmsg->receiveQueue, &threadNode.link); epicsMutexUnlock(pmsg->mutex); + epicsEventStatus sts; if(haveTimeout) - epicsEventWaitWithTimeout(threadNode.evp->event, timeout); + sts=epicsEventWaitWithTimeout(threadNode.evp->event, timeout); else - epicsEventWait(threadNode.evp->event); + sts=epicsEventWait(threadNode.evp->event); epicsMutexMustLock(pmsg->mutex); @@ -344,7 +346,7 @@ myReceive(epicsMessageQueueId pmsg, void *message, unsigned int size, bool wait, epicsMutexUnlock(pmsg->mutex); - if(threadNode.eventSent && (threadNode.size <= size)) + if(threadNode.eventSent && (threadNode.size <= size) && sts==epicsEventOK) return threadNode.size; return -1; }