mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-24 18:00:48 +02:00
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>
This commit is contained in:
parent
7e14293556
commit
d296326e06
3 changed files with 20 additions and 22 deletions
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
return counter.QuadPart*INT64_C(1000000000)/frequency.QuadPart;
|
||||
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
|
||||
#error Unsupported OS
|
||||
|
||||
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;
|
||||
|
||||
#elif defined(PIPE_SUBSYSTEM_WINDOWS_USER)
|
||||
return os_time_get() * 1000;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue