Files
Odin/core/time/time_wasi.odin

42 lines
806 B
Odin

#+private
#+build wasi
package time
import "base:intrinsics"
import "core:sys/wasm/wasi"
_IS_SUPPORTED :: true
_now :: proc "contextless" () -> Time {
ts, err := wasi.clock_time_get(wasi.CLOCK_REALTIME, 0)
assert_contextless(err == nil)
return Time{_nsec=i64(ts)}
}
_sleep :: proc "contextless" (d: Duration) {
ev: wasi.event_t
n, err := wasi.poll_oneoff(
&{
tag = .CLOCK,
clock = {
id = wasi.CLOCK_MONOTONIC,
timeout = wasi.timestamp_t(d),
},
},
&ev,
1,
)
assert_contextless(err == nil && n == 1 && ev.error == nil && ev.type == .CLOCK)
}
_tick_now :: proc "contextless" () -> Tick {
ts, err := wasi.clock_time_get(wasi.CLOCK_MONOTONIC, 0)
assert_contextless(err == nil)
return Tick{_nsec=i64(ts)}
}
_yield :: proc "contextless" () {
wasi.sched_yield()
}