diff --git a/src/libCom/osi/os/vxWorks/osdEvent.c b/src/libCom/osi/os/vxWorks/osdEvent.c index 0b2061f10..36cc3f41c 100644 --- a/src/libCom/osi/os/vxWorks/osdEvent.c +++ b/src/libCom/osi/os/vxWorks/osdEvent.c @@ -41,8 +41,13 @@ epicsEventWaitStatus epicsEventWaitWithTimeout( { int status; int ticks; - ticks = (int)(timeOut * (double)sysClkRateGet()); - if(ticks<=0) ticks = 1; + + if(timeOut<=0.0) { + ticks = 0; + } else { + ticks = timeOut*sysClkRateGet(); + if(ticks<=0) ticks = 1; + } status = semTake((SEM_ID)id,ticks); if(status==OK) return(epicsEventWaitOK); if(errno==S_objLib_OBJ_TIMEOUT) return(epicsEventWaitTimeout); diff --git a/src/libCom/osi/os/vxWorks/osdMutex.c b/src/libCom/osi/os/vxWorks/osdMutex.c index e1e2828c3..72b7c5829 100644 --- a/src/libCom/osi/os/vxWorks/osdMutex.c +++ b/src/libCom/osi/os/vxWorks/osdMutex.c @@ -35,8 +35,13 @@ epicsMutexLockStatus epicsMutexLockWithTimeout( { int status; int ticks; - ticks = (int)(timeOut * (double)sysClkRateGet()); - if(ticks<=0) ticks = 1; + + if(timeOut<=0.0) { + ticks = 0; + } else { + ticks = timeOut*sysClkRateGet(); + if(ticks<=0) ticks = 1; + } status = semTake((SEM_ID)id,ticks); if(status==OK) return(epicsMutexLockOK); if(errno==S_objLib_OBJ_TIMEOUT) return(epicsMutexLockTimeout);