mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
gallium/os: use CLOCK_MONOTONIC for sleeps (v2)
v2: handle EINTR, remove backslashes Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
This commit is contained in:
parent
4da9f7e7ce
commit
4cdc482283
2 changed files with 14 additions and 6 deletions
|
|
@ -40,6 +40,7 @@
|
|||
# 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
|
||||
|
|
@ -81,19 +82,30 @@ os_time_get_nano(void)
|
|||
}
|
||||
|
||||
|
||||
#if defined(PIPE_SUBSYSTEM_WINDOWS_USER)
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
int64_t
|
||||
|
|
|
|||
|
|
@ -70,12 +70,8 @@ os_time_get(void)
|
|||
/*
|
||||
* Sleep.
|
||||
*/
|
||||
#if defined(PIPE_OS_UNIX)
|
||||
#define os_time_sleep(_usecs) usleep(_usecs)
|
||||
#else
|
||||
void
|
||||
os_time_sleep(int64_t usecs);
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue