[PATCH 4/4] kernel32: Forward GetSystemTimeAsFileTime() to NtQuerySystemTime().
Huw Davies
huw at codeweavers.com
Wed May 15 05:45:52 CDT 2019
This relies on FILETIME and LARGE_INTEGER having the same layout.
On an i7-8700 CPU @ 3.20GHz with HZ=1000 it cuts the call cost from
~18ns to ~12ns.
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
dlls/kernel32/kernel32.spec | 2 +-
dlls/kernel32/tests/time.c | 15 +++++++++++++++
dlls/kernel32/time.c | 21 ---------------------
3 files changed, 16 insertions(+), 22 deletions(-)
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 8346575ac6..f887b1dc8c 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -832,7 +832,7 @@
@ stdcall GetSystemRegistryQuota(ptr ptr)
@ stdcall GetSystemTime(ptr)
@ stdcall GetSystemTimeAdjustment(ptr ptr ptr)
-@ stdcall GetSystemTimeAsFileTime(ptr)
+@ stdcall GetSystemTimeAsFileTime(ptr) ntdll.NtQuerySystemTime
@ stdcall GetSystemTimePreciseAsFileTime(ptr)
@ stdcall GetSystemTimes(ptr ptr ptr)
@ stdcall GetSystemWindowsDirectoryA(ptr long)
diff --git a/dlls/kernel32/tests/time.c b/dlls/kernel32/tests/time.c
index 8bbad2b8a2..536f23359b 100644
--- a/dlls/kernel32/tests/time.c
+++ b/dlls/kernel32/tests/time.c
@@ -773,6 +773,20 @@ static ULONGLONG get_longlong_time(FILETIME *time)
return uli.QuadPart;
}
+static void test_GetSystemTimeAsFileTime(void)
+{
+ LARGE_INTEGER t1, t2, t3;
+ FILETIME ft;
+
+ NtQuerySystemTime( &t1 );
+ GetSystemTimeAsFileTime( &ft );
+ NtQuerySystemTime( &t3 );
+ t2.QuadPart = get_longlong_time( &ft );
+
+ ok(t1.QuadPart <= t2.QuadPart, "out of order %s %s\n", wine_dbgstr_longlong(t1.QuadPart), wine_dbgstr_longlong(t2.QuadPart));
+ ok(t2.QuadPart <= t3.QuadPart, "out of order %s %s\n", wine_dbgstr_longlong(t2.QuadPart), wine_dbgstr_longlong(t3.QuadPart));
+}
+
static void test_GetSystemTimePreciseAsFileTime(void)
{
FILETIME ft;
@@ -1012,6 +1026,7 @@ START_TEST(time)
test_FileTimeToDosDateTime();
test_GetCalendarInfo();
test_GetDynamicTimeZoneInformation();
+ test_GetSystemTimeAsFileTime();
test_GetSystemTimePreciseAsFileTime();
test_GetTimeZoneInformationForYear();
}
diff --git a/dlls/kernel32/time.c b/dlls/kernel32/time.c
index 8805c81aaa..3affb725ef 100644
--- a/dlls/kernel32/time.c
+++ b/dlls/kernel32/time.c
@@ -750,27 +750,6 @@ BOOL WINAPI TzSpecificLocalTimeToSystemTime(
}
-/***********************************************************************
- * GetSystemTimeAsFileTime (KERNEL32.@)
- *
- * Get the current time in utc format.
- *
- * PARAMS
- * time [out] Destination for the current utc time
- *
- * RETURNS
- * Nothing.
- */
-void WINAPI GetSystemTimeAsFileTime( FILETIME *time )
-{
- LARGE_INTEGER t;
-
- NtQuerySystemTime( &t );
- time->dwLowDateTime = t.u.LowPart;
- time->dwHighDateTime = t.u.HighPart;
-}
-
-
/***********************************************************************
* GetSystemTimePreciseAsFileTime (KERNEL32.@)
*
--
2.17.1
More information about the wine-devel
mailing list