Files
openmp/runtime/test/api/omp_pause_resource.c
Jonathan Peyton 4338c2574e [OpenMP] Add omp_pause_resource* API
Add omp_pause_resource and omp_pause_resource_all API and enum, plus stub for
internal implementation. Implemented callable helper function to do local pause,
and added basic functionality for hard and soft pause.

Patch by Terry Wilmarth

Differential Revision: https://reviews.llvm.org/D55078


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@351372 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-16 20:07:39 +00:00

59 lines
1.1 KiB
C

// 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;
}