Sigrid Solveig Haflínudóttiradd nanosec.c78e765a5 years agoHistory
36 lines · 642 B · C
RawDownload
#include <u.h>#include <libc.h>#include <tos.h> /* * nsec() is wallclock and can be adjusted by timesync * so need to use cycles() instead, but fall back to * nsec() in case we can't */uvlongnanosec(void){	static uvlong fasthz, xstart;	uvlong x, div; 	if(fasthz == ~0ULL)		return nsec() - xstart; 	if(fasthz == 0){		if(_tos->cyclefreq){			fasthz = _tos->cyclefreq;			cycles(&xstart);		} else {			fasthz = ~0ULL;			xstart = nsec();		}		return 0;	}	cycles(&x);	x -= xstart; 	/* this is ugly */	for(div = 1000000000ULL; x < 0x1999999999999999ULL && div > 1 ; div /= 10ULL, x *= 10ULL); 	return x / (fasthz / div);}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t