]> git.tdb.fi Git - libs/core.git/blobdiff - source/time/utils.cpp
Rename to libmspcore
[libs/core.git] / source / time / utils.cpp
diff --git a/source/time/utils.cpp b/source/time/utils.cpp
new file mode 100644 (file)
index 0000000..00c389d
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+This file is part of libmspframework     
+Copyright © 2006  Mikko Rasa, Mikkosoft Productions
+Distributed under the LGPL
+*/
+#include <sys/resource.h>
+#include <sys/time.h>
+#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