27 #define CLOCK_REALTIME 0
28 #define CLOCK_MONOTONIC 1
29 #define CLOCK_PROCESS_CPUTIME_ID 2
45 SystemTimeToFileTime(&s, &f);
46 t.QuadPart = f.dwHighDateTime;
48 t.QuadPart |= f.dwLowDateTime;
58 static LARGE_INTEGER offset;
59 static double frequencyToNanoseconds;
60 static int initialized = 0;
61 static BOOL usePerformanceCounter = 0;
64 LARGE_INTEGER performanceFrequency;
66 usePerformanceCounter = QueryPerformanceFrequency(&performanceFrequency);
67 if (usePerformanceCounter) {
68 QueryPerformanceCounter(&offset);
69 frequencyToNanoseconds = (double)performanceFrequency.QuadPart / 1000000000.;
72 frequencyToNanoseconds = 10000.;
76 if (usePerformanceCounter) {
77 QueryPerformanceCounter(&t);
80 GetSystemTimeAsFileTime(&f);
81 t.QuadPart = f.dwHighDateTime;
83 t.QuadPart |= f.dwLowDateTime;
86 t.QuadPart -= offset.QuadPart;
87 nanoseconds = (double)t.QuadPart / frequencyToNanoseconds;
88 t.QuadPart = (LONGLONG)nanoseconds;
89 p_ts->tv_sec = t.QuadPart / 1000000000;
90 p_ts->tv_nsec = t.QuadPart % 1000000000;