X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Ftime%2Funix%2Futils.cpp;fp=source%2Ftime%2Funix%2Futils.cpp;h=029c75bc3cb26e0bf5bc6929b81fb26d58cb5d93;hp=0000000000000000000000000000000000000000;hb=609c9a508cfdc7b42c46c4f21d17639204165a00;hpb=b4806214e905752617691f851717033fd3f266c2 diff --git a/source/time/unix/utils.cpp b/source/time/unix/utils.cpp new file mode 100644 index 0000000..029c75b --- /dev/null +++ b/source/time/unix/utils.cpp @@ -0,0 +1,36 @@ +#include +#include +#include +#include +#include "rawtime_private.h" +#include "timedelta.h" +#include "timestamp.h" +#include "utils.h" + +namespace Msp { +namespace Time { + +TimeStamp now() +{ + timeval tv; + gettimeofday(&tv, 0); + return TimeStamp(timeval_to_rawtime(tv)); +} + +TimeDelta get_cpu_time() +{ + rusage ru; + getrusage(RUSAGE_SELF, &ru); + return (ru.ru_utime.tv_sec+ru.ru_stime.tv_sec)*sec + (ru.ru_utime.tv_usec+ru.ru_stime.tv_usec)*usec; +} + +void sleep(const TimeDelta &d) +{ + timespec ts = rawtime_to_timespec(d.raw()); + while(nanosleep(&ts, 0)==-1) + if(errno!=EINTR) + throw system_error("nanosleep"); +} + +} // namespace Time +} // namespace Msp