Пример #1
0
unsigned int tx_getticks(void)
{
#if defined(__linux__) || defined(__FreeBSD__)
	int err;
	struct timespec ts; 

	err = clock_gettime(CLOCK_MONOTONIC, &ts);
	TX_CHECK(err == 0, "clock_gettime failure");

	return tx_ticks = (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);

#elif defined(WIN32)
	LARGE_INTEGER now = {0};
	static LARGE_INTEGER bootup = {0};
	static LARGE_INTEGER frequency = {0};

	if (frequency.QuadPart == 0) {
		QueryPerformanceCounter(&bootup);
		QueryPerformanceFrequency(&frequency);
	}

	QueryPerformanceCounter(&now);
	return  tx_ticks = (now.QuadPart - bootup.QuadPart) * 1000LL / frequency.QuadPart;
#endif
}
Пример #2
0
unsigned int tx_getticks(void)
{
#if defined(__linux__) || defined(__FreeBSD__)
	int err;
	struct timespec ts; 

	err = clock_gettime(CLOCK_MONOTONIC, &ts);
	TX_CHECK(err == 0, "clock_gettime failure");

	return tx_ticks = (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);

#elif defined(WIN32)
	LARGE_INTEGER now = {0};
	static LARGE_INTEGER bootup = {0};
	static LARGE_INTEGER frequency = {0};

	if (frequency.QuadPart == 0) {
		QueryPerformanceCounter(&bootup);
		QueryPerformanceFrequency(&frequency);
	}

	QueryPerformanceCounter(&now);
	return  tx_ticks = (now.QuadPart - bootup.QuadPart) * 1000LL / frequency.QuadPart;
#elif defined(__APPLE__)
	clock_serv_t cclock;
	mach_timespec_t ts;
	host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
	clock_get_time(cclock, &ts);
	mach_port_deallocate(mach_task_self(), cclock);
	return tx_ticks = (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
#endif
}