From 41c06db2b4926f58e648778c509e82e5eeda4f20 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Mon, 4 Jan 2021 16:28:40 -0800 Subject: [PATCH] finish implementing clocks correctly --- crates/wasi-c2/src/ctx.rs | 11 +++++++++-- crates/wasi-c2/src/snapshots/preview_1.rs | 3 ++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/crates/wasi-c2/src/ctx.rs b/crates/wasi-c2/src/ctx.rs index 25792c4d5a..716002ce5a 100644 --- a/crates/wasi-c2/src/ctx.rs +++ b/crates/wasi-c2/src/ctx.rs @@ -126,12 +126,19 @@ impl WasiCtxBuilder { pub struct WasiCtxClocks { pub(crate) system: Box, pub(crate) monotonic: Box, + pub(crate) creation_time: cap_std::time::Instant, } impl Default for WasiCtxClocks { fn default() -> WasiCtxClocks { let system = Box::new(unsafe { cap_std::time::SystemClock::new() }); - let monotonic = Box::new(unsafe { cap_std::time::MonotonicClock::new() }); - WasiCtxClocks { system, monotonic } + let monotonic = unsafe { cap_std::time::MonotonicClock::new() }; + let creation_time = monotonic.now(); + let monotonic = Box::new(monotonic); + WasiCtxClocks { + system, + monotonic, + creation_time, + } } } diff --git a/crates/wasi-c2/src/snapshots/preview_1.rs b/crates/wasi-c2/src/snapshots/preview_1.rs index a1de4d3de7..f412af21e0 100644 --- a/crates/wasi-c2/src/snapshots/preview_1.rs +++ b/crates/wasi-c2/src/snapshots/preview_1.rs @@ -173,7 +173,8 @@ impl<'a> wasi_snapshot_preview1::WasiSnapshotPreview1 for WasiCtx { } types::Clockid::Monotonic => { let now = self.clocks.monotonic.now(precision); - todo!() + let d = now.duration_since(self.clocks.creation_time); + Ok(d.as_nanos().try_into()?) } types::Clockid::ProcessCputimeId | types::Clockid::ThreadCputimeId => Err(Error::Badf), }