diff --git a/src/libCom/osi/os/posix/osdEvent.c b/src/libCom/osi/os/posix/osdEvent.c index f5591cedb..caad637f4 100644 --- a/src/libCom/osi/os/posix/osdEvent.c +++ b/src/libCom/osi/os/posix/osdEvent.c @@ -117,9 +117,7 @@ epicsEventWaitStatus epicsEventWaitWithTimeout(epicsEventId pevent, double timeo status = pthread_mutex_lock(&pevent->mutex); checkStatusQuit(status,"pthread_mutex_lock","epicsEventWaitWithTimeout"); if(!pevent->isFull) { - status = convertDoubleToWakeTime(timeout,&wakeTime); - checkStatusQuit(unlockStatus,"convertDoubleToWakeTime", - "epicsEventWaitWithTimeout"); + convertDoubleToWakeTime(timeout,&wakeTime); status = pthread_cond_timedwait( &pevent->cond,&pevent->mutex,&wakeTime); } diff --git a/src/libCom/osi/os/posix/osdMutex.c b/src/libCom/osi/os/posix/osdMutex.c index d2ad379fd..74babc84b 100644 --- a/src/libCom/osi/os/posix/osdMutex.c +++ b/src/libCom/osi/os/posix/osdMutex.c @@ -139,9 +139,7 @@ epicsMutexLockStatus epicsMutexLockWithTimeout(epicsMutexId pmutex, double timeo struct timespec wakeTime; int status,unlockStatus; - status = convertDoubleToWakeTime(timeout,&wakeTime); - checkStatusQuit(status,"convertDoubleToWakeTime", - "epicsMutexLockWithTimeout"); + convertDoubleToWakeTime(timeout,&wakeTime); status = pthread_mutex_lock(&pmutex->lock); checkStatusQuit(status,"pthread_mutex_lock","epicsMutexLockWithTimeout"); while(pmutex->owned && !pthread_equal(pmutex->ownerTid,tid)) { diff --git a/src/libCom/osi/os/posix/osdTime.cpp b/src/libCom/osi/os/posix/osdTime.cpp index 418361287..b400abe16 100644 --- a/src/libCom/osi/os/posix/osdTime.cpp +++ b/src/libCom/osi/os/posix/osdTime.cpp @@ -3,7 +3,14 @@ // should move the gettimeofday() proto // into a different header // + +#include +#include +#include +#include + #include "osiSock.h" +#include "cantProceed.h" #define epicsExportSharedSymbols #include "epicsTime.h" @@ -61,7 +68,7 @@ int epicsTime_localtime ( const time_t *clock, // X aCC 361 } } -extern "C" epicsShareFunc int epicsShareAPI +extern "C" epicsShareFunc void epicsShareAPI convertDoubleToWakeTime(double timeout,struct timespec *wakeTime) { struct timespec wait; @@ -70,7 +77,10 @@ extern "C" epicsShareFunc int epicsShareAPI if(timeout<0.0) timeout = 0.0; else if(timeout>3600.0) timeout = 3600.0; status = clock_gettime(CLOCK_REALTIME,wakeTime); - if(status) return epicsTimeERROR; + if(status) { + printf("clock_gettime failed with error %s\n",strerror(status)); + cantProceed("convertDoubleToWakeTime"); + } wait.tv_sec = timeout; wait.tv_nsec = (long)((timeout - (double)wait.tv_sec) * 1e9); wakeTime->tv_sec += wait.tv_sec; @@ -79,5 +89,4 @@ extern "C" epicsShareFunc int epicsShareAPI wakeTime->tv_nsec -= 1000000000L; ++wakeTime->tv_sec; } - return(0); } diff --git a/src/libCom/osi/os/posix/osdTime.h b/src/libCom/osi/os/posix/osdTime.h index 3bcb9479a..dfc76c2f8 100644 --- a/src/libCom/osi/os/posix/osdTime.h +++ b/src/libCom/osi/os/posix/osdTime.h @@ -19,7 +19,7 @@ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ -epicsShareFunc int epicsShareAPI +epicsShareFunc void epicsShareAPI convertDoubleToWakeTime(double timeout,struct timespec *wakeTime); #ifdef __cplusplus }