diff options
author | Valentin Popov <valentin@popov.link> | 2024-01-08 00:21:28 +0300 |
---|---|---|
committer | Valentin Popov <valentin@popov.link> | 2024-01-08 00:21:28 +0300 |
commit | 1b6a04ca5504955c571d1c97504fb45ea0befee4 (patch) | |
tree | 7579f518b23313e8a9748a88ab6173d5e030b227 /vendor/rustix/src/clockid.rs | |
parent | 5ecd8cf2cba827454317368b68571df0d13d7842 (diff) | |
download | fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.tar.xz fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.zip |
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
Diffstat (limited to 'vendor/rustix/src/clockid.rs')
-rw-r--r-- | vendor/rustix/src/clockid.rs | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/vendor/rustix/src/clockid.rs b/vendor/rustix/src/clockid.rs new file mode 100644 index 0000000..b392d6a --- /dev/null +++ b/vendor/rustix/src/clockid.rs @@ -0,0 +1,164 @@ +use crate::backend::c; +use crate::fd::BorrowedFd; + +/// `CLOCK_*` constants for use with [`clock_gettime`]. +/// +/// These constants are always supported at runtime, so `clock_gettime` never +/// has to fail with `INVAL` due to an unsupported clock. See +/// [`DynamicClockId`] for a greater set of clocks, with the caveat that not +/// all of them are always supported. +/// +/// [`clock_gettime`]: crate::time::clock_gettime +#[cfg(not(any(apple, target_os = "wasi")))] +#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] +#[cfg_attr(not(any(target_os = "aix", target_os = "dragonfly")), repr(i32))] +#[cfg_attr(target_os = "dragonfly", repr(u64))] +#[cfg_attr(target_os = "aix", repr(i64))] +#[non_exhaustive] +pub enum ClockId { + /// `CLOCK_REALTIME` + #[doc(alias = "CLOCK_REALTIME")] + Realtime = bitcast!(c::CLOCK_REALTIME), + + /// `CLOCK_MONOTONIC` + #[doc(alias = "CLOCK_MONOTONIC")] + Monotonic = bitcast!(c::CLOCK_MONOTONIC), + + /// `CLOCK_UPTIME` + #[cfg(any(freebsdlike, target_os = "openbsd"))] + #[doc(alias = "CLOCK_UPTIME")] + Uptime = c::CLOCK_UPTIME, + + /// `CLOCK_PROCESS_CPUTIME_ID` + #[cfg(not(any( + solarish, + target_os = "netbsd", + target_os = "redox", + target_os = "vita" + )))] + #[doc(alias = "CLOCK_PROCESS_CPUTIME_ID")] + ProcessCPUTime = c::CLOCK_PROCESS_CPUTIME_ID, + + /// `CLOCK_THREAD_CPUTIME_ID` + #[cfg(not(any( + solarish, + target_os = "netbsd", + target_os = "redox", + target_os = "vita" + )))] + #[doc(alias = "CLOCK_THREAD_CPUTIME_ID")] + ThreadCPUTime = c::CLOCK_THREAD_CPUTIME_ID, + + /// `CLOCK_REALTIME_COARSE` + #[cfg(any(linux_kernel, target_os = "freebsd"))] + #[doc(alias = "CLOCK_REALTIME_COARSE")] + RealtimeCoarse = c::CLOCK_REALTIME_COARSE, + + /// `CLOCK_MONOTONIC_COARSE` + #[cfg(any(linux_kernel, target_os = "freebsd"))] + #[doc(alias = "CLOCK_MONOTONIC_COARSE")] + MonotonicCoarse = c::CLOCK_MONOTONIC_COARSE, + + /// `CLOCK_MONOTONIC_RAW` + #[cfg(linux_kernel)] + #[doc(alias = "CLOCK_MONOTONIC_RAW")] + MonotonicRaw = c::CLOCK_MONOTONIC_RAW, + + /// `CLOCK_REALTIME_ALARM` + #[cfg(linux_kernel)] + #[doc(alias = "CLOCK_REALTIME_ALARM")] + RealtimeAlarm = bitcast!(c::CLOCK_REALTIME_ALARM), + + /// `CLOCK_TAI`, available on Linux >= 3.10 + #[cfg(all(linux_kernel, feature = "linux_4_11"))] + #[doc(alias = "CLOCK_TAI")] + Tai = bitcast!(c::CLOCK_TAI), + + /// `CLOCK_BOOTTIME` + /// + /// On FreeBSD, use [`Self::Uptime`], as `CLOCK_BOOTTIME` is an alias for + /// `CLOCK_UPTIME`. + /// + /// [`Self::Uptime`]: https://docs.rs/rustix/*/x86_64-unknown-freebsd/rustix/time/enum.ClockId.html#variant.Uptime + #[cfg(any(linux_kernel, target_os = "fuchsia", target_os = "openbsd"))] + #[doc(alias = "CLOCK_BOOTTIME")] + Boottime = bitcast!(c::CLOCK_BOOTTIME), + + /// `CLOCK_BOOTTIME_ALARM` + #[cfg(any(linux_kernel, target_os = "fuchsia"))] + #[doc(alias = "CLOCK_BOOTTIME_ALARM")] + BoottimeAlarm = bitcast!(c::CLOCK_BOOTTIME_ALARM), +} + +/// `CLOCK_*` constants for use with [`clock_gettime`]. +/// +/// These constants are always supported at runtime, so `clock_gettime` never +/// has to fail with `INVAL` due to an unsupported clock. See +/// [`DynamicClockId`] for a greater set of clocks, with the caveat that not +/// all of them are always supported. +/// +/// [`clock_gettime`]: crate::time::clock_gettime +#[cfg(apple)] +#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] +#[repr(u32)] +#[non_exhaustive] +pub enum ClockId { + /// `CLOCK_REALTIME` + #[doc(alias = "CLOCK_REALTIME")] + Realtime = c::CLOCK_REALTIME, + + /// `CLOCK_MONOTONIC` + #[doc(alias = "CLOCK_MONOTONIC")] + Monotonic = c::CLOCK_MONOTONIC, + + /// `CLOCK_PROCESS_CPUTIME_ID` + #[doc(alias = "CLOCK_PROCESS_CPUTIME_ID")] + ProcessCPUTime = c::CLOCK_PROCESS_CPUTIME_ID, + + /// `CLOCK_THREAD_CPUTIME_ID` + #[doc(alias = "CLOCK_THREAD_CPUTIME_ID")] + ThreadCPUTime = c::CLOCK_THREAD_CPUTIME_ID, +} + +/// `CLOCK_*` constants for use with [`clock_gettime_dynamic`]. +/// +/// These constants may be unsupported at runtime, depending on the OS version, +/// and `clock_gettime_dynamic` may fail with `INVAL`. See [`ClockId`] for +/// clocks which are always supported at runtime. +/// +/// [`clock_gettime_dynamic`]: crate::time::clock_gettime_dynamic +#[cfg(not(target_os = "wasi"))] +#[derive(Debug, Copy, Clone)] +#[non_exhaustive] +pub enum DynamicClockId<'a> { + /// `ClockId` values that are always supported at runtime. + Known(ClockId), + + /// Linux dynamic clocks. + Dynamic(BorrowedFd<'a>), + + /// `CLOCK_REALTIME_ALARM` + #[cfg(linux_kernel)] + #[doc(alias = "CLOCK_REALTIME_ALARM")] + RealtimeAlarm, + + /// `CLOCK_TAI`, available on Linux >= 3.10 + #[cfg(linux_kernel)] + #[doc(alias = "CLOCK_TAI")] + Tai, + + /// `CLOCK_BOOTTIME` + #[cfg(any( + freebsdlike, + linux_kernel, + target_os = "fuchsia", + target_os = "openbsd" + ))] + #[doc(alias = "CLOCK_BOOTTIME")] + Boottime, + + /// `CLOCK_BOOTTIME_ALARM` + #[cfg(any(linux_kernel, target_os = "fuchsia"))] + #[doc(alias = "CLOCK_BOOTTIME_ALARM")] + BoottimeAlarm, +} |