]> git.tdb.fi Git - libs/core.git/blobdiff - source/time/utils.cpp
Merge branch 'io-master'
[libs/core.git] / source / time / utils.cpp
index 123b2d9192c11edfb2fda29f1a7aa22d6cb6cd66..d69febcb0a52a2326b2f7cf05c39cc92e18607a2 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"
@@ -15,9 +17,6 @@ using namespace std;
 namespace Msp {
 namespace Time {
 
-/**
-Returns the current timestamp.
-*/
 TimeStamp now()
 {
 #ifndef WIN32
@@ -53,9 +52,6 @@ string format_now(const string &fmt)
        return DateTime(now()).format(fmt);
 }
 
-/**
-Returns the CPU time used by the program so far.
-*/
 TimeDelta get_cpu_time()
 {
 #ifndef WIN32
@@ -68,17 +64,15 @@ TimeDelta get_cpu_time()
 #endif
 }
 
-/**
-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
 }