[Mesa-dev] [PATCH] gallium/os: use CLOCK_MONOTONIC for sleeps

Marek Olšák maraeo at gmail.com
Mon Jul 18 13:18:53 UTC 2016


On Mon, Jul 18, 2016 at 2:38 PM, Eric Engestrom
<eric.engestrom at imgtec.com> wrote:
> On Mon, Jul 18, 2016 at 02:14:49PM +0200, Marek Olšák wrote:
>> From: Marek Olšák <marek.olsak at amd.com>
>>
>> ---
>>  src/gallium/auxiliary/os/os_time.c | 15 +++++++++++++--
>>  src/gallium/auxiliary/os/os_time.h |  4 ----
>>  2 files changed, 13 insertions(+), 6 deletions(-)
>>
>> diff --git a/src/gallium/auxiliary/os/os_time.c b/src/gallium/auxiliary/os/os_time.c
>> index 3d2e416..633ee3d 100644
>> --- a/src/gallium/auxiliary/os/os_time.c
>> +++ b/src/gallium/auxiliary/os/os_time.c
>> @@ -81,19 +81,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; \
>> +   clock_nanosleep(CLOCK_MONOTONIC, 0, &time, NULL); \
>
> This is an actual function, not a macro; the backslashes are unnecessary :)
> This is a good change though, so with those removed:
> Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com>

Thanks.

>
> One (kind of unrelated) thing, though:
> Does a negative sleep really make sense? Shouldn't the param be `uint64_t`?
> I know on Linux and Unix it doesn't.
> If there a reason to keep it signed, maybe a check like this could be
> added:
>         if (usecs < 0) return;

The time in Gallium is always int64_t. clock_nanosleep will fail if
tv_nsec is negative. Thus, a negative time has no effect.

Marek


More information about the mesa-dev mailing list