[2/2] kernel32: Implement GetNumaProcessorNode.

Sebastian Lackner sebastian at fds-team.de
Sun Jun 28 23:27:34 CDT 2015


From: Michael Müller <michael at fds-team.de>

---
 dlls/kernel32/kernel32.spec   |    2 +-
 dlls/kernel32/process.c       |   21 +++++++++++++++++++++
 dlls/kernel32/tests/process.c |    2 +-
 include/winbase.h             |    1 +
 4 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index f9a0770..7703f2c 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -746,7 +746,7 @@
 @ stdcall GetNumaNodeProcessorMask(long ptr)
 # @ stub GetNumaNodeProcessorMaskEx
 # @ stub GetNumaProcessorMap
-# @ stub GetNumaProcessorNode
+@ stdcall GetNumaProcessorNode(long ptr)
 # @ stub GetNumaProcessorNodeEx
 # @ stub GetNumaProximityNode
 # @ stub GetNumaProximityNodeEx
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 2c8074b..1cd6e47 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -3957,6 +3957,27 @@ BOOL WINAPI GetNumaAvailableMemoryNode(UCHAR node, PULONGLONG available_bytes)
     return FALSE;
 }
 
+/***********************************************************************
+ *           GetNumaProcessorNode (KERNEL32.@)
+ */
+BOOL WINAPI GetNumaProcessorNode(UCHAR processor, PUCHAR node)
+{
+    SYSTEM_INFO si;
+
+    TRACE("(%d, %p)\n", processor, node);
+
+    GetSystemInfo( &si );
+    if (processor < si.dwNumberOfProcessors)
+    {
+        *node = 0;
+        return TRUE;
+    }
+
+    *node = 0xFF;
+    SetLastError(ERROR_INVALID_PARAMETER);
+    return FALSE;
+}
+
 /**********************************************************************
  *           GetProcessDEPPolicy     (KERNEL32.@)
  */
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
index b4a435b..4145dce 100644
--- a/dlls/kernel32/tests/process.c
+++ b/dlls/kernel32/tests/process.c
@@ -2704,7 +2704,7 @@ static void test_GetNumaProcessorNode(void)
 
     if (!pGetNumaProcessorNode)
     {
-        skip("GetNumaProcessorNode is missing\n");
+        win_skip("GetNumaProcessorNode is missing\n");
         return;
     }
 
diff --git a/include/winbase.h b/include/winbase.h
index cc1081e..f3249a7 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -2052,6 +2052,7 @@ WINBASEAPI BOOL        WINAPI GetNamedPipeHandleStateW(HANDLE,LPDWORD,LPDWORD,LP
 #define                       GetNamedPipeHandleState WINELIB_NAME_AW(GetNamedPipeHandleState)
 WINBASEAPI BOOL        WINAPI GetNamedPipeInfo(HANDLE,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
 WINBASEAPI VOID        WINAPI GetNativeSystemInfo(LPSYSTEM_INFO);
+WINBASEAPI BOOL        WINAPI GetNumaProcessorNode(UCHAR,PUCHAR);
 WINADVAPI  BOOL        WINAPI GetNumberOfEventLogRecords(HANDLE,PDWORD);
 WINADVAPI  BOOL        WINAPI GetOldestEventLogRecord(HANDLE,PDWORD);
 WINBASEAPI BOOL        WINAPI GetOverlappedResult(HANDLE,LPOVERLAPPED,LPDWORD,BOOL);
-- 
2.4.4



More information about the wine-patches mailing list