summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/os
diff options
context:
space:
mode:
authorJosé Fonseca <jfonseca@vmware.com>2012-12-05 08:59:21 +0000
committerJosé Fonseca <jfonseca@vmware.com>2012-12-06 17:12:31 +0000
commitd296326e065ed9685bd27d62a3ba20d8a8996e6f (patch)
treefd199ddabb848056e1f03df7d275ea272f8a4f1a /src/gallium/auxiliary/os
parent7e14293556bf8b4248728d2952752c13f70647f3 (diff)
downloadexternal_mesa3d-d296326e065ed9685bd27d62a3ba20d8a8996e6f.zip
external_mesa3d-d296326e065ed9685bd27d62a3ba20d8a8996e6f.tar.gz
external_mesa3d-d296326e065ed9685bd27d62a3ba20d8a8996e6f.tar.bz2
gallium/os: Cleanup up os_time_get/os_time_get_nano.
- Re-implement os_time_get in terms of os_time_get_nano() for consistency - Use CLOCK_MONOTONIC as recommended - Only use clock_gettime on Linux for now. Reviewed-by: Brian Paul <brianp@vmware.com>
Diffstat (limited to 'src/gallium/auxiliary/os')
-rw-r--r--src/gallium/auxiliary/os/os_time.c28
-rw-r--r--src/gallium/auxiliary/os/os_time.h12
2 files changed, 19 insertions, 21 deletions
diff --git a/src/gallium/auxiliary/os/os_time.c b/src/gallium/auxiliary/os/os_time.c
index f943e0f..3612eba 100644
--- a/src/gallium/auxiliary/os/os_time.c
+++ b/src/gallium/auxiliary/os/os_time.c
@@ -48,13 +48,19 @@
int64_t
-os_time_get(void)
+os_time_get_nano(void)
{
-#if defined(PIPE_OS_UNIX)
+#if defined(PIPE_OS_LINUX)
+
+ struct timespec tv;
+ clock_gettime(CLOCK_MONOTONIC, &tv);
+ return tv.tv_nsec + tv.tv_sec*INT64_C(1000000000);
+
+#elif defined(PIPE_OS_UNIX)
struct timeval tv;
gettimeofday(&tv, NULL);
- return tv.tv_usec + tv.tv_sec*1000000LL;
+ return tv.tv_usec*INT64_C(1000) + tv.tv_sec*INT64_C(1000000000);
#elif defined(PIPE_SUBSYSTEM_WINDOWS_USER)
@@ -63,22 +69,12 @@ os_time_get(void)
if(!frequency.QuadPart)
QueryPerformanceFrequency(&frequency);
QueryPerformanceCounter(&counter);
- return counter.QuadPart*INT64_C(1000000)/frequency.QuadPart;
-
-#endif
-}
+ return counter.QuadPart*INT64_C(1000000000)/frequency.QuadPart;
+#else
-uint64_t
-os_time_get_nano(void)
-{
-#if defined(PIPE_OS_UNIX)
- struct timespec tv;
- clock_gettime(CLOCK_REALTIME, &tv);
- return tv.tv_nsec + tv.tv_sec * 1000000000LL;
+#error Unsupported OS
-#elif defined(PIPE_SUBSYSTEM_WINDOWS_USER)
- return os_time_get() * 1000;
#endif
}
diff --git a/src/gallium/auxiliary/os/os_time.h b/src/gallium/auxiliary/os/os_time.h
index 54101a1..517de9b 100644
--- a/src/gallium/auxiliary/os/os_time.h
+++ b/src/gallium/auxiliary/os/os_time.h
@@ -51,17 +51,19 @@ extern "C" {
/*
- * Get the current time in microseconds from an unknown base.
+ * Get the current time in nanoseconds from an unknown base.
*/
int64_t
-os_time_get(void);
+os_time_get_nano(void);
/*
- * Get the current time in nanoseconds from an unknown base.
+ * Get the current time in microseconds from an unknown base.
*/
-uint64_t
-os_time_get_nano(void);
+static INLINE int64_t
+os_time_get(void) {
+ return os_time_get_nano() * 1000;
+}
/*