X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftime%2Futils.cpp;fp=source%2Ftime%2Futils.cpp;h=00c389d93acd4d8ae55edf14d3cd042e420e7da1;hb=e1ea831a640fba534e7e42e399f04cdf681ef8d3;hp=0000000000000000000000000000000000000000;hpb=0bcb8d4d6f33cbdad7b921cac787740bfe8e212e;p=libs%2Fcore.git diff --git a/source/time/utils.cpp b/source/time/utils.cpp new file mode 100644 index 0000000..00c389d --- /dev/null +++ b/source/time/utils.cpp @@ -0,0 +1,52 @@ +/* +This file is part of libmspframework +Copyright © 2006 Mikko Rasa, Mikkosoft Productions +Distributed under the LGPL +*/ +#include +#include +#include "timedelta.h" +#include "timestamp.h" +#include "units.h" +#include "utils.h" + +namespace Msp { +namespace Time { + +/** +Returns the current timestamp. +*/ +TimeStamp now() +{ + timeval tv; + gettimeofday(&tv, 0); + return TimeStamp(tv.tv_sec*1000000LL+tv.tv_usec); +} + +/** +Returns the CPU time used by the program so far. +*/ +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; +} + +/** +Sleeps for the given time. +*/ +int sleep(const TimeDelta &d) +{ +#ifndef WIN32 + timespec ts; + d.fill_timespec(ts); + return nanosleep(&ts, 0); +#else + Sleep(d/msec); + return 0; +#endif +} + +} // namespace Time +} // namespace Msp