From 289f5500a4ee3a79b761f51aa9d55c975cdc1add Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Fri, 30 Jan 2009 20:15:40 +0000 Subject: [PATCH] Restart nanosleep() on EINTR. --- src/libCom/osi/os/posix/osdThread.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libCom/osi/os/posix/osdThread.c b/src/libCom/osi/os/posix/osdThread.c index 971095bbb..18126b389 100644 --- a/src/libCom/osi/os/posix/osdThread.c +++ b/src/libCom/osi/os/posix/osdThread.c @@ -570,7 +570,9 @@ epicsShareFunc void epicsShareAPI epicsThreadSleep(double seconds) delayTime.tv_sec = (time_t)seconds; nanoseconds = (seconds - (double)delayTime.tv_sec) *1e9; delayTime.tv_nsec = (long)nanoseconds; - nanosleep(&delayTime,&remainingTime); + while (nanosleep(&delayTime, &remainingTime) == -1 && + errno == EINTR) + delayTime = remainingTime; } epicsShareFunc epicsThreadId epicsShareAPI epicsThreadGetIdSelf(void) {