Handle the one case of ALL_PROCESSOR_GROUPS using GetSystemInfo;
this can't return more than 64 cores, but that's probably good
enough for a stub implementation.

Signed-off-by: Martin Storsjö <[email protected]>
---
 .../winstorecompat/Makefile.am                |  2 +
 .../src/GetActiveProcessorCount.c             | 44 +++++++++++++++++++
 2 files changed, 46 insertions(+)
 create mode 100644 
mingw-w64-libraries/winstorecompat/src/GetActiveProcessorCount.c

diff --git a/mingw-w64-libraries/winstorecompat/Makefile.am 
b/mingw-w64-libraries/winstorecompat/Makefile.am
index 90a42be92..22a9eea8c 100644
--- a/mingw-w64-libraries/winstorecompat/Makefile.am
+++ b/mingw-w64-libraries/winstorecompat/Makefile.am
@@ -13,6 +13,7 @@ libwinstorecompat_a_SOURCES = \
   src/Crypto.c \
   src/EnumProcessModules.c \
   src/GetACP.c \
+  src/GetActiveProcessorCount.c \
   src/GetConsoleOutputCP.c \
   src/GetFileAttributes.c \
   src/GetFileInformationByHandle.c \
@@ -52,6 +53,7 @@ libwinstorecompat_a_SOURCES = \
 libwindowsappcompat_a_SOURCES = \
   src/CreateFileW.c \
   src/EnumProcessModules.c \
+  src/GetActiveProcessorCount.c \
   src/GetFileSize.c \
   src/GetStartupInfo.c \
   src/GetUserName.c \
diff --git a/mingw-w64-libraries/winstorecompat/src/GetActiveProcessorCount.c 
b/mingw-w64-libraries/winstorecompat/src/GetActiveProcessorCount.c
new file mode 100644
index 000000000..439256ed0
--- /dev/null
+++ b/mingw-w64-libraries/winstorecompat/src/GetActiveProcessorCount.c
@@ -0,0 +1,44 @@
+/*
+    Copyright (c) 2025 mingw-w64 project
+
+    Contributing authors: Martin Storsjo
+
+    Permission is hereby granted, free of charge, to any person obtaining a
+    copy of this software and associated documentation files (the "Software"),
+    to deal in the Software without restriction, including without limitation
+    the rights to use, copy, modify, merge, publish, distribute, sublicense,
+    and/or sell copies of the Software, and to permit persons to whom the
+    Software is furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in
+    all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+    DEALINGS IN THE SOFTWARE.
+*/
+
+#define GetActiveProcessorCount __GetActiveProcessorCount
+#include <windows.h>
+#undef GetActiveProcessorCount
+
+DWORD WINAPI GetActiveProcessorCount(WORD GroupNumber)
+{
+    if (GroupNumber == ALL_PROCESSOR_GROUPS) {
+        SYSTEM_INFO info;
+        GetSystemInfo(&info);
+        return info.dwNumberOfProcessors;
+    }
+    SetLastError(ERROR_INVALID_PARAMETER);
+    return 0;
+}
+
+#ifdef _X86_
+DWORD (WINAPI *__MINGW_IMP_SYMBOL(GetActiveProcessorCount))(WORD) 
__asm__("__imp__GetActiveProcessorCount@4") = GetActiveProcessorCount;
+#else
+DWORD (WINAPI *__MINGW_IMP_SYMBOL(GetActiveProcessorCount))(WORD) 
__asm__("__imp_GetActiveProcessorCount") = GetActiveProcessorCount;
+#endif
-- 
2.43.0



_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to