blob: 32c1120ab0e8a466ff0f1f0c5f2230c72ce6d7d3 [file] [log] [blame]
Jonathan Peyton9b8bb322019-01-16 20:07:39 +00001// RUN: %libomp-compile-and-run
2#include <stdio.h>
3#include "omp_testsuite.h"
4
5int 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
48int 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}