]> git.tdb.fi Git - libs/core.git/commitdiff
Make Time::sleep void
authorMikko Rasa <tdb@tdb.fi>
Thu, 9 Jun 2011 08:38:40 +0000 (11:38 +0300)
committerMikko Rasa <tdb@tdb.fi>
Thu, 9 Jun 2011 08:38:40 +0000 (11:38 +0300)
Check return value of nanosleep internally and throw if necessary

source/time/utils.cpp
source/time/utils.h

index 123b2d9192c11edfb2fda29f1a7aa22d6cb6cd66..7da0aede047aab2e9f2a839005879a61f187df78 100644 (file)
@@ -3,7 +3,9 @@
 #else
 #include <sys/resource.h>
 #include <sys/time.h>
+#include <cerrno>
 #endif
+#include <msp/core/systemerror.h>
 #include "datetime.h"
 #include "timedelta.h"
 #include "timestamp.h"
@@ -71,14 +73,15 @@ TimeDelta get_cpu_time()
 /**
 Sleeps for the given time.
 */
-int sleep(const TimeDelta &d)
+void sleep(const TimeDelta &d)
 {
 #ifndef WIN32
        timespec ts = d;
-       return nanosleep(&ts, 0);
+       while(nanosleep(&ts, 0)==-1)
+               if(errno!=EINTR)
+                       throw system_error("nanosleep");
 #else
        Sleep((DWORD)(d/msec));
-       return 0;
 #endif
 }
 
index 291655946123135059c61b1b4bd0a316c25b15da..0a2b351ef6b218743122106697253f04803ef090 100644 (file)
@@ -12,7 +12,7 @@ class TimeStamp;
 extern TimeStamp now();
 extern std::string format_now(const std::string &);
 extern TimeDelta get_cpu_time();
-extern int sleep(const TimeDelta &);
+extern void sleep(const TimeDelta &);
 
 } // namespace Time
 } // namespace Msp