diff options
author | Nicolai Hähnle <[email protected]> | 2017-10-22 17:38:44 +0200 |
---|---|---|
committer | Nicolai Hähnle <[email protected]> | 2017-11-09 11:57:21 +0100 |
commit | 222a2fb99859f3ac237def59d40413bb1a464f11 (patch) | |
tree | e29bdd5a50afc58290496c87cf1541f1cc5426f4 /src/gallium/auxiliary | |
parent | f76a6cb337f979fb26d3233d7e0ff208ec8885bb (diff) |
util: move os_time.[ch] to src/util
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r-- | src/gallium/auxiliary/Makefile.sources | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_init.c | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/hud/hud_cpu.c | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/hud/hud_cpufreq.c | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/hud/hud_diskstat.c | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/hud/hud_driver_query.c | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/hud/hud_fps.c | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/hud/hud_nic.c | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/hud/hud_sensors_temp.c | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/meson.build | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/os/os_time.c | 190 | ||||
-rw-r--r-- | src/gallium/auxiliary/os/os_time.h | 135 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_time.h | 2 |
13 files changed, 9 insertions, 338 deletions
diff --git a/src/gallium/auxiliary/Makefile.sources b/src/gallium/auxiliary/Makefile.sources index 0502a2c44f8..4fb7a30613a 100644 --- a/src/gallium/auxiliary/Makefile.sources +++ b/src/gallium/auxiliary/Makefile.sources @@ -83,8 +83,6 @@ C_SOURCES := \ os/os_process.c \ os/os_process.h \ os/os_thread.h \ - os/os_time.c \ - os/os_time.h \ pipebuffer/pb_buffer_fenced.c \ pipebuffer/pb_buffer_fenced.h \ pipebuffer/pb_buffer.h \ diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c index c456a97eb62..6ddc509a813 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_init.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c @@ -32,7 +32,7 @@ #include "util/u_debug.h" #include "util/u_memory.h" #include "util/simple_list.h" -#include "os/os_time.h" +#include "util/os_time.h" #include "lp_bld.h" #include "lp_bld_debug.h" #include "lp_bld_misc.h" diff --git a/src/gallium/auxiliary/hud/hud_cpu.c b/src/gallium/auxiliary/hud/hud_cpu.c index 4caaab6977e..581dad6df04 100644 --- a/src/gallium/auxiliary/hud/hud_cpu.c +++ b/src/gallium/auxiliary/hud/hud_cpu.c @@ -29,7 +29,7 @@ */ #include "hud/hud_private.h" -#include "os/os_time.h" +#include "util/os_time.h" #include "os/os_thread.h" #include "util/u_memory.h" #include "util/u_queue.h" diff --git a/src/gallium/auxiliary/hud/hud_cpufreq.c b/src/gallium/auxiliary/hud/hud_cpufreq.c index abb930d7e28..2b881a850e3 100644 --- a/src/gallium/auxiliary/hud/hud_cpufreq.c +++ b/src/gallium/auxiliary/hud/hud_cpufreq.c @@ -35,7 +35,7 @@ #include "hud/hud_private.h" #include "util/list.h" -#include "os/os_time.h" +#include "util/os_time.h" #include "os/os_thread.h" #include "util/u_memory.h" #include <stdio.h> diff --git a/src/gallium/auxiliary/hud/hud_diskstat.c b/src/gallium/auxiliary/hud/hud_diskstat.c index df86abd12d8..53b32baef22 100644 --- a/src/gallium/auxiliary/hud/hud_diskstat.c +++ b/src/gallium/auxiliary/hud/hud_diskstat.c @@ -34,7 +34,7 @@ #include "hud/hud_private.h" #include "util/list.h" -#include "os/os_time.h" +#include "util/os_time.h" #include "os/os_thread.h" #include "util/u_memory.h" #include <stdio.h> diff --git a/src/gallium/auxiliary/hud/hud_driver_query.c b/src/gallium/auxiliary/hud/hud_driver_query.c index 76104b5b497..8b1e4e104a7 100644 --- a/src/gallium/auxiliary/hud/hud_driver_query.c +++ b/src/gallium/auxiliary/hud/hud_driver_query.c @@ -33,7 +33,7 @@ #include "hud/hud_private.h" #include "pipe/p_screen.h" -#include "os/os_time.h" +#include "util/os_time.h" #include "util/u_math.h" #include "util/u_memory.h" #include <stdio.h> diff --git a/src/gallium/auxiliary/hud/hud_fps.c b/src/gallium/auxiliary/hud/hud_fps.c index 8aa7a665a30..aecbaf0f6b4 100644 --- a/src/gallium/auxiliary/hud/hud_fps.c +++ b/src/gallium/auxiliary/hud/hud_fps.c @@ -29,7 +29,7 @@ */ #include "hud/hud_private.h" -#include "os/os_time.h" +#include "util/os_time.h" #include "util/u_memory.h" struct fps_info { diff --git a/src/gallium/auxiliary/hud/hud_nic.c b/src/gallium/auxiliary/hud/hud_nic.c index 835f92e2e04..bb29a90dbca 100644 --- a/src/gallium/auxiliary/hud/hud_nic.c +++ b/src/gallium/auxiliary/hud/hud_nic.c @@ -34,7 +34,7 @@ #include "hud/hud_private.h" #include "util/list.h" -#include "os/os_time.h" +#include "util/os_time.h" #include "os/os_thread.h" #include "util/u_memory.h" #include <stdio.h> diff --git a/src/gallium/auxiliary/hud/hud_sensors_temp.c b/src/gallium/auxiliary/hud/hud_sensors_temp.c index 29ee257ce86..7ae6f71b55c 100644 --- a/src/gallium/auxiliary/hud/hud_sensors_temp.c +++ b/src/gallium/auxiliary/hud/hud_sensors_temp.c @@ -31,7 +31,7 @@ #include "hud/hud_private.h" #include "util/list.h" -#include "os/os_time.h" +#include "util/os_time.h" #include "os/os_thread.h" #include "util/u_memory.h" #include <stdio.h> diff --git a/src/gallium/auxiliary/meson.build b/src/gallium/auxiliary/meson.build index 948fb86b3b2..d8fdd3510f1 100644 --- a/src/gallium/auxiliary/meson.build +++ b/src/gallium/auxiliary/meson.build @@ -103,8 +103,6 @@ files_libgallium = files( 'os/os_process.c', 'os/os_process.h', 'os/os_thread.h', - 'os/os_time.c', - 'os/os_time.h', 'pipebuffer/pb_buffer_fenced.c', 'pipebuffer/pb_buffer_fenced.h', 'pipebuffer/pb_buffer.h', diff --git a/src/gallium/auxiliary/os/os_time.c b/src/gallium/auxiliary/os/os_time.c deleted file mode 100644 index e4a1cae641a..00000000000 --- a/src/gallium/auxiliary/os/os_time.c +++ /dev/null @@ -1,190 +0,0 @@ -/************************************************************************** - * - * Copyright 2008-2010 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -/** - * @file - * OS independent time-manipulation functions. - * - * @author Jose Fonseca <[email protected]> - */ - - -#include "pipe/p_defines.h" -#include "util/u_atomic.h" - -#if defined(PIPE_OS_UNIX) -# include <time.h> /* timeval */ -# include <sys/time.h> /* timeval */ -# include <sched.h> /* sched_yield */ -# include <errno.h> -#elif defined(PIPE_SUBSYSTEM_WINDOWS_USER) -# include <windows.h> -#else -# error Unsupported OS -#endif - -#include "os_time.h" - - -int64_t -os_time_get_nano(void) -{ -#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*INT64_C(1000) + tv.tv_sec*INT64_C(1000000000); - -#elif defined(PIPE_SUBSYSTEM_WINDOWS_USER) - - static LARGE_INTEGER frequency; - LARGE_INTEGER counter; - int64_t secs, nanosecs; - if(!frequency.QuadPart) - QueryPerformanceFrequency(&frequency); - QueryPerformanceCounter(&counter); - /* Compute seconds and nanoseconds parts separately to - * reduce severity of precision loss. - */ - secs = counter.QuadPart / frequency.QuadPart; - nanosecs = (counter.QuadPart % frequency.QuadPart) * INT64_C(1000000000) - / frequency.QuadPart; - return secs*INT64_C(1000000000) + nanosecs; - -#else - -#error Unsupported OS - -#endif -} - - - -void -os_time_sleep(int64_t usecs) -{ -#if defined(PIPE_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) - usleep(usecs); - -#elif defined(PIPE_SUBSYSTEM_WINDOWS_USER) - DWORD dwMilliseconds = (DWORD) ((usecs + 999) / 1000); - /* Avoid Sleep(O) as that would cause to sleep for an undetermined duration */ - if (dwMilliseconds) { - Sleep(dwMilliseconds); - } -#else -# error Unsupported OS -#endif -} - - - -int64_t -os_time_get_absolute_timeout(uint64_t timeout) -{ - int64_t time, abs_timeout; - - /* Also check for the type upper bound. */ - if (timeout == PIPE_TIMEOUT_INFINITE || timeout > INT64_MAX) - return PIPE_TIMEOUT_INFINITE; - - time = os_time_get_nano(); - abs_timeout = time + (int64_t)timeout; - - /* Check for overflow. */ - if (abs_timeout < time) - return PIPE_TIMEOUT_INFINITE; - - return abs_timeout; -} - - -bool -os_wait_until_zero(volatile int *var, uint64_t timeout) -{ - if (!p_atomic_read(var)) - return true; - - if (!timeout) - return false; - - if (timeout == PIPE_TIMEOUT_INFINITE) { - while (p_atomic_read(var)) { -#if defined(PIPE_OS_UNIX) - sched_yield(); -#endif - } - return true; - } - else { - int64_t start_time = os_time_get_nano(); - int64_t end_time = start_time + timeout; - - while (p_atomic_read(var)) { - if (os_time_timeout(start_time, end_time, os_time_get_nano())) - return false; - -#if defined(PIPE_OS_UNIX) - sched_yield(); -#endif - } - return true; - } -} - - -bool -os_wait_until_zero_abs_timeout(volatile int *var, int64_t timeout) -{ - if (!p_atomic_read(var)) - return true; - - if (timeout == PIPE_TIMEOUT_INFINITE) - return os_wait_until_zero(var, PIPE_TIMEOUT_INFINITE); - - while (p_atomic_read(var)) { - if (os_time_get_nano() >= timeout) - return false; - -#if defined(PIPE_OS_UNIX) - sched_yield(); -#endif - } - return true; -} diff --git a/src/gallium/auxiliary/os/os_time.h b/src/gallium/auxiliary/os/os_time.h deleted file mode 100644 index ca0bdd5a0c4..00000000000 --- a/src/gallium/auxiliary/os/os_time.h +++ /dev/null @@ -1,135 +0,0 @@ -/************************************************************************** - * - * Copyright 2008-2010 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -/** - * @file - * OS independent time-manipulation functions. - * - * @author Jose Fonseca <[email protected]> - */ - -#ifndef _OS_TIME_H_ -#define _OS_TIME_H_ - - -#include "pipe/p_config.h" - -#if defined(PIPE_OS_UNIX) -# include <unistd.h> /* usleep */ -#endif - -#include "pipe/p_compiler.h" - - -#ifdef __cplusplus -extern "C" { -#endif - - -/* - * Get the current time in nanoseconds from an unknown base. - */ -int64_t -os_time_get_nano(void); - - -/* - * Get the current time in microseconds from an unknown base. - */ -static inline int64_t -os_time_get(void) -{ - return os_time_get_nano() / 1000; -} - - -/* - * Sleep. - */ -void -os_time_sleep(int64_t usecs); - - -/* - * Helper function for detecting time outs, taking in account overflow. - * - * Returns true if the current time has elapsed beyond the specified interval. - */ -static inline boolean -os_time_timeout(int64_t start, - int64_t end, - int64_t curr) -{ - if (start <= end) - return !(start <= curr && curr < end); - else - return !((start <= curr) || (curr < end)); -} - - -/** - * Convert a relative timeout in nanoseconds into an absolute timeout, - * in other words, it returns current time + timeout. - * os_time_get_nano() must be monotonic. - * PIPE_TIMEOUT_INFINITE is passed through unchanged. If the calculation - * overflows, PIPE_TIMEOUT_INFINITE is returned. - */ -int64_t -os_time_get_absolute_timeout(uint64_t timeout); - - -/** - * Wait until the variable at the given memory location is zero. - * - * \param var variable - * \param timeout timeout in ns, can be anything from 0 (no wait) to - * PIPE_TIME_INFINITE (wait forever) - * \return true if the variable is zero - */ -bool -os_wait_until_zero(volatile int *var, uint64_t timeout); - - -/** - * Wait until the variable at the given memory location is zero. - * The timeout is the absolute time when the waiting should stop. If it is - * less than or equal to the current time, it only returns the status and - * doesn't wait. PIPE_TIME_INFINITE waits forever. This requires that - * os_time_get_nano is monotonic. - * - * \param var variable - * \param timeout the time in ns when the waiting should stop - * \return true if the variable is zero - */ -bool -os_wait_until_zero_abs_timeout(volatile int *var, int64_t timeout); - -#ifdef __cplusplus -} -#endif - -#endif /* _OS_TIME_H_ */ diff --git a/src/gallium/auxiliary/util/u_time.h b/src/gallium/auxiliary/util/u_time.h index a5017d6bce2..99fa1400511 100644 --- a/src/gallium/auxiliary/util/u_time.h +++ b/src/gallium/auxiliary/util/u_time.h @@ -38,7 +38,7 @@ #include "pipe/p_config.h" -#include "os/os_time.h" +#include "util/os_time.h" #include "pipe/p_compiler.h" |