1 // RUN: %libomp-compile-and-run 2 #include <stdio.h> 3 #include "omp_testsuite.h" 4 5 static omp_nest_lock_t lck; 6 test_omp_test_nest_lock()7int test_omp_test_nest_lock() 8 { 9 int nr_threads_in_single = 0; 10 int result = 0; 11 int nr_iterations = 0; 12 int i; 13 14 omp_init_nest_lock (&lck); 15 #pragma omp parallel shared(lck) 16 { 17 #pragma omp for 18 for (i = 0; i < LOOPCOUNT; i++) 19 { 20 /*omp_set_lock(&lck);*/ 21 while(!omp_test_nest_lock (&lck)) 22 {}; 23 #pragma omp flush 24 nr_threads_in_single++; 25 #pragma omp flush 26 nr_iterations++; 27 nr_threads_in_single--; 28 result = result + nr_threads_in_single; 29 omp_unset_nest_lock (&lck); 30 } 31 } 32 omp_destroy_nest_lock (&lck); 33 return ((result == 0) && (nr_iterations == LOOPCOUNT)); 34 } 35 main()36int main() 37 { 38 int i; 39 int num_failed=0; 40 41 for(i = 0; i < REPETITIONS; i++) { 42 if(!test_omp_test_nest_lock()) { 43 num_failed++; 44 } 45 } 46 return num_failed; 47 } 48