From: Austin English <austinenglish@gmail.com>
Subject: kernel32: implement GetLargePageMinimum
Message-Id: <CACC5Q1fiVB6zh5Pqrfu9b9gP59Q5RmZma-CUt-4U1GoBspP=4g@mail.gmail.com>
Date: Wed, 14 Oct 2015 12:03:54 -0500

For https://bugs.winehq.org/show_bug.cgi?id=18745

-- 
-Austin

From eac5e093c4055a9295f3cfa71d6df7a8e4286c15 Mon Sep 17 00:00:00 2001
From: Austin English <austinenglish@gmail.com>
Date: Wed, 14 Oct 2015 11:39:13 -0500
Subject: [PATCH] kernel32: implement GetLargePageMinimum

Signed-off-by: Austin English <austinenglish@gmail.com>
---
 dlls/kernel32/kernel32.spec |  2 +-
 dlls/kernel32/process.c     | 29 +++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index dfc305b..d6a298a 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/process.c b/dlls/kernel32/process.c
index 5e6ab10..ded8ae9 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -4041,3 +4041,32 @@ UINT WINAPI GetSystemFirmwareTable(DWORD provider, DWORD id, PVOID buffer, DWORD
     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
     return 0;
 }
+
+/***********************************************************************
+ *           GetLargePageMinimum (KERNEL32.@)
+ */
+SIZE_T WINAPI GetLargePageMinimum(void)
+{
+#ifdef linux
+    FILE *f;
+    unsigned long hugepagesize = 0;
+
+    f = fopen( "/proc/meminfo", "r" );
+    if (f)
+    {
+        char buffer[256];
+
+        while (fgets( buffer, sizeof(buffer), f ))
+        {
+            if (sscanf(buffer, "Hugepagesize: %lu", &hugepagesize))
+                hugepagesize = (ULONG64)hugepagesize*1024;
+        }
+        fclose( f );
+    }
+    FIXME("returning %lu\n", hugepagesize);
+    return hugepagesize;
+#else
+    FIXME("not implemented for your platform\n");
+    return 0;
+#endif
+}

-- 
2.6.1