diff options
author | José Fonseca <[email protected]> | 2012-12-05 08:59:21 +0000 |
---|---|---|
committer | José Fonseca <[email protected]> | 2012-12-06 17:12:31 +0000 |
commit | d296326e065ed9685bd27d62a3ba20d8a8996e6f (patch) | |
tree | fd199ddabb848056e1f03df7d275ea272f8a4f1a | |
parent | 7e14293556bf8b4248728d2952752c13f70647f3 (diff) |
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 <[email protected]>
-rwxr-xr-x | scons/gallium.py | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/os/os_time.c | 28 | ||||
-rw-r--r-- | src/gallium/auxiliary/os/os_time.h | 12 |
3 files changed, 20 insertions, 22 deletions
diff --git a/scons/gallium.py b/scons/gallium.py index 66ccaea7359..98671f75d2f 100755 --- a/scons/gallium.py +++ b/scons/gallium.py @@ -500,7 +500,7 @@ def generate(env): libs = [] if env['platform'] in ('darwin', 'freebsd', 'linux', 'posix', 'sunos'): libs += ['m', 'pthread', 'dl'] - if env['platform'] in 'linux': + if env['platform'] in ('linux',): libs += ['rt'] env.Append(LIBS = libs) diff --git a/src/gallium/auxiliary/os/os_time.c b/src/gallium/auxiliary/os/os_time.c index f943e0f3162..3612eba2680 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 54101a1f546..517de9b0474 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; +} /* |