[PATCH 2/3] ntdll: Fill ActiveProcessorCount field in _KUSER_SHARED_DATA.

Paul Gofman pgofman at codeweavers.com
Mon May 25 10:42:01 CDT 2020


Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
---
 dlls/ntdll/tests/virtual.c | 3 +++
 dlls/ntdll/thread.c        | 1 +
 2 files changed, 4 insertions(+)

diff --git a/dlls/ntdll/tests/virtual.c b/dlls/ntdll/tests/virtual.c
index 3b0d74daeb..59c2224816 100644
--- a/dlls/ntdll/tests/virtual.c
+++ b/dlls/ntdll/tests/virtual.c
@@ -528,6 +528,9 @@ static void test_user_shared_data(void)
     ok(user_shared_data->ProcessorFeatures[PF_RDTSC_INSTRUCTION_AVAILABLE] /* Supported since Pentium CPUs. */,
             "_RDTSC not available.\n");
 #endif
+    ok(user_shared_data->ActiveProcessorCount == NtCurrentTeb()->Peb->NumberOfProcessors
+            || broken(!user_shared_data->ActiveProcessorCount) /* before Win7 */,
+            "Got unexpected ActiveProcessorCount %u.\n", user_shared_data->ActiveProcessorCount);
 }
 
 START_TEST(virtual)
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 19e09c7e38..78574d0c5d 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -238,6 +238,7 @@ static void fill_user_shared_data( struct _KUSER_SHARED_DATA *data )
         features[PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE] = !!(sci.FeatureSet & CPU_FEATURE_ARM_V8_CRYPTO);
         break;
     }
+    data->ActiveProcessorCount = NtCurrentTeb()->Peb->NumberOfProcessors;
 }
 
 HANDLE user_shared_data_init_done(void)
-- 
2.26.2




More information about the wine-devel mailing list