Module: wine Branch: master Commit: 616e2284e038c00757eee940bb2c469531f4acdd URL: https://source.winehq.org/git/wine.git/?a=commit;h=616e2284e038c00757eee940b...
Author: Gijs Vermeulen gijsvrm@gmail.com Date: Fri Jun 4 20:10:27 2021 +0200
vcomp: Implement omp_get_num_procs().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50041 Signed-off-by: Gijs Vermeulen gijsvrm@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/vcomp/main.c | 6 ++++-- dlls/vcomp/tests/vcomp.c | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/dlls/vcomp/main.c b/dlls/vcomp/main.c index 90caac83750..30bc2c63501 100644 --- a/dlls/vcomp/main.c +++ b/dlls/vcomp/main.c @@ -43,6 +43,7 @@ static DWORD vcomp_context_tls = TLS_OUT_OF_INDEXES; static HMODULE vcomp_module; static int vcomp_max_threads; static int vcomp_num_threads; +static int vcomp_num_procs; static BOOL vcomp_nested_fork = FALSE;
static RTL_CRITICAL_SECTION vcomp_section; @@ -1001,8 +1002,8 @@ int CDECL omp_get_nested(void)
int CDECL omp_get_num_procs(void) { - TRACE("stub\n"); - return 1; + TRACE("\n"); + return vcomp_num_procs; }
int CDECL omp_get_num_threads(void) @@ -1843,6 +1844,7 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) vcomp_module = instance; vcomp_max_threads = sysinfo.dwNumberOfProcessors; vcomp_num_threads = sysinfo.dwNumberOfProcessors; + vcomp_num_procs = sysinfo.dwNumberOfProcessors; break; }
diff --git a/dlls/vcomp/tests/vcomp.c b/dlls/vcomp/tests/vcomp.c index 478bb5d7cfe..16008d17728 100644 --- a/dlls/vcomp/tests/vcomp.c +++ b/dlls/vcomp/tests/vcomp.c @@ -117,6 +117,7 @@ static void (CDECL *pomp_destroy_lock)(omp_lock_t *lock); static void (CDECL *pomp_destroy_nest_lock)(omp_nest_lock_t *lock); static int (CDECL *pomp_get_max_threads)(void); static int (CDECL *pomp_get_nested)(void); +static int (CDECL *pomp_get_num_procs)(void); static int (CDECL *pomp_get_num_threads)(void); static int (CDECL *pomp_get_thread_num)(void); static int (CDECL *pomp_in_parallel)(void); @@ -352,6 +353,7 @@ static BOOL init_vcomp(void) VCOMP_GET_PROC(omp_destroy_nest_lock); VCOMP_GET_PROC(omp_get_max_threads); VCOMP_GET_PROC(omp_get_nested); + VCOMP_GET_PROC(omp_get_num_procs); VCOMP_GET_PROC(omp_get_num_threads); VCOMP_GET_PROC(omp_get_thread_num); VCOMP_GET_PROC(omp_in_parallel); @@ -2209,11 +2211,24 @@ static void test_reduction_float_double(void) } }
+static void test_omp_get_num_procs(void) +{ + SYSTEM_INFO sysinfo; + int num_procs; + + num_procs = pomp_get_num_procs(); + ok(num_procs > 0, "expected non-zero num_procs\n"); + GetSystemInfo(&sysinfo); + ok(sysinfo.dwNumberOfProcessors > 0, "expected non-zero dwNumberOfProcessors\n"); + ok(num_procs == sysinfo.dwNumberOfProcessors, "got dwNumberOfProcessors %d num_procs %d\n", sysinfo.dwNumberOfProcessors, num_procs); +} + START_TEST(vcomp) { if (!init_vcomp()) return;
+ test_omp_get_num_procs(); test_omp_get_num_threads(FALSE); test_omp_get_num_threads(TRUE); test_vcomp_fork();