2026-01-09 14:45:12 -07:00
|
|
|
#include <Mw/Milsko.h>
|
2025-11-05 04:29:01 +00:00
|
|
|
|
2025-11-13 10:50:32 +00:00
|
|
|
#if defined(_WIN32)
|
2025-11-05 04:29:01 +00:00
|
|
|
long MwTimeGetTick(void) {
|
2026-01-09 14:45:12 -07:00
|
|
|
return GetTickCount();
|
2025-11-05 04:29:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MwTimeSleep(int ms) {
|
|
|
|
|
Sleep(ms);
|
|
|
|
|
}
|
2026-01-09 14:43:44 -07:00
|
|
|
#elif defined(__APPLE__)
|
2025-11-05 04:29:01 +00:00
|
|
|
long MwTimeGetTick(void) {
|
|
|
|
|
struct timespec ts;
|
|
|
|
|
long n = 0;
|
2026-01-09 14:45:12 -07:00
|
|
|
clock_serv_t cclock;
|
2026-01-09 14:43:44 -07:00
|
|
|
mach_timespec_t mts;
|
2026-01-09 14:45:12 -07:00
|
|
|
|
2026-01-09 14:43:44 -07:00
|
|
|
host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
|
|
|
|
|
clock_get_time(cclock, &mts);
|
|
|
|
|
mach_port_deallocate(mach_task_self(), cclock);
|
2026-01-09 14:45:12 -07:00
|
|
|
|
2026-01-09 14:43:44 -07:00
|
|
|
n += ts.tv_nsec / 1000 / 1000;
|
|
|
|
|
n += ts.tv_sec * 1000;
|
|
|
|
|
|
|
|
|
|
return n;
|
|
|
|
|
}
|
|
|
|
|
void MwTimeSleep(int ms) {
|
|
|
|
|
struct timespec ts;
|
|
|
|
|
|
|
|
|
|
ts.tv_sec = ms / 1000;
|
|
|
|
|
ts.tv_nsec = (ms % 1000) * 1000 * 1000;
|
2025-11-05 04:29:01 +00:00
|
|
|
|
2026-01-09 14:43:44 -07:00
|
|
|
nanosleep(&ts, NULL);
|
|
|
|
|
}
|
|
|
|
|
#elif defined(__unix__)
|
|
|
|
|
long MwTimeGetTick(void) {
|
|
|
|
|
struct timespec ts;
|
|
|
|
|
long n = 0;
|
2026-01-09 14:45:12 -07:00
|
|
|
|
2025-11-05 04:29:01 +00:00
|
|
|
clock_gettime(CLOCK_MONOTONIC, &ts);
|
|
|
|
|
|
|
|
|
|
n += ts.tv_nsec / 1000 / 1000;
|
|
|
|
|
n += ts.tv_sec * 1000;
|
2026-01-09 14:45:12 -07:00
|
|
|
|
2025-11-05 04:29:01 +00:00
|
|
|
return n;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MwTimeSleep(int ms) {
|
2026-01-13 01:00:28 +09:00
|
|
|
#if 0
|
2025-11-05 04:29:01 +00:00
|
|
|
struct timespec ts;
|
|
|
|
|
|
|
|
|
|
ts.tv_sec = ms / 1000;
|
2026-01-13 01:00:28 +09:00
|
|
|
ts.tv_nsec = (ms % 1000) * 1000000;
|
2025-11-05 04:29:01 +00:00
|
|
|
|
|
|
|
|
nanosleep(&ts, NULL);
|
2026-01-13 01:00:28 +09:00
|
|
|
#endif
|
|
|
|
|
usleep(ms * 100);
|
2025-11-05 04:29:01 +00:00
|
|
|
}
|
|
|
|
|
#endif
|