fn timespec_to_ns(ts: libc::timespec) -> u64 {
(ts.tv_sec as u64) * NS_PER_S + (ts.tv_nsec as u64)
}
/// The time from a clock that cannot be set /// and represents monotonic time since some unspecified starting point, /// that also includes any time that the system is suspended. /// /// See [`clock_gettime`]. /// /// [`clock_gettime`]: https://manpages.debian.org/buster/manpages-dev/clock_gettime.3.en.html pubfn now_including_suspend() -> u64 { letmut ts = libc::timespec {
tv_sec: 0,
tv_nsec: 0,
}; unsafe {
libc::clock_gettime(libc::CLOCK_BOOTTIME, &mut ts);
}
timespec_to_ns(ts)
}
/// The time from a clock that cannot be set /// and represents monotonic time since some unspecified starting point, /// but that does not increment while the system is asleep. /// /// See [`clock_gettime`] and [`FreeBSD clock_gettime`]. /// /// [`clock_gettime`]: https://manpages.debian.org/buster/manpages-dev/clock_gettime.3.en.html /// [`FreeBSD clock_gettime`]: https://man.freebsd.org/cgi/man.cgi?query=clock_gettime&manpath=FreeBSD+15.0-RELEASE pubfn now_awake() -> u64 { letmut ts = libc::timespec {
tv_sec: 0,
tv_nsec: 0,
}; #[cfg(any(target_os = "linux", target_os = "android"))] let clock = libc::CLOCK_MONOTONIC; #[cfg(target_os = "freebsd")] let clock = libc::CLOCK_UPTIME; unsafe {
libc::clock_gettime(clock, &mut ts);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.