Correct LinuxTimer time calculations

Changes to CLOCK_MONOTONIC as CLOCK_PROCESS_CPUTIME counts only
user time and not kernel time.

BUG=angleproject:892

Change-Id: I3d5aee26ee2bacd7449fdd7795ad8c2b289d7324
Reviewed-on: https://chromium-review.googlesource.com/272652
Reviewed-by: Jamie Madill <jmadill@chromium.org>
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
index 66aba36..1968205 100644
--- a/util/linux/LinuxTimer.cpp
+++ b/util/linux/LinuxTimer.cpp
@@ -7,6 +7,7 @@
 // LinuxTimer.cpp: Implementation of a high precision timer class on Linux
 
 #include "linux/LinuxTimer.h"
+#include <iostream>
 
 LinuxTimer::LinuxTimer()
     : mRunning(false)
@@ -15,13 +16,13 @@
 
 void LinuxTimer::start()
 {
-    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &mStartTime);
+    clock_gettime(CLOCK_MONOTONIC, &mStartTime);
     mRunning = true;
 }
 
 void LinuxTimer::stop()
 {
-    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &mStopTime);
+    clock_gettime(CLOCK_MONOTONIC, &mStopTime);
     mRunning = false;
 }
 
@@ -30,14 +31,16 @@
     struct timespec endTime;
     if (mRunning)
     {
-        clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &endTime);
+        clock_gettime(CLOCK_MONOTONIC, &endTime);
     }
     else
     {
         endTime = mStopTime;
     }
 
-    return endTime.tv_sec + (1.0 / 1000000000) * endTime.tv_nsec;
+    double startSeconds = mStartTime.tv_sec + (1.0 / 1000000000) * mStartTime.tv_nsec;
+    double endSeconds = endTime.tv_sec + (1.0 / 1000000000) * endTime.tv_nsec;
+    return endSeconds - startSeconds;
 }
 
 Timer *CreateTimer()