You've already forked linux-packaging-mono
							
							
		
			
	
	
		
			45 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | // RUN: %libomp-compile-and-run | FileCheck %s
 | ||
|  | // REQUIRES: ompt
 | ||
|  | #include "callback.h"
 | ||
|  | #include <omp.h>
 | ||
|  | 
 | ||
|  | int main() | ||
|  | { | ||
|  |   //need to use an OpenMP construct so that OMPT will be initalized
 | ||
|  |   #pragma omp parallel num_threads(1)
 | ||
|  |     print_ids(0); | ||
|  | 
 | ||
|  |   omp_lock_t lock; | ||
|  |   printf("%" PRIu64 ": &lock: %" PRIu64 "\n", ompt_get_thread_data()->value, (uint64_t) &lock); | ||
|  |   omp_init_lock(&lock); | ||
|  |   print_current_address(1); | ||
|  |   omp_set_lock(&lock); | ||
|  |   print_current_address(2); | ||
|  |   omp_unset_lock(&lock); | ||
|  |   print_current_address(3); | ||
|  |   omp_destroy_lock(&lock); | ||
|  |   print_current_address(4); | ||
|  | 
 | ||
|  | 
 | ||
|  |   // Check if libomp supports the callbacks for this test.
 | ||
|  |   // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_mutex_acquire'
 | ||
|  |   // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_mutex_acquired'
 | ||
|  |   // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_mutex_released'
 | ||
|  |   // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_nest_lock'
 | ||
|  | 
 | ||
|  |   // CHECK: 0: NULL_POINTER=[[NULL:.*$]]
 | ||
|  | 
 | ||
|  |   // CHECK: {{^}}[[MASTER_ID:[0-9]+]]: &lock: [[WAIT_ID:[0-9]+]]
 | ||
|  |   // CHECK: {{^}}[[MASTER_ID]]: ompt_event_init_lock: wait_id=[[WAIT_ID]], hint={{[0-9]+}}, impl={{[0-9]+}}, codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]
 | ||
|  |   // CHECK-NEXT: {{^}}[[MASTER_ID]]: current_address={{.*}}[[RETURN_ADDRESS]]
 | ||
|  |   // CHECK: {{^}}[[MASTER_ID]]: ompt_event_wait_lock: wait_id=[[WAIT_ID]], hint={{[0-9]+}}, impl={{[0-9]+}}, codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]
 | ||
|  |   // CHECK: {{^}}[[MASTER_ID]]: ompt_event_acquired_lock: wait_id=[[WAIT_ID]], codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]
 | ||
|  |   // CHECK-NEXT: {{^}}[[MASTER_ID]]: current_address={{.*}}[[RETURN_ADDRESS]]
 | ||
|  |   // CHECK: {{^}}[[MASTER_ID]]: ompt_event_release_lock: wait_id=[[WAIT_ID]], codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]
 | ||
|  |   // CHECK-NEXT: {{^}}[[MASTER_ID]]: current_address={{.*}}[[RETURN_ADDRESS]]
 | ||
|  |   // CHECK: {{^}}[[MASTER_ID]]: ompt_event_destroy_lock: wait_id=[[WAIT_ID]], codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]
 | ||
|  |   // CHECK-NEXT: {{^}}[[MASTER_ID]]: current_address={{.*}}[[RETURN_ADDRESS]]
 | ||
|  |   | ||
|  |   return 0; | ||
|  | } |