From 880d0d4a0e6ee35bbb2db1f86464a8a7abf16886 Mon Sep 17 00:00:00 2001 From: Louis Lenders Date: Sat, 11 Dec 2010 20:16:55 +0100 Subject: ntdll: Change NtQuerySystemInformation to return 100ns ticks for SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION info class --- dlls/ntdll/nt.c | 21 ++++++++++++--------- 1 files changed, 12 insertions(+), 9 deletions(-) diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c index 7ad56e4..28f1be4 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c @@ -64,6 +64,8 @@ #include #endif +#define USER_HZ_TO_TICKSPERSEC(x) (ULONGLONG)10000000 * x / user_hz + WINE_DEFAULT_DEBUG_CHANNEL(ntdll); /* @@ -1591,6 +1593,7 @@ NTSTATUS WINAPI NtQuerySystemInformation( int count; char name[10]; char line[255]; + long user_hz = sysconf(_SC_CLK_TCK); /* first line is combined usage */ if (fgets(line,255,cpuinfo)) @@ -1603,9 +1606,9 @@ NTSTATUS WINAPI NtQuerySystemInformation( { sppi = RtlAllocateHeap(GetProcessHeap(), 0, sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION)); - sppi->IdleTime.QuadPart = idle; - sppi->KernelTime.QuadPart = sys; - sppi->UserTime.QuadPart = usr; + sppi->IdleTime.QuadPart = USER_HZ_TO_TICKSPERSEC(idle); + sppi->KernelTime.QuadPart = USER_HZ_TO_TICKSPERSEC(sys); + sppi->UserTime.QuadPart = USER_HZ_TO_TICKSPERSEC(usr); cpus = 1; len = sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION); } @@ -1622,17 +1625,17 @@ NTSTATUS WINAPI NtQuerySystemInformation( out_cpus --; if (name[3]=='0') /* first cpu */ { - sppi->IdleTime.QuadPart = idle; - sppi->KernelTime.QuadPart = sys; - sppi->UserTime.QuadPart = usr; + sppi->IdleTime.QuadPart = USER_HZ_TO_TICKSPERSEC(idle); + sppi->KernelTime.QuadPart = USER_HZ_TO_TICKSPERSEC(sys); + sppi->UserTime.QuadPart = USER_HZ_TO_TICKSPERSEC(usr); } else /* new cpu */ { len = sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION) * (cpus+1); sppi = RtlReAllocateHeap(GetProcessHeap(), 0, sppi, len); - sppi[cpus].IdleTime.QuadPart = idle; - sppi[cpus].KernelTime.QuadPart = sys; - sppi[cpus].UserTime.QuadPart = usr; + sppi[cpus].IdleTime.QuadPart = USER_HZ_TO_TICKSPERSEC(idle); + sppi[cpus].KernelTime.QuadPart = USER_HZ_TO_TICKSPERSEC(sys); + sppi[cpus].UserTime.QuadPart = USER_HZ_TO_TICKSPERSEC(usr); cpus++; } } -- 1.7.1