Module: wine Branch: stable Commit: 097008c1be81e3cd0f58b0e76045553adf82676b URL: http://source.winehq.org/git/wine.git/?a=commit;h=097008c1be81e3cd0f58b0e760...
Author: André Hentschel nerv@dawncrow.de Date: Mon Jan 3 20:27:00 2011 +0100
ntdll: Respect multiple CPUs when faking values. (cherry picked from commit 40294182c1554a97dcfa8414b609b6f8de8f5239)
---
dlls/ntdll/nt.c | 19 ++++++++++--------- 1 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c index 99fe77b..3cbcbe7 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c @@ -1588,17 +1588,18 @@ NTSTATUS WINAPI NtQuerySystemInformation( if (cpus == 0) { static int i = 1; - - sppi = RtlAllocateHeap(GetProcessHeap(),0,sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION)); - - memset(sppi, 0 , sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION)); + int n; + cpus = min(NtCurrentTeb()->Peb->NumberOfProcessors, out_cpus); + len = sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION) * cpus; + sppi = RtlAllocateHeap(GetProcessHeap(), 0, len); FIXME("stub info_class SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION\n"); - /* many programs expect these values to change so fake change */ - len = sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION); - sppi->KernelTime.QuadPart = 1 * i; - sppi->UserTime.QuadPart = 2 * i; - sppi->IdleTime.QuadPart = 3 * i; + for (n = 0; n < cpus; n++) + { + sppi[n].KernelTime.QuadPart = 1 * i; + sppi[n].UserTime.QuadPart = 2 * i; + sppi[n].IdleTime.QuadPart = 3 * i; + } i++; }