37 lines
		
	
	
		
			677 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			677 B
		
	
	
	
		
			C
		
	
	
	
	
	
/* Copyright (c) 2021-2024 Barcelona Supercomputing Center (BSC)
 | 
						|
 * SPDX-License-Identifier: GPL-3.0-or-later */
 | 
						|
 | 
						|
#include "instr.h"
 | 
						|
 | 
						|
int first_clock_set = 0;
 | 
						|
int64_t first_clock; /* First clock */
 | 
						|
int64_t last_clock; /* Clock from the last event */
 | 
						|
int64_t next_clock = -1; /* Clock for the next event */
 | 
						|
 | 
						|
int64_t get_clock(void)
 | 
						|
{
 | 
						|
	if (next_clock >= 0) {
 | 
						|
		last_clock = next_clock;
 | 
						|
		next_clock = -1;
 | 
						|
	} else {
 | 
						|
		last_clock = (int64_t) ovni_clock_now();
 | 
						|
	}
 | 
						|
 | 
						|
	if (first_clock_set == 0) {
 | 
						|
		first_clock = last_clock;
 | 
						|
		first_clock_set = 1;
 | 
						|
	}
 | 
						|
 | 
						|
	return last_clock;
 | 
						|
}
 | 
						|
 | 
						|
void set_clock(int64_t t)
 | 
						|
{
 | 
						|
	next_clock = t;
 | 
						|
}
 | 
						|
 | 
						|
int64_t get_delta(void)
 | 
						|
{
 | 
						|
	return last_clock - first_clock;
 | 
						|
}
 |