André Hentschel : ntdll: Respect multiple CPUs when faking values.

Alexandre Julliard julliard at winehq.org
Thu Apr 7 07:36:47 CDT 2011


Module: wine
Branch: stable
Commit: 097008c1be81e3cd0f58b0e76045553adf82676b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=097008c1be81e3cd0f58b0e76045553adf82676b

Author: André Hentschel <nerv at 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++;
             }
 




More information about the wine-cvs mailing list