Add a basic support for Linux for utils/
* Timer and path utils are done.
* Window only implements initialize and setVisible
BUG=angleproject:892
Change-Id: I3f49b68ef9ec5be324b25e211199bac2953ae11e
Reviewed-on: https://chromium-review.googlesource.com/269520
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/util/linux/LinuxTimer.cpp b/util/linux/LinuxTimer.cpp
new file mode 100644
index 0000000..66aba36
--- /dev/null
+++ b/util/linux/LinuxTimer.cpp
@@ -0,0 +1,46 @@
+//
+// Copyright (c) 2015 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// LinuxTimer.cpp: Implementation of a high precision timer class on Linux
+
+#include "linux/LinuxTimer.h"
+
+LinuxTimer::LinuxTimer()
+ : mRunning(false)
+{
+}
+
+void LinuxTimer::start()
+{
+ clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &mStartTime);
+ mRunning = true;
+}
+
+void LinuxTimer::stop()
+{
+ clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &mStopTime);
+ mRunning = false;
+}
+
+double LinuxTimer::getElapsedTime() const
+{
+ struct timespec endTime;
+ if (mRunning)
+ {
+ clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &endTime);
+ }
+ else
+ {
+ endTime = mStopTime;
+ }
+
+ return endTime.tv_sec + (1.0 / 1000000000) * endTime.tv_nsec;
+}
+
+Timer *CreateTimer()
+{
+ return new LinuxTimer();
+}