aboutsummaryrefslogtreecommitdiff
path: root/final/runtime/test/api/omp_pause_resource.c
diff options
context:
space:
mode:
Diffstat (limited to 'final/runtime/test/api/omp_pause_resource.c')
-rw-r--r--final/runtime/test/api/omp_pause_resource.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/final/runtime/test/api/omp_pause_resource.c b/final/runtime/test/api/omp_pause_resource.c
new file mode 100644
index 0000000..32c1120
--- /dev/null
+++ b/final/runtime/test/api/omp_pause_resource.c
@@ -0,0 +1,58 @@
+// RUN: %libomp-compile-and-run
+#include <stdio.h>
+#include "omp_testsuite.h"
+
+int test_omp_pause_resource() {
+ int fails, nthreads, my_dev;
+
+ fails = 0;
+ nthreads = 0;
+ my_dev = omp_get_initial_device();
+
+#pragma omp parallel
+#pragma omp single
+ nthreads = omp_get_num_threads();
+
+ if (omp_pause_resource(omp_pause_soft, my_dev))
+ fails++;
+
+#pragma omp parallel shared(nthreads)
+#pragma omp single
+ nthreads = omp_get_num_threads();
+
+ if (nthreads == 0)
+ fails++;
+ if (omp_pause_resource(omp_pause_hard, my_dev))
+ fails++;
+ nthreads = 0;
+
+#pragma omp parallel shared(nthreads)
+#pragma omp single
+ nthreads = omp_get_num_threads();
+
+ if (nthreads == 0)
+ fails++;
+ if (omp_pause_resource_all(omp_pause_soft))
+ fails++;
+ nthreads = 0;
+
+#pragma omp parallel shared(nthreads)
+#pragma omp single
+ nthreads = omp_get_num_threads();
+
+ if (nthreads == 0)
+ fails++;
+ return fails == 0;
+}
+
+int main() {
+ int i;
+ int num_failed = 0;
+
+ for (i = 0; i < REPETITIONS; i++) {
+ if (!test_omp_pause_resource()) {
+ num_failed++;
+ }
+ }
+ return num_failed;
+}