import "./core.zc" raw { #include #include #include static uint64_t _time_now_impl(void) { struct timeval tv; gettimeofday(&tv, NULL); return (uint64_t)(tv.tv_sec) * 1000 + (uint64_t)(tv.tv_usec) / 1000; } } struct Duration { millis: U64; } impl Duration { fn from_ms(ms: U64) -> Duration { return Duration { millis: ms }; } fn from_secs(s: U64) -> Duration { return Duration { millis: s * (U64)1000 }; } } struct Time {} extern size_t __zen_hash_seed; impl Time { fn randomize_hash() { raw { srand(time(NULL)); __zen_hash_seed ^= (size_t)rand(); } } fn now() -> U64 { return _time_now_impl(); } fn sleep(d: Duration) { usleep((U32)(d.millis * (U64)1000)); } fn sleep_ms(ms: U64) { usleep((U32)(ms * (U64)1000)); } }