libc/unix/bsd/apple/b64/
mod.rs

1//! 64-bit specific Apple (ios/darwin) definitions
2
3use crate::prelude::*;
4
5s! {
6    pub struct timeval32 {
7        pub tv_sec: i32,
8        pub tv_usec: i32,
9    }
10
11    pub struct if_data {
12        pub ifi_type: c_uchar,
13        pub ifi_typelen: c_uchar,
14        pub ifi_physical: c_uchar,
15        pub ifi_addrlen: c_uchar,
16        pub ifi_hdrlen: c_uchar,
17        pub ifi_recvquota: c_uchar,
18        pub ifi_xmitquota: c_uchar,
19        pub ifi_unused1: c_uchar,
20        pub ifi_mtu: u32,
21        pub ifi_metric: u32,
22        pub ifi_baudrate: u32,
23        pub ifi_ipackets: u32,
24        pub ifi_ierrors: u32,
25        pub ifi_opackets: u32,
26        pub ifi_oerrors: u32,
27        pub ifi_collisions: u32,
28        pub ifi_ibytes: u32,
29        pub ifi_obytes: u32,
30        pub ifi_imcasts: u32,
31        pub ifi_omcasts: u32,
32        pub ifi_iqdrops: u32,
33        pub ifi_noproto: u32,
34        pub ifi_recvtiming: u32,
35        pub ifi_xmittiming: u32,
36        pub ifi_lastchange: timeval32,
37        pub ifi_unused2: u32,
38        pub ifi_hwassist: u32,
39        pub ifi_reserved1: u32,
40        pub ifi_reserved2: u32,
41    }
42
43    pub struct bpf_hdr {
44        pub bh_tstamp: crate::timeval32,
45        pub bh_caplen: u32,
46        pub bh_datalen: u32,
47        pub bh_hdrlen: c_ushort,
48    }
49}
50
51s_no_extra_traits! {
52    pub struct pthread_attr_t {
53        __sig: c_long,
54        __opaque: [c_char; 56],
55    }
56
57    pub struct pthread_once_t {
58        __sig: c_long,
59        __opaque: [c_char; __PTHREAD_ONCE_SIZE__],
60    }
61}
62
63cfg_if! {
64    if #[cfg(feature = "extra_traits")] {
65        impl PartialEq for pthread_attr_t {
66            fn eq(&self, other: &pthread_attr_t) -> bool {
67                self.__sig == other.__sig
68                    && self
69                        .__opaque
70                        .iter()
71                        .zip(other.__opaque.iter())
72                        .all(|(a, b)| a == b)
73            }
74        }
75        impl Eq for pthread_attr_t {}
76        impl hash::Hash for pthread_attr_t {
77            fn hash<H: hash::Hasher>(&self, state: &mut H) {
78                self.__sig.hash(state);
79                self.__opaque.hash(state);
80            }
81        }
82        impl PartialEq for pthread_once_t {
83            fn eq(&self, other: &pthread_once_t) -> bool {
84                self.__sig == other.__sig
85                    && self
86                        .__opaque
87                        .iter()
88                        .zip(other.__opaque.iter())
89                        .all(|(a, b)| a == b)
90            }
91        }
92        impl Eq for pthread_once_t {}
93        impl hash::Hash for pthread_once_t {
94            fn hash<H: hash::Hasher>(&self, state: &mut H) {
95                self.__sig.hash(state);
96                self.__opaque.hash(state);
97            }
98        }
99    }
100}
101
102#[doc(hidden)]
103#[deprecated(since = "0.2.55")]
104pub const NET_RT_MAXID: c_int = 11;
105
106pub const __PTHREAD_MUTEX_SIZE__: usize = 56;
107pub const __PTHREAD_COND_SIZE__: usize = 40;
108pub const __PTHREAD_CONDATTR_SIZE__: usize = 8;
109pub const __PTHREAD_ONCE_SIZE__: usize = 8;
110pub const __PTHREAD_RWLOCK_SIZE__: usize = 192;
111pub const __PTHREAD_RWLOCKATTR_SIZE__: usize = 16;
112
113pub const TIOCTIMESTAMP: c_ulong = 0x40107459;
114pub const TIOCDCDTIMESTAMP: c_ulong = 0x40107458;
115
116pub const BIOCSETF: c_ulong = 0x80104267;
117pub const BIOCSRTIMEOUT: c_ulong = 0x8010426d;
118pub const BIOCGRTIMEOUT: c_ulong = 0x4010426e;
119pub const BIOCSETFNR: c_ulong = 0x8010427e;
120
121const _PTHREAD_ONCE_SIG_INIT: c_long = 0x30B1BCBA;
122pub const PTHREAD_ONCE_INIT: crate::pthread_once_t = crate::pthread_once_t {
123    __sig: _PTHREAD_ONCE_SIG_INIT,
124    __opaque: [0; 8],
125};
126
127extern "C" {
128    pub fn exchangedata(path1: *const c_char, path2: *const c_char, options: c_uint) -> c_int;
129}
130
131cfg_if! {
132    if #[cfg(target_arch = "x86_64")] {
133        mod x86_64;
134        pub use self::x86_64::*;
135    } else if #[cfg(target_arch = "aarch64")] {
136        mod aarch64;
137        pub use self::aarch64::*;
138    } else {
139        // Unknown target_arch
140    }
141}