1 //! 64-bit specific definitions for linux-like values 2 3 use crate::prelude::*; 4 5 pub type ino_t = u64; 6 pub type off_t = i64; 7 pub type blkcnt_t = i64; 8 pub type shmatt_t = u64; 9 pub type msgqnum_t = u64; 10 pub type msglen_t = u64; 11 pub type fsblkcnt_t = u64; 12 pub type fsfilcnt_t = u64; 13 pub type rlim_t = u64; 14 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 15 pub type __syscall_ulong_t = c_ulonglong; 16 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 17 pub type __syscall_ulong_t = c_ulong; 18 19 cfg_if! { 20 if #[cfg(all(target_arch = "aarch64", target_pointer_width = "32"))] { 21 pub type clock_t = i32; 22 pub type time_t = i32; 23 pub type __fsword_t = i32; 24 } else { 25 pub type __fsword_t = i64; 26 pub type clock_t = i64; 27 pub type time_t = i64; 28 } 29 } 30 31 s! { 32 pub struct sigset_t { 33 #[cfg(target_pointer_width = "32")] 34 __val: [u32; 32], 35 #[cfg(target_pointer_width = "64")] 36 __val: [u64; 16], 37 } 38 39 pub struct sysinfo { 40 pub uptime: i64, 41 pub loads: [u64; 3], 42 pub totalram: u64, 43 pub freeram: u64, 44 pub sharedram: u64, 45 pub bufferram: u64, 46 pub totalswap: u64, 47 pub freeswap: u64, 48 pub procs: c_ushort, 49 pub pad: c_ushort, 50 pub totalhigh: u64, 51 pub freehigh: u64, 52 pub mem_unit: c_uint, 53 pub _f: [c_char; 0], 54 } 55 56 pub struct msqid_ds { 57 pub msg_perm: crate::ipc_perm, 58 pub msg_stime: crate::time_t, 59 pub msg_rtime: crate::time_t, 60 pub msg_ctime: crate::time_t, 61 pub __msg_cbytes: u64, 62 pub msg_qnum: crate::msgqnum_t, 63 pub msg_qbytes: crate::msglen_t, 64 pub msg_lspid: crate::pid_t, 65 pub msg_lrpid: crate::pid_t, 66 __glibc_reserved4: u64, 67 __glibc_reserved5: u64, 68 } 69 70 pub struct semid_ds { 71 pub sem_perm: ipc_perm, 72 pub sem_otime: crate::time_t, 73 #[cfg(not(any( 74 target_arch = "aarch64", 75 target_arch = "loongarch64", 76 target_arch = "mips64", 77 target_arch = "mips64r6", 78 target_arch = "powerpc64", 79 target_arch = "riscv64", 80 target_arch = "sparc64", 81 target_arch = "s390x", 82 )))] 83 __reserved: crate::__syscall_ulong_t, 84 pub sem_ctime: crate::time_t, 85 #[cfg(not(any( 86 target_arch = "aarch64", 87 target_arch = "loongarch64", 88 target_arch = "mips64", 89 target_arch = "mips64r6", 90 target_arch = "powerpc64", 91 target_arch = "riscv64", 92 target_arch = "sparc64", 93 target_arch = "s390x", 94 )))] 95 __reserved2: crate::__syscall_ulong_t, 96 pub sem_nsems: crate::__syscall_ulong_t, 97 __glibc_reserved3: crate::__syscall_ulong_t, 98 __glibc_reserved4: crate::__syscall_ulong_t, 99 } 100 101 pub struct timex { 102 pub modes: c_uint, 103 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 104 pub offset: i64, 105 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 106 pub offset: c_long, 107 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 108 pub freq: i64, 109 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 110 pub freq: c_long, 111 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 112 pub maxerror: i64, 113 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 114 pub maxerror: c_long, 115 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 116 pub esterror: i64, 117 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 118 pub esterror: c_long, 119 pub status: c_int, 120 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 121 pub constant: i64, 122 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 123 pub constant: c_long, 124 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 125 pub precision: i64, 126 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 127 pub precision: c_long, 128 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 129 pub tolerance: i64, 130 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 131 pub tolerance: c_long, 132 pub time: crate::timeval, 133 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 134 pub tick: i64, 135 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 136 pub tick: c_long, 137 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 138 pub ppsfreq: i64, 139 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 140 pub ppsfreq: c_long, 141 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 142 pub jitter: i64, 143 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 144 pub jitter: c_long, 145 pub shift: c_int, 146 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 147 pub stabil: i64, 148 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 149 pub stabil: c_long, 150 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 151 pub jitcnt: i64, 152 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 153 pub jitcnt: c_long, 154 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 155 pub calcnt: i64, 156 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 157 pub calcnt: c_long, 158 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 159 pub errcnt: i64, 160 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 161 pub errcnt: c_long, 162 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] 163 pub stbcnt: i64, 164 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] 165 pub stbcnt: c_long, 166 pub tai: c_int, 167 pub __unused1: i32, 168 pub __unused2: i32, 169 pub __unused3: i32, 170 pub __unused4: i32, 171 pub __unused5: i32, 172 pub __unused6: i32, 173 pub __unused7: i32, 174 pub __unused8: i32, 175 pub __unused9: i32, 176 pub __unused10: i32, 177 pub __unused11: i32, 178 } 179 } 180 181 pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: usize = 8; 182 183 pub const O_LARGEFILE: c_int = 0; 184 185 cfg_if! { 186 if #[cfg(target_arch = "aarch64")] { 187 mod aarch64; 188 pub use self::aarch64::*; 189 } else if #[cfg(any(target_arch = "powerpc64"))] { 190 mod powerpc64; 191 pub use self::powerpc64::*; 192 } else if #[cfg(any(target_arch = "sparc64"))] { 193 mod sparc64; 194 pub use self::sparc64::*; 195 } else if #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))] { 196 mod mips64; 197 pub use self::mips64::*; 198 } else if #[cfg(any(target_arch = "s390x"))] { 199 mod s390x; 200 pub use self::s390x::*; 201 } else if #[cfg(target_arch = "x86_64")] { 202 mod x86_64; 203 pub use self::x86_64::*; 204 } else if #[cfg(any(target_arch = "riscv64"))] { 205 mod riscv64; 206 pub use self::riscv64::*; 207 } else if #[cfg(any(target_arch = "loongarch64"))] { 208 mod loongarch64; 209 pub use self::loongarch64::*; 210 } else { 211 // Unknown target_arch 212 } 213 } 214