On May 2, 2019, at 3:45 AM, Huw Davies <huw@codeweavers.com> wrote:

Signed-off-by: Huw Davies <huw@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>, 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