[PATCH] vcomp: Implement omp_get_num_procs().
Gijs Vermeulen
gijsvrm at gmail.com
Fri Jun 4 13:10:27 CDT 2021
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50041
Signed-off-by: Gijs Vermeulen <gijsvrm at gmail.com>
---
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();
--
2.31.1
More information about the wine-devel
mailing list