summaryrefslogtreecommitdiffstats
path: root/third_party/rust/mach2/src/clock_types.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/mach2/src/clock_types.rs')
-rw-r--r--third_party/rust/mach2/src/clock_types.rs75
1 files changed, 75 insertions, 0 deletions
diff --git a/third_party/rust/mach2/src/clock_types.rs b/third_party/rust/mach2/src/clock_types.rs
new file mode 100644
index 0000000000..c0949c8315
--- /dev/null
+++ b/third_party/rust/mach2/src/clock_types.rs
@@ -0,0 +1,75 @@
+//! This module roughly corresponds to `mach/clock_types.h`.
+
+pub type alarm_type_t = ::libc::c_int;
+pub type sleep_type_t = ::libc::c_int;
+pub type clock_id_t = ::libc::c_int;
+pub type clock_flavor_t = ::libc::c_int;
+pub type clock_attr_t = *mut ::libc::c_int;
+pub type clock_res_t = ::libc::c_int;
+
+#[repr(C)]
+#[derive(Copy, Clone, Debug, Default, Hash, PartialOrd, PartialEq, Eq, Ord)]
+pub struct mach_timespec {
+ pub tv_sec: ::libc::c_uint,
+ pub tv_nsec: clock_res_t,
+}
+pub type mach_timespec_t = mach_timespec;
+
+pub const SYSTEM_CLOCK: ::libc::c_uint = 0;
+pub const CALENDAR_CLOCK: ::libc::c_uint = 1;
+pub const REALTIME_CLOCK: ::libc::c_uint = 0;
+
+pub const CLOCK_GET_TIME_RES: ::libc::c_uint = 1;
+pub const CLOCK_ALARM_CURRES: ::libc::c_uint = 3;
+pub const CLOCK_ALARM_MINRES: ::libc::c_uint = 4;
+pub const CLOCK_ALARM_MAXRES: ::libc::c_uint = 5;
+
+pub const NSEC_PER_USEC: ::libc::c_ulonglong = 1000;
+pub const USEC_PER_SEC: ::libc::c_ulonglong = 1_000_000;
+pub const NSEC_PER_SEC: ::libc::c_ulonglong = 1_000_000_000;
+pub const NSEC_PER_MSEC: ::libc::c_ulonglong = 1_000_000;
+
+#[allow(non_snake_case)]
+pub fn BAD_MACH_TIMESPEC(t: mach_timespec) -> bool {
+ t.tv_nsec < 0 || (t.tv_nsec as ::libc::c_ulonglong) >= NSEC_PER_SEC
+}
+
+#[allow(non_snake_case)]
+pub fn CMP_MACH_TIMESPEC(t1: &mach_timespec, t2: &mach_timespec) -> ::libc::c_ulonglong {
+ if t1.tv_sec > t2.tv_sec {
+ return NSEC_PER_SEC;
+ }
+ if t1.tv_sec < t2.tv_sec {
+ return !NSEC_PER_SEC;
+ }
+ (t1.tv_nsec as ::libc::c_ulonglong) - (t2.tv_nsec as ::libc::c_ulonglong)
+}
+
+#[allow(non_snake_case)]
+pub fn ADD_MACH_TIMESPEC(t1: &mut mach_timespec, t2: &mach_timespec) {
+ t1.tv_nsec += t2.tv_nsec;
+ if (t1.tv_nsec as ::libc::c_ulonglong) >= NSEC_PER_SEC {
+ t1.tv_nsec = (t1.tv_nsec as ::libc::c_ulonglong - NSEC_PER_SEC) as clock_res_t;
+ t1.tv_sec += 1;
+ }
+ t1.tv_sec += t2.tv_sec;
+}
+
+#[allow(non_snake_case)]
+pub fn SUB_MACH_TIMESPEC(t1: &mut mach_timespec, t2: &mach_timespec) {
+ t1.tv_nsec -= t2.tv_nsec;
+ if t1.tv_nsec < 0 {
+ t1.tv_nsec = (t1.tv_nsec as ::libc::c_ulonglong + NSEC_PER_SEC) as clock_res_t;
+ t1.tv_sec -= 1;
+ }
+ t1.tv_sec -= t2.tv_sec;
+}
+
+pub const ALRMTYPE: ::libc::c_uint = 0xff;
+pub const TIME_ABSOLUTE: ::libc::c_uint = 0x00;
+pub const TIME_RELATIVE: ::libc::c_uint = 0x01;
+
+#[allow(non_snake_case)]
+pub fn BAD_ALRMTYPE(t: ::libc::c_uint) -> bool {
+ t & (!TIME_RELATIVE) != 0
+}