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