diff options
Diffstat (limited to 'final/runtime/test/ompt/ompt-signal.h')
-rw-r--r-- | final/runtime/test/ompt/ompt-signal.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/final/runtime/test/ompt/ompt-signal.h b/final/runtime/test/ompt/ompt-signal.h new file mode 100644 index 0000000..b5c28cf --- /dev/null +++ b/final/runtime/test/ompt/ompt-signal.h @@ -0,0 +1,31 @@ +#if defined(WIN32) || defined(_WIN32) +#include <windows.h> +#define delay() Sleep(1); +#else +#include <unistd.h> +#define delay(t) usleep(t); +#endif + +// These functions are used to provide a signal-wait mechanism to enforce expected scheduling for the test cases. +// Conditional variable (s) needs to be shared! Initialize to 0 + +#define OMPT_SIGNAL(s) ompt_signal(&s) +//inline +void ompt_signal(int* s) +{ + #pragma omp atomic + (*s)++; +} + +#define OMPT_WAIT(s,v) ompt_wait(&s,v) +// wait for s >= v +//inline +void ompt_wait(int *s, int v) +{ + int wait=0; + do{ + delay(10); + #pragma omp atomic read + wait = (*s); + }while(wait<v); +} |