32 lines
		
	
	
		
			668 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			668 B
		
	
	
	
		
			C
		
	
	
	
#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);
 | 
						|
}
 |