mirror of
https://github.com/ziglang/zig.git
synced 2026-02-14 05:20:34 +00:00
wasi: implement timestamp
This commit is contained in:
parent
0ce05fa621
commit
d395ed2d40
@ -7,6 +7,7 @@ const testing = std.testing;
|
||||
const windows = std.os.windows;
|
||||
const linux = std.os.linux;
|
||||
const darwin = std.os.darwin;
|
||||
const wasi = std.os.wasi;
|
||||
const posix = std.os.posix;
|
||||
|
||||
pub const epoch = @import("epoch.zig");
|
||||
@ -64,9 +65,21 @@ pub const milliTimestamp = switch (builtin.os) {
|
||||
Os.windows => milliTimestampWindows,
|
||||
Os.linux, Os.freebsd, Os.netbsd => milliTimestampPosix,
|
||||
Os.macosx, Os.ios => milliTimestampDarwin,
|
||||
Os.wasi => milliTimestampWasi,
|
||||
else => @compileError("Unsupported OS"),
|
||||
};
|
||||
|
||||
fn milliTimestampWasi() u64 {
|
||||
var ns: wasi.timestamp_t = undefined;
|
||||
|
||||
// TODO: Verify that precision is ignored
|
||||
const err = wasi.clock_time_get(wasi.CLOCK_REALTIME, 1, &ns);
|
||||
debug.assert(err == wasi.ESUCCESS);
|
||||
|
||||
const ns_per_ms = 1000;
|
||||
return @divFloor(ns, ns_per_ms);
|
||||
}
|
||||
|
||||
fn milliTimestampWindows() u64 {
|
||||
//FileTime has a granularity of 100 nanoseconds
|
||||
// and uses the NTFS/Windows epoch
|
||||
|
||||
@ -10,10 +10,10 @@ pub const ciovec_t = extern struct {
|
||||
buf_len: usize,
|
||||
};
|
||||
|
||||
pub const CLOCK_REALTIME = 0;
|
||||
pub const CLOCK_MONOTONIC = 1;
|
||||
pub const CLOCK_PROCESS_CPUTIME_ID = 2;
|
||||
pub const CLOCK_THREAD_CPUTIME_ID = 3;
|
||||
pub const CLOCK_REALTIME: clockid_t = 0;
|
||||
pub const CLOCK_MONOTONIC: clockid_t = 1;
|
||||
pub const CLOCK_PROCESS_CPUTIME_ID: clockid_t = 2;
|
||||
pub const CLOCK_THREAD_CPUTIME_ID: clockid_t = 3;
|
||||
|
||||
pub const SIGABRT: signal_t = 6;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user