X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=blobdiff_plain;f=src%2Futil%2Fos_time.c;h=92fc3638ddb8bec2994d99b2693f76c401d491a3;hp=ac488b2287cb63b7c6c0dd62cc5c4027c15d23a4;hb=HEAD;hpb=7bea40e56652a1ded4374d92fb340b454fbac475 diff --git a/src/util/os_time.c b/src/util/os_time.c index ac488b2287c..92fc3638ddb 100644 --- a/src/util/os_time.c +++ b/src/util/os_time.c @@ -33,19 +33,17 @@ */ #include "os_time.h" - -/* TODO: fix this dependency */ -#include "gallium/include/pipe/p_config.h" +#include "detect_os.h" #include "util/u_atomic.h" -#if defined(PIPE_OS_UNIX) +#if DETECT_OS_UNIX # include /* usleep */ # include /* timeval */ # include /* timeval */ # include /* sched_yield */ # include -#elif defined(PIPE_SUBSYSTEM_WINDOWS_USER) +#elif DETECT_OS_WINDOWS # include #else # error Unsupported OS @@ -55,19 +53,19 @@ int64_t os_time_get_nano(void) { -#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) +#if DETECT_OS_LINUX || DETECT_OS_BSD struct timespec tv; clock_gettime(CLOCK_MONOTONIC, &tv); return tv.tv_nsec + tv.tv_sec*INT64_C(1000000000); -#elif defined(PIPE_OS_UNIX) +#elif DETECT_OS_UNIX struct timeval tv; gettimeofday(&tv, NULL); return tv.tv_usec*INT64_C(1000) + tv.tv_sec*INT64_C(1000000000); -#elif defined(PIPE_SUBSYSTEM_WINDOWS_USER) +#elif DETECT_OS_WINDOWS static LARGE_INTEGER frequency; LARGE_INTEGER counter; @@ -95,16 +93,16 @@ os_time_get_nano(void) void os_time_sleep(int64_t usecs) { -#if defined(PIPE_OS_LINUX) +#if DETECT_OS_LINUX struct timespec time; time.tv_sec = usecs / 1000000; time.tv_nsec = (usecs % 1000000) * 1000; while (clock_nanosleep(CLOCK_MONOTONIC, 0, &time, &time) == EINTR); -#elif defined(PIPE_OS_UNIX) +#elif DETECT_OS_UNIX usleep(usecs); -#elif defined(PIPE_SUBSYSTEM_WINDOWS_USER) +#elif DETECT_OS_WINDOWS DWORD dwMilliseconds = (DWORD) ((usecs + 999) / 1000); /* Avoid Sleep(O) as that would cause to sleep for an undetermined duration */ if (dwMilliseconds) { @@ -148,7 +146,7 @@ os_wait_until_zero(volatile int *var, uint64_t timeout) if (timeout == OS_TIMEOUT_INFINITE) { while (p_atomic_read(var)) { -#if defined(PIPE_OS_UNIX) +#if DETECT_OS_UNIX sched_yield(); #endif } @@ -162,7 +160,7 @@ os_wait_until_zero(volatile int *var, uint64_t timeout) if (os_time_timeout(start_time, end_time, os_time_get_nano())) return false; -#if defined(PIPE_OS_UNIX) +#if DETECT_OS_UNIX sched_yield(); #endif } @@ -184,7 +182,7 @@ os_wait_until_zero_abs_timeout(volatile int *var, int64_t timeout) if (os_time_get_nano() >= timeout) return false; -#if defined(PIPE_OS_UNIX) +#if DETECT_OS_UNIX sched_yield(); #endif }