Alexandre Julliard : kernel32: Move GetSystemTimes() implementation to kernelbase.
Alexandre Julliard
julliard at winehq.org
Fri May 22 13:51:09 CDT 2020
Module: wine
Branch: master
Commit: 79e3c21c3cca822efedff3092df42f9044da10fe
URL: https://source.winehq.org/git/wine.git/?a=commit;h=79e3c21c3cca822efedff3092df42f9044da10fe
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri May 22 09:15:45 2020 +0200
kernel32: Move GetSystemTimes() implementation to kernelbase.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernel32/kernel32.spec | 2 +-
dlls/kernel32/time.c | 71 -----------------------------------------
dlls/kernelbase/kernelbase.spec | 2 +-
dlls/kernelbase/sync.c | 57 ++++++++++++++++++++++++++++++++-
4 files changed, 58 insertions(+), 74 deletions(-)
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index efb892bf1b..72a09c53c8 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -835,7 +835,7 @@
@ stdcall GetSystemTimeAdjustment(ptr ptr ptr)
@ stdcall -import GetSystemTimeAsFileTime(ptr)
@ stdcall -import GetSystemTimePreciseAsFileTime(ptr)
-@ stdcall GetSystemTimes(ptr ptr ptr)
+@ stdcall -import GetSystemTimes(ptr ptr ptr)
@ stdcall -import GetSystemWindowsDirectoryA(ptr long)
@ stdcall -import GetSystemWindowsDirectoryW(ptr long)
@ stdcall -import GetSystemWow64DirectoryA(ptr long)
diff --git a/dlls/kernel32/time.c b/dlls/kernel32/time.c
index 5aef53da63..127f341adc 100644
--- a/dlls/kernel32/time.c
+++ b/dlls/kernel32/time.c
@@ -223,77 +223,6 @@ BOOL WINAPI FileTimeToDosDateTime( const FILETIME *ft, LPWORD fatdate,
return TRUE;
}
-/*********************************************************************
- * GetSystemTimes (KERNEL32.@)
- *
- * Retrieves system timing information
- *
- * PARAMS
- * lpIdleTime [O] Destination for idle time.
- * lpKernelTime [O] Destination for kernel time.
- * lpUserTime [O] Destination for user time.
- *
- * RETURNS
- * TRUE if success, FALSE otherwise.
- */
-BOOL WINAPI GetSystemTimes(LPFILETIME lpIdleTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime)
-{
- LARGE_INTEGER idle_time, kernel_time, user_time;
- SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION *sppi;
- SYSTEM_BASIC_INFORMATION sbi;
- ULONG ret_size;
- int i;
-
- TRACE("(%p,%p,%p)\n", lpIdleTime, lpKernelTime, lpUserTime);
-
- if (!set_ntstatus( NtQuerySystemInformation( SystemBasicInformation, &sbi, sizeof(sbi), &ret_size )))
- return FALSE;
-
- sppi = HeapAlloc( GetProcessHeap(), 0,
- sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION) * sbi.NumberOfProcessors);
- if (!sppi)
- {
- SetLastError( ERROR_OUTOFMEMORY );
- return FALSE;
- }
-
- if (!set_ntstatus( NtQuerySystemInformation( SystemProcessorPerformanceInformation, sppi,
- sizeof(*sppi) * sbi.NumberOfProcessors, &ret_size )))
- {
- HeapFree( GetProcessHeap(), 0, sppi );
- return FALSE;
- }
-
- idle_time.QuadPart = 0;
- kernel_time.QuadPart = 0;
- user_time.QuadPart = 0;
- for (i = 0; i < sbi.NumberOfProcessors; i++)
- {
- idle_time.QuadPart += sppi[i].IdleTime.QuadPart;
- kernel_time.QuadPart += sppi[i].KernelTime.QuadPart;
- user_time.QuadPart += sppi[i].UserTime.QuadPart;
- }
-
- if (lpIdleTime)
- {
- lpIdleTime->dwLowDateTime = idle_time.u.LowPart;
- lpIdleTime->dwHighDateTime = idle_time.u.HighPart;
- }
- if (lpKernelTime)
- {
- lpKernelTime->dwLowDateTime = kernel_time.u.LowPart;
- lpKernelTime->dwHighDateTime = kernel_time.u.HighPart;
- }
- if (lpUserTime)
- {
- lpUserTime->dwLowDateTime = user_time.u.LowPart;
- lpUserTime->dwHighDateTime = user_time.u.HighPart;
- }
-
- HeapFree( GetProcessHeap(), 0, sppi );
- return TRUE;
-}
-
/******************************************************************************
* GetTickCount64 (KERNEL32.@)
*/
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index 4a6bc5eea4..1500229969 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -698,7 +698,7 @@
@ stdcall GetSystemTimeAdjustment(ptr ptr ptr) kernel32.GetSystemTimeAdjustment
@ stdcall GetSystemTimeAsFileTime(ptr)
@ stdcall GetSystemTimePreciseAsFileTime(ptr)
-@ stdcall GetSystemTimes(ptr ptr ptr) kernel32.GetSystemTimes
+@ stdcall GetSystemTimes(ptr ptr ptr)
@ stdcall GetSystemWindowsDirectoryA(ptr long)
@ stdcall GetSystemWindowsDirectoryW(ptr long)
@ stdcall GetSystemWow64Directory2A(ptr long long)
diff --git a/dlls/kernelbase/sync.c b/dlls/kernelbase/sync.c
index 99706277da..7ea70202c2 100644
--- a/dlls/kernelbase/sync.c
+++ b/dlls/kernelbase/sync.c
@@ -124,10 +124,60 @@ static BOOL get_open_object_attributes( OBJECT_ATTRIBUTES *attr, UNICODE_STRING
/***********************************************************************
- * Waits
+ * Time functions
***********************************************************************/
+/*********************************************************************
+ * GetSystemTimes (kernelbase.@)
+ */
+BOOL WINAPI DECLSPEC_HOTPATCH GetSystemTimes( FILETIME *idle, FILETIME *kernel, FILETIME *user )
+{
+ LARGE_INTEGER idle_time, kernel_time, user_time;
+ SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION *info;
+ ULONG ret_size;
+ DWORD i, cpus = NtCurrentTeb()->Peb->NumberOfProcessors;
+
+ if (!(info = HeapAlloc( GetProcessHeap(), 0, sizeof(*info) * cpus )))
+ {
+ SetLastError( ERROR_OUTOFMEMORY );
+ return FALSE;
+ }
+ if (!set_ntstatus( NtQuerySystemInformation( SystemProcessorPerformanceInformation, info,
+ sizeof(*info) * cpus, &ret_size )))
+ {
+ HeapFree( GetProcessHeap(), 0, info );
+ return FALSE;
+ }
+ idle_time.QuadPart = 0;
+ kernel_time.QuadPart = 0;
+ user_time.QuadPart = 0;
+ for (i = 0; i < cpus; i++)
+ {
+ idle_time.QuadPart += info[i].IdleTime.QuadPart;
+ kernel_time.QuadPart += info[i].KernelTime.QuadPart;
+ user_time.QuadPart += info[i].UserTime.QuadPart;
+ }
+ if (idle)
+ {
+ idle->dwLowDateTime = idle_time.u.LowPart;
+ idle->dwHighDateTime = idle_time.u.HighPart;
+ }
+ if (kernel)
+ {
+ kernel->dwLowDateTime = kernel_time.u.LowPart;
+ kernel->dwHighDateTime = kernel_time.u.HighPart;
+ }
+ if (user)
+ {
+ user->dwLowDateTime = user_time.u.LowPart;
+ user->dwHighDateTime = user_time.u.HighPart;
+ }
+ HeapFree( GetProcessHeap(), 0, info );
+ return TRUE;
+}
+
+
/******************************************************************************
* GetTickCount (kernelbase.@)
*/
@@ -156,6 +206,11 @@ ULONGLONG WINAPI DECLSPEC_HOTPATCH GetTickCount64(void)
}
+/***********************************************************************
+ * Waits
+ ***********************************************************************/
+
+
static HANDLE normalize_handle_if_console( HANDLE handle )
{
static HANDLE wait_event;
More information about the wine-cvs
mailing list