--- /dev/null
+/*
+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