From d0ae2b0d3d9689b682a76821bf3737eb934ec131 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 29 Jun 2015 06:27:34 +0200 Subject: [PATCH] kernel32: Implement GetNumaProcessorNode. --- 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 0070c98ae12..3c40975fcb7 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 2c8074b9096..1cd6e47c5fb 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 b4a435b5d21..4145dceb9b9 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 cc1081eeb22..a1859b0b58a 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);