[PATCH 1/7] ntdll: Implement RtlGetSystemTimePrecise().

Ken Thomases ken at codeweavers.com
Thu May 2 08:55:39 CDT 2019


On May 2, 2019, at 3:45 AM, Huw Davies <huw at codeweavers.com> wrote:
> 
> Signed-off-by: Huw Davies <huw at codeweavers.com>
> ---
> dlls/ntdll/ntdll.spec |  1 +
> dlls/ntdll/time.c     | 33 +++++++++++++++++++++++++++++++++
> include/winternl.h    |  1 +
> 3 files changed, 35 insertions(+)
> 
> diff --git a/dlls/ntdll/time.c b/dlls/ntdll/time.c
> index 443d8b26be..d0a7954377 100644
> --- a/dlls/ntdll/time.c
> +++ b/dlls/ntdll/time.c
> @@ -474,6 +474,39 @@ NTSTATUS WINAPI NtQuerySystemTime( PLARGE_INTEGER Time )
>     return STATUS_SUCCESS;
> }
> 
> +/***********************************************************************
> + *       RtlGetSystemTimePrecise [NTDLL.@]
> + *
> + * Get a more accurate current system time.
> + *
> + * RETURNS
> + *   The current system time.
> + */
> +LONGLONG WINAPI RtlGetSystemTimePrecise( void )
> +{
> +    LONGLONG time;
> +
> +#if defined(HAVE_CLOCK_GETTIME)
> +    struct timespec ts;
> +
> +    if (!clock_gettime( CLOCK_REALTIME, &ts ))
> +    {
> +        time = ts.tv_sec * (ULONGLONG)TICKSPERSEC + TICKS_1601_TO_1970;
> +        time += (ts.tv_nsec + 50) / 100;
> +    }
> +    else
> +#endif

Using clock_gettime() on macOS is a bit problematic because of backward deployment and weak linking.  See <https://source.winehq.org/git/wine.git/commit/27c71e09ad51ba6aa672a46379efd10b5959863f <https://source.winehq.org/git/wine.git/commit/27c71e09ad51ba6aa672a46379efd10b5959863f>>, although that's not necessarily my preferred approach.  (I wanted to check if it was available at run-time and use it, if so.  Alexandre didn't like that.)

-Ken

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20190502/95f702bd/attachment.html>


More information about the wine-devel mailing list