#include <9pm/windows.h>
#include <9pm/u.h>
#include <9pm/libc.h>
static double fasttick;
static int init;
static int nofasttick;
vlong
nsec(void)
{
LARGE_INTEGER ti, fi;
FILETIME ft;
uvlong t;
if(!init){
init = 1;
if(QueryPerformanceFrequency(&fi) && fi.QuadPart != 0)
fasttick = 1.e9/fi.QuadPart;
else
nofasttick = 1;
}
GetSystemTimeAsFileTime(&ft);
t = (((uvlong)ft.dwLowDateTime) + (((uvlong)ft.dwHighDateTime)<<32))*100;
if(!nofasttick && QueryPerformanceCounter(&ti)) {
t += (uvlong)(((double)ti.QuadPart)*fasttick);
t -= ((uvlong)GetTickCount())*1000000;
}
return t;
}
syntax highlighted by Code2HTML, v. 0.9.1