diff options
Diffstat (limited to 'rc3/runtime/test/env/omp_wait_policy.c')
-rw-r--r-- | rc3/runtime/test/env/omp_wait_policy.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/rc3/runtime/test/env/omp_wait_policy.c b/rc3/runtime/test/env/omp_wait_policy.c new file mode 100644 index 0000000..b260ce4 --- /dev/null +++ b/rc3/runtime/test/env/omp_wait_policy.c @@ -0,0 +1,40 @@ +// RUN: %libomp-compile && env OMP_WAIT_POLICY=active %libomp-run active +// RUN: %libomp-compile && env OMP_WAIT_POLICY=passive %libomp-run passive +// +// OMP_WAIT_POLICY=active should imply blocktime == INT_MAX +// i.e., threads spin-wait forever +// OMP_WAIT_POLICY=passive should imply blocktime == 0 +// i.e., threads immediately sleep +#include <stdio.h> +#include <string.h> +#include <limits.h> +#include "omp_testsuite.h" + +void usage() { + fprintf(stderr, "usage: omp_wait_policy active|passive\n"); +} + +int main(int argc, char** argv) +{ + int blocktime, retval=1; + const char* env_var_value; + + if (argc != 2) { + usage(); + return 1; + } + + blocktime = kmp_get_blocktime(); + + env_var_value = argv[1]; + if (!strcmp(env_var_value, "active")) { + retval = (blocktime != INT_MAX); + } else if (!strcmp(env_var_value, "passive")) { + retval = (blocktime != 0); + } else { + usage(); + retval = 1; + } + + return retval; +} |