summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Hatch <Jeff.Hatch@multitech.com>2018-02-01 07:57:36 -0600
committerJeff Hatch <Jeff.Hatch@multitech.com>2018-02-01 07:57:36 -0600
commitb864bd066393e7a46f42eeffce3e7d3692e7c140 (patch)
treec7a9740e4e5786b8b66b7d97eaa7d757e8a5f3a3
parent0262799be465d36e0b31b9a2af1a9cc709e5ef48 (diff)
downloadlibmts-b864bd066393e7a46f42eeffce3e7d3692e7c140.tar.gz
libmts-b864bd066393e7a46f42eeffce3e7d3692e7c140.tar.bz2
libmts-b864bd066393e7a46f42eeffce3e7d3692e7c140.zip
Add monoTimeMicros() function0.6
-rw-r--r--include/mts/MTS_System.h4
-rw-r--r--src/MTS_System.cpp15
2 files changed, 19 insertions, 0 deletions
diff --git a/include/mts/MTS_System.h b/include/mts/MTS_System.h
index a16265c..bd5fa53 100644
--- a/include/mts/MTS_System.h
+++ b/include/mts/MTS_System.h
@@ -44,6 +44,10 @@ namespace MTS {
static uint64_t timeMicros();
static uint64_t precisionTimeMicros();
+ //MONOTONIC : number of seconds elapsed since some unspecified starting point. When time is changed by user, timer are unaffected.
+
+ static uint64_t monoTimeMicros();
+
static bool isBigEndian();
static void swapBytes(uint8_t* const pBuffer, const uint32_t iSize);
diff --git a/src/MTS_System.cpp b/src/MTS_System.cpp
index e1ed348..abed817 100644
--- a/src/MTS_System.cpp
+++ b/src/MTS_System.cpp
@@ -95,6 +95,21 @@ uint64_t System::precisionTimeMicros() {
return micros;
}
+uint64_t System::monoTimeMicros() {
+ uint64_t micros = 0;
+#ifdef WIN32
+ micros = static_cast<uint64_t>(GetTickCount64()) * 1000;
+#else
+ timespec ts;
+ int result = clock_gettime(CLOCK_MONOTONIC, &ts);
+ if (result == 0) {
+ micros = (static_cast<uint64_t>(ts.tv_sec) * 1000000)
+ + (ts.tv_nsec / 1000);
+ }
+#endif
+ return micros;
+}
+
bool System::isBigEndian() {
static union {
uint32_t i;