Huw Davies : kernel32: Forward GetSystemTimeAsFileTime() to NtQuerySystemTime().
Alexandre Julliard
julliard at winehq.org
Wed May 15 16:18:26 CDT 2019
Module: wine
Branch: master
Commit: 71dc2514c3461448b411950e8722fb4e10c54a41
URL: https://source.winehq.org/git/wine.git/?a=commit;h=71dc2514c3461448b411950e8722fb4e10c54a41
Author: Huw Davies <huw at codeweavers.com>
Date: Wed May 15 11:45:52 2019 +0100
kernel32: Forward GetSystemTimeAsFileTime() to NtQuerySystemTime().
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>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
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 8346575..f887b1d 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 8bbad2b..536f233 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 8805c81..3affb72 100644
--- a/dlls/kernel32/time.c
+++ b/dlls/kernel32/time.c
@@ -751,27 +751,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.@)
*
* Get the current time in utc format with greater accuracy.
More information about the wine-cvs
mailing list