Austin English : kernel32: Implement GetLargePageMinimum.

Alexandre Julliard julliard at winehq.org
Mon Aug 22 07:32:38 CDT 2016


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

Author: Austin English <austinenglish at gmail.com>
Date:   Wed Jun 15 23:43:46 2016 +0200

kernel32: Implement GetLargePageMinimum.

Signed-off-by: Austin English <austinenglish at gmail.com>
Signed-off-by: Marcus Meissner <marcus at jet.franken.de>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit 4d313e6475383e5aa1ebd8c0917f1f11f5c81f66)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 .../api-ms-win-core-memory-l1-1-1.spec                   |  2 +-
 dlls/kernel32/cpu.c                                      | 12 ++++++++++++
 dlls/kernel32/kernel32.spec                              |  2 +-
 dlls/kernel32/tests/process.c                            | 16 ++++++++++++++++
 4 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/dlls/api-ms-win-core-memory-l1-1-1/api-ms-win-core-memory-l1-1-1.spec b/dlls/api-ms-win-core-memory-l1-1-1/api-ms-win-core-memory-l1-1-1.spec
index 5d3eb13..959e65d 100644
--- a/dlls/api-ms-win-core-memory-l1-1-1/api-ms-win-core-memory-l1-1-1.spec
+++ b/dlls/api-ms-win-core-memory-l1-1-1/api-ms-win-core-memory-l1-1-1.spec
@@ -3,7 +3,7 @@
 @ stdcall CreateFileMappingW(long ptr long long long wstr) kernel32.CreateFileMappingW
 @ stdcall CreateMemoryResourceNotification(long) kernel32.CreateMemoryResourceNotification
 @ stdcall FlushViewOfFile(ptr long) kernel32.FlushViewOfFile
-@ stub GetLargePageMinimum
+@ stdcall GetLargePageMinimum() kernel32.GetLargePageMinimum
 @ stub GetProcessWorkingSetSizeEx
 @ stdcall GetSystemFileCacheSize(ptr ptr ptr) kernel32.GetSystemFileCacheSize
 @ stdcall GetWriteWatch(long ptr long ptr ptr ptr) kernel32.GetWriteWatch
diff --git a/dlls/kernel32/cpu.c b/dlls/kernel32/cpu.c
index f48fcf0..3a7a5e8 100644
--- a/dlls/kernel32/cpu.c
+++ b/dlls/kernel32/cpu.c
@@ -291,3 +291,15 @@ err:
     }
     return TRUE;
 }
+
+/***********************************************************************
+ *           GetLargePageMinimum (KERNEL32.@)
+ */
+SIZE_T WINAPI GetLargePageMinimum(void)
+{
+#if defined(__i386___) || defined(__x86_64__)
+    return 2 * 1024 * 1024;
+#endif
+    FIXME("Not implemented on your platform/architecture.\n");
+    return 0;
+}
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index bc147c5..7936133 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -696,7 +696,7 @@
 @ stdcall GetHandleInformation(long ptr)
 @ stub -i386 GetLSCallbackTarget
 @ stub -i386 GetLSCallbackTemplate
-# @ stub GetLargePageMinimum
+@ stdcall GetLargePageMinimum()
 @ stdcall GetLargestConsoleWindowSize(long)
 @ stdcall GetLastError()
 @ stub GetLinguistLangSize
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
index 0c4bded..dfebb34 100644
--- a/dlls/kernel32/tests/process.c
+++ b/dlls/kernel32/tests/process.c
@@ -88,6 +88,7 @@ static BOOL   (WINAPI *pProcess32Next)(HANDLE, PROCESSENTRY32*);
 static BOOL   (WINAPI *pThread32First)(HANDLE, THREADENTRY32*);
 static BOOL   (WINAPI *pThread32Next)(HANDLE, THREADENTRY32*);
 static BOOL   (WINAPI *pGetLogicalProcessorInformationEx)(LOGICAL_PROCESSOR_RELATIONSHIP,SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*,DWORD*);
+static SIZE_T (WINAPI *pGetLargePageMinimum)(void);
 
 /* ############################### */
 static char     base[MAX_PATH];
@@ -252,6 +253,7 @@ static BOOL init(void)
     pThread32First = (void *)GetProcAddress(hkernel32, "Thread32First");
     pThread32Next = (void *)GetProcAddress(hkernel32, "Thread32Next");
     pGetLogicalProcessorInformationEx = (void *)GetProcAddress(hkernel32, "GetLogicalProcessorInformationEx");
+    pGetLargePageMinimum = (void *)GetProcAddress(hkernel32, "GetLargePageMinimum");
 
     return TRUE;
 }
@@ -3142,6 +3144,19 @@ static void test_GetLogicalProcessorInformationEx(void)
     HeapFree(GetProcessHeap(), 0, info);
 }
 
+static void test_largepages(void)
+{
+    SIZE_T size;
+
+    if (!pGetLargePageMinimum) {
+        skip("No GetLargePageMinimum support.\n");
+        return;
+    }
+    size = pGetLargePageMinimum();
+
+    ok((size == 0) || (size == 2*1024*1024) || (size == 4*1024*1024), "GetLargePageMinimum reports %ld size\n", size);
+}
+
 START_TEST(process)
 {
     HANDLE job;
@@ -3214,6 +3229,7 @@ START_TEST(process)
     test_GetNumaProcessorNode();
     test_session_info();
     test_GetLogicalProcessorInformationEx();
+    test_largepages();
 
     /* things that can be tested:
      *  lookup:         check the way program to be executed is searched




More information about the wine-cvs mailing list