Check return value of nanosleep internally and throw if necessary
#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"
/**
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
}
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