4 #include <sys/resource.h>
8 #include <msp/core/systemerror.h>
10 #include "timedelta.h"
11 #include "timestamp.h"
25 return TimeStamp(tv.tv_sec*1000000LL+tv.tv_usec);
27 static RawTime epoch = 0;
40 SystemTimeToFileTime(&st, &ft);
41 epoch = (ft.dwLowDateTime+(static_cast<RawTime>(ft.dwHighDateTime)<<32))/10;
45 GetSystemTimeAsFileTime(&ft);
46 return TimeStamp((ft.dwLowDateTime+(static_cast<RawTime>(ft.dwHighDateTime)<<32))/10-epoch);
50 string format_now(const string &fmt)
52 return DateTime(now()).format(fmt);
55 TimeDelta get_cpu_time()
59 getrusage(RUSAGE_SELF, &ru);
60 return (ru.ru_utime.tv_sec+ru.ru_stime.tv_sec)*sec + (ru.ru_utime.tv_usec+ru.ru_stime.tv_usec)*usec;
62 //XXX Figure out the function to use on Win32
67 void sleep(const TimeDelta &d)
71 while(nanosleep(&ts, 0)==-1)
73 throw system_error("nanosleep");
75 Sleep((DWORD)(d/msec));