1 // RUN: %libomp-compile-and-run
2 #include <stdio.h>
3 #include "omp_testsuite.h"
4 
5 int test_omp_pause_resource() {
6   int fails, nthreads, my_dev;
7 
8   fails = 0;
9   nthreads = 0;
10   my_dev = omp_get_initial_device();
11 
12 #pragma omp parallel
13 #pragma omp single
14   nthreads = omp_get_num_threads();
15 
16   if (omp_pause_resource(omp_pause_soft, my_dev))
17     fails++;
18 
19 #pragma omp parallel shared(nthreads)
20 #pragma omp single
21   nthreads = omp_get_num_threads();
22 
23   if (nthreads == 0)
24     fails++;
25   if (omp_pause_resource(omp_pause_hard, my_dev))
26     fails++;
27   nthreads = 0;
28 
29 #pragma omp parallel shared(nthreads)
30 #pragma omp single
31   nthreads = omp_get_num_threads();
32 
33   if (nthreads == 0)
34     fails++;
35   if (omp_pause_resource_all(omp_pause_soft))
36     fails++;
37   nthreads = 0;
38 
39 #pragma omp parallel shared(nthreads)
40 #pragma omp single
41   nthreads = omp_get_num_threads();
42 
43   if (nthreads == 0)
44     fails++;
45   return fails == 0;
46 }
47 
48 int main() {
49   int i;
50   int num_failed = 0;
51 
52   for (i = 0; i < REPETITIONS; i++) {
53     if (!test_omp_pause_resource()) {
54       num_failed++;
55     }
56   }
57   return num_failed;
58 }
59