summaryrefslogtreecommitdiff
path: root/vendor/rustix/src/clockid.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/rustix/src/clockid.rs')
-rw-r--r--vendor/rustix/src/clockid.rs164
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,
+}