Цитата(andrewlekar @ Sep 5 2013, 10:51)

Вот реализация posix совместимого gettime.c для винды. Не знаю, правда, как у этого кода с совместимостью со старыми виндами...
CODE
#include "gettime.h"
#ifdef __cplusplus
extern "C" {
#endif
static LARGE_INTEGER getFILETIMEoffset()
{
SYSTEMTIME s;
FILETIME f;
LARGE_INTEGER t;
s.wYear = 1970;
s.wMonth = 1;
s.wDay = 1;
s.wHour = 0;
s.wMinute = 0;
s.wSecond = 0;
s.wMilliseconds = 0;
SystemTimeToFileTime(&s, &f);
t.QuadPart = f.dwHighDateTime;
t.QuadPart <<= 32;
t.QuadPart |= f.dwLowDateTime;
return (t);
}
int clock_gettime(clockid_t clk_id, struct timespec *tp)
{
LARGE_INTEGER t;
FILETIME f;
double microseconds;
static LARGE_INTEGER offset;
static double frequencyToMicroseconds;
static int initialized = 0;
static BOOL usePerformanceCounter = 0;
(void)clk_id;
if (!initialized) {
LARGE_INTEGER performanceFrequency;
initialized = 1;
usePerformanceCounter = QueryPerformanceFrequency(&performanceFrequency);
if (usePerformanceCounter) {
QueryPerformanceCounter(&offset);
frequencyToMicroseconds = (double)performanceFrequency.QuadPart / 1000000.;
} else {
offset = getFILETIMEoffset();
frequencyToMicroseconds = 10.;
}
}
if (usePerformanceCounter) QueryPerformanceCounter(&t);
else {
GetSystemTimeAsFileTime(&f);
t.QuadPart = f.dwHighDateTime;
t.QuadPart <<= 32;
t.QuadPart |= f.dwLowDateTime;
}
t.QuadPart -= offset.QuadPart;
microseconds = (double)t.QuadPart / frequencyToMicroseconds;
t.QuadPart = (LONGLONG)microseconds;
tp->tv_sec = (long)(t.QuadPart / 1000000);
tp->tv_nsec = (t.QuadPart % 1000000) * 1000;
return (0);
}
#ifdef __cplusplus
}
#endif
Кодище!!
Вы скинули хорошую ссылку, нашёл вроде то, что нужно, по крайней мере что-то получилось слепить на первых порах, буду смотреть дальше