1 // These functions are used to provide a signal-wait mechanism to enforce 2 // expected scheduling for the test cases. Conditional variable (s) needs to be 3 // shared! Initialize to 0 4 #include <unistd.h> 5 6 #define OMPT_SIGNAL(s) ompt_signal(&s) 7 // inline ompt_signal(int * s)8void ompt_signal(int *s) { 9 #pragma omp atomic 10 (*s)++; 11 } 12 13 #define OMPT_WAIT(s, v) ompt_wait(&s, v) 14 // wait for s >= v 15 // inline ompt_wait(int * s,int v)16void ompt_wait(int *s, int v) { 17 int wait = 0; 18 do { 19 usleep(10); 20 #pragma omp atomic read 21 wait = (*s); 22 } while (wait < v); 23 } 24