1 use crate::prelude::*; 2 3 pub type wchar_t = i32; 4 pub type useconds_t = u32; 5 pub type dev_t = u32; 6 pub type socklen_t = u32; 7 pub type pthread_t = c_ulong; 8 pub type mode_t = u32; 9 pub type shmatt_t = c_ulong; 10 pub type mqd_t = c_int; 11 pub type msgqnum_t = c_ulong; 12 pub type msglen_t = c_ulong; 13 pub type nfds_t = c_ulong; 14 pub type nl_item = c_int; 15 pub type idtype_t = c_uint; 16 pub type loff_t = i64; 17 pub type pthread_key_t = c_uint; 18 19 pub type clock_t = c_long; 20 pub type time_t = i64; 21 pub type suseconds_t = c_long; 22 pub type ino_t = u64; 23 pub type off_t = i64; 24 pub type blkcnt_t = i32; 25 26 pub type blksize_t = c_long; 27 pub type fsblkcnt_t = u32; 28 pub type fsfilcnt_t = u32; 29 pub type rlim_t = u64; 30 pub type c_long = i32; 31 pub type c_ulong = u32; 32 pub type nlink_t = u32; 33 34 pub type ino64_t = crate::ino_t; 35 pub type off64_t = off_t; 36 pub type blkcnt64_t = crate::blkcnt_t; 37 pub type rlim64_t = crate::rlim_t; 38 39 pub type rlimit64 = crate::rlimit; 40 pub type flock64 = crate::flock; 41 pub type stat64 = crate::stat; 42 pub type statfs64 = crate::statfs; 43 pub type statvfs64 = crate::statvfs; 44 pub type dirent64 = crate::dirent; 45 46 #[cfg_attr(feature = "extra_traits", derive(Debug))] 47 pub enum fpos64_t {} // FIXME(emscripten): fill this out with a struct 48 impl Copy for fpos64_t {} 49 impl Clone for fpos64_t { 50 fn clone(&self) -> fpos64_t { 51 *self 52 } 53 } 54 55 s! { 56 pub struct glob_t { 57 pub gl_pathc: size_t, 58 pub gl_pathv: *mut *mut c_char, 59 pub gl_offs: size_t, 60 pub gl_flags: c_int, 61 62 __unused1: *mut c_void, 63 __unused2: *mut c_void, 64 __unused3: *mut c_void, 65 __unused4: *mut c_void, 66 __unused5: *mut c_void, 67 } 68 69 pub struct passwd { 70 pub pw_name: *mut c_char, 71 pub pw_passwd: *mut c_char, 72 pub pw_uid: crate::uid_t, 73 pub pw_gid: crate::gid_t, 74 pub pw_gecos: *mut c_char, 75 pub pw_dir: *mut c_char, 76 pub pw_shell: *mut c_char, 77 } 78 79 pub struct spwd { 80 pub sp_namp: *mut c_char, 81 pub sp_pwdp: *mut c_char, 82 pub sp_lstchg: c_long, 83 pub sp_min: c_long, 84 pub sp_max: c_long, 85 pub sp_warn: c_long, 86 pub sp_inact: c_long, 87 pub sp_expire: c_long, 88 pub sp_flag: c_ulong, 89 } 90 91 pub struct statvfs { 92 pub f_bsize: c_ulong, 93 pub f_frsize: c_ulong, 94 pub f_blocks: crate::fsblkcnt_t, 95 pub f_bfree: crate::fsblkcnt_t, 96 pub f_bavail: crate::fsblkcnt_t, 97 pub f_files: crate::fsfilcnt_t, 98 pub f_ffree: crate::fsfilcnt_t, 99 pub f_favail: crate::fsfilcnt_t, 100 pub f_fsid: c_ulong, 101 __f_unused: c_int, 102 pub f_flag: c_ulong, 103 pub f_namemax: c_ulong, 104 __f_spare: [c_int; 6], 105 } 106 107 pub struct signalfd_siginfo { 108 pub ssi_signo: u32, 109 pub ssi_errno: i32, 110 pub ssi_code: i32, 111 pub ssi_pid: u32, 112 pub ssi_uid: u32, 113 pub ssi_fd: i32, 114 pub ssi_tid: u32, 115 pub ssi_band: u32, 116 pub ssi_overrun: u32, 117 pub ssi_trapno: u32, 118 pub ssi_status: i32, 119 pub ssi_int: i32, 120 pub ssi_ptr: u64, 121 pub ssi_utime: u64, 122 pub ssi_stime: u64, 123 pub ssi_addr: u64, 124 pub ssi_addr_lsb: u16, 125 _pad2: u16, 126 pub ssi_syscall: i32, 127 pub ssi_call_addr: u64, 128 pub ssi_arch: u32, 129 _pad: [u8; 28], 130 } 131 132 pub struct fsid_t { 133 __val: [c_int; 2], 134 } 135 136 pub struct cpu_set_t { 137 bits: [u32; 32], 138 } 139 140 pub struct if_nameindex { 141 pub if_index: c_uint, 142 pub if_name: *mut c_char, 143 } 144 145 // System V IPC 146 pub struct msginfo { 147 pub msgpool: c_int, 148 pub msgmap: c_int, 149 pub msgmax: c_int, 150 pub msgmnb: c_int, 151 pub msgmni: c_int, 152 pub msgssz: c_int, 153 pub msgtql: c_int, 154 pub msgseg: c_ushort, 155 } 156 157 pub struct sembuf { 158 pub sem_num: c_ushort, 159 pub sem_op: c_short, 160 pub sem_flg: c_short, 161 } 162 163 pub struct sigaction { 164 pub sa_sigaction: crate::sighandler_t, 165 pub sa_mask: crate::sigset_t, 166 pub sa_flags: c_int, 167 pub sa_restorer: Option<extern "C" fn()>, 168 } 169 170 pub struct ipc_perm { 171 pub __ipc_perm_key: crate::key_t, 172 pub uid: crate::uid_t, 173 pub gid: crate::gid_t, 174 pub cuid: crate::uid_t, 175 pub cgid: crate::gid_t, 176 pub mode: crate::mode_t, 177 pub __seq: c_int, 178 __unused1: c_long, 179 __unused2: c_long, 180 } 181 182 pub struct termios { 183 pub c_iflag: crate::tcflag_t, 184 pub c_oflag: crate::tcflag_t, 185 pub c_cflag: crate::tcflag_t, 186 pub c_lflag: crate::tcflag_t, 187 pub c_line: crate::cc_t, 188 pub c_cc: [crate::cc_t; crate::NCCS], 189 pub __c_ispeed: crate::speed_t, 190 pub __c_ospeed: crate::speed_t, 191 } 192 193 pub struct flock { 194 pub l_type: c_short, 195 pub l_whence: c_short, 196 pub l_start: off_t, 197 pub l_len: off_t, 198 pub l_pid: crate::pid_t, 199 } 200 201 pub struct pthread_attr_t { 202 __size: [u32; 11], 203 } 204 205 pub struct sigset_t { 206 __val: [c_ulong; 32], 207 } 208 209 pub struct msghdr { 210 pub msg_name: *mut c_void, 211 pub msg_namelen: crate::socklen_t, 212 pub msg_iov: *mut crate::iovec, 213 pub msg_iovlen: c_int, 214 pub msg_control: *mut c_void, 215 pub msg_controllen: crate::socklen_t, 216 pub msg_flags: c_int, 217 } 218 219 pub struct cmsghdr { 220 pub cmsg_len: crate::socklen_t, 221 pub cmsg_level: c_int, 222 pub cmsg_type: c_int, 223 } 224 225 pub struct sem_t { 226 __val: [c_int; 4], 227 } 228 pub struct stat { 229 pub st_dev: crate::dev_t, 230 #[cfg(emscripten_old_stat_abi)] 231 __st_dev_padding: c_int, 232 #[cfg(emscripten_old_stat_abi)] 233 __st_ino_truncated: c_long, 234 pub st_mode: crate::mode_t, 235 pub st_nlink: crate::nlink_t, 236 pub st_uid: crate::uid_t, 237 pub st_gid: crate::gid_t, 238 pub st_rdev: crate::dev_t, 239 #[cfg(emscripten_old_stat_abi)] 240 __st_rdev_padding: c_int, 241 pub st_size: off_t, 242 pub st_blksize: crate::blksize_t, 243 pub st_blocks: crate::blkcnt_t, 244 pub st_atime: crate::time_t, 245 pub st_atime_nsec: c_long, 246 pub st_mtime: crate::time_t, 247 pub st_mtime_nsec: c_long, 248 pub st_ctime: crate::time_t, 249 pub st_ctime_nsec: c_long, 250 pub st_ino: crate::ino_t, 251 } 252 253 pub struct stack_t { 254 pub ss_sp: *mut c_void, 255 pub ss_flags: c_int, 256 pub ss_size: size_t, 257 } 258 259 pub struct shmid_ds { 260 pub shm_perm: crate::ipc_perm, 261 pub shm_segsz: size_t, 262 pub shm_atime: crate::time_t, 263 pub shm_dtime: crate::time_t, 264 pub shm_ctime: crate::time_t, 265 pub shm_cpid: crate::pid_t, 266 pub shm_lpid: crate::pid_t, 267 pub shm_nattch: c_ulong, 268 __pad1: c_ulong, 269 __pad2: c_ulong, 270 } 271 272 pub struct msqid_ds { 273 pub msg_perm: crate::ipc_perm, 274 pub msg_stime: crate::time_t, 275 pub msg_rtime: crate::time_t, 276 pub msg_ctime: crate::time_t, 277 __msg_cbytes: c_ulong, 278 pub msg_qnum: crate::msgqnum_t, 279 pub msg_qbytes: crate::msglen_t, 280 pub msg_lspid: crate::pid_t, 281 pub msg_lrpid: crate::pid_t, 282 __pad1: c_ulong, 283 __pad2: c_ulong, 284 } 285 286 pub struct statfs { 287 pub f_type: c_ulong, 288 pub f_bsize: c_ulong, 289 pub f_blocks: crate::fsblkcnt_t, 290 pub f_bfree: crate::fsblkcnt_t, 291 pub f_bavail: crate::fsblkcnt_t, 292 pub f_files: crate::fsfilcnt_t, 293 pub f_ffree: crate::fsfilcnt_t, 294 pub f_fsid: crate::fsid_t, 295 pub f_namelen: c_ulong, 296 pub f_frsize: c_ulong, 297 pub f_flags: c_ulong, 298 pub f_spare: [c_ulong; 4], 299 } 300 301 pub struct siginfo_t { 302 pub si_signo: c_int, 303 pub si_errno: c_int, 304 pub si_code: c_int, 305 pub _pad: [c_int; 29], 306 _align: [usize; 0], 307 } 308 309 pub struct arpd_request { 310 pub req: c_ushort, 311 pub ip: u32, 312 pub dev: c_ulong, 313 pub stamp: c_ulong, 314 pub updated: c_ulong, 315 pub ha: [c_uchar; crate::MAX_ADDR_LEN], 316 } 317 318 #[allow(missing_debug_implementations)] 319 #[repr(align(4))] 320 pub struct pthread_mutex_t { 321 size: [u8; crate::__SIZEOF_PTHREAD_MUTEX_T], 322 } 323 324 #[repr(align(4))] 325 pub struct pthread_rwlock_t { 326 size: [u8; crate::__SIZEOF_PTHREAD_RWLOCK_T], 327 } 328 329 #[repr(align(4))] 330 pub struct pthread_mutexattr_t { 331 size: [u8; crate::__SIZEOF_PTHREAD_MUTEXATTR_T], 332 } 333 334 #[repr(align(4))] 335 pub struct pthread_rwlockattr_t { 336 size: [u8; crate::__SIZEOF_PTHREAD_RWLOCKATTR_T], 337 } 338 339 #[repr(align(4))] 340 pub struct pthread_condattr_t { 341 size: [u8; crate::__SIZEOF_PTHREAD_CONDATTR_T], 342 } 343 } 344 345 s_no_extra_traits! { 346 pub struct dirent { 347 pub d_ino: crate::ino_t, 348 pub d_off: off_t, 349 pub d_reclen: c_ushort, 350 pub d_type: c_uchar, 351 pub d_name: [c_char; 256], 352 } 353 354 pub struct sysinfo { 355 pub uptime: c_ulong, 356 pub loads: [c_ulong; 3], 357 pub totalram: c_ulong, 358 pub freeram: c_ulong, 359 pub sharedram: c_ulong, 360 pub bufferram: c_ulong, 361 pub totalswap: c_ulong, 362 pub freeswap: c_ulong, 363 pub procs: c_ushort, 364 pub pad: c_ushort, 365 pub totalhigh: c_ulong, 366 pub freehigh: c_ulong, 367 pub mem_unit: c_uint, 368 pub __reserved: [c_char; 256], 369 } 370 371 pub struct mq_attr { 372 pub mq_flags: c_long, 373 pub mq_maxmsg: c_long, 374 pub mq_msgsize: c_long, 375 pub mq_curmsgs: c_long, 376 pad: [c_long; 4], 377 } 378 379 #[cfg_attr(target_pointer_width = "32", repr(align(4)))] 380 #[cfg_attr(target_pointer_width = "64", repr(align(8)))] 381 pub struct pthread_cond_t { 382 size: [u8; crate::__SIZEOF_PTHREAD_COND_T], 383 } 384 385 #[allow(missing_debug_implementations)] 386 #[repr(align(8))] 387 pub struct max_align_t { 388 priv_: [f64; 3], 389 } 390 } 391 392 cfg_if! { 393 if #[cfg(feature = "extra_traits")] { 394 impl PartialEq for dirent { 395 fn eq(&self, other: &dirent) -> bool { 396 self.d_ino == other.d_ino 397 && self.d_off == other.d_off 398 && self.d_reclen == other.d_reclen 399 && self.d_type == other.d_type 400 && self 401 .d_name 402 .iter() 403 .zip(other.d_name.iter()) 404 .all(|(a, b)| a == b) 405 } 406 } 407 impl Eq for dirent {} 408 impl fmt::Debug for dirent { 409 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 410 f.debug_struct("dirent") 411 .field("d_ino", &self.d_ino) 412 .field("d_off", &self.d_off) 413 .field("d_reclen", &self.d_reclen) 414 .field("d_type", &self.d_type) 415 // FIXME(debug): .field("d_name", &self.d_name) 416 .finish() 417 } 418 } 419 impl hash::Hash for dirent { 420 fn hash<H: hash::Hasher>(&self, state: &mut H) { 421 self.d_ino.hash(state); 422 self.d_off.hash(state); 423 self.d_reclen.hash(state); 424 self.d_type.hash(state); 425 self.d_name.hash(state); 426 } 427 } 428 429 impl PartialEq for sysinfo { 430 fn eq(&self, other: &sysinfo) -> bool { 431 self.uptime == other.uptime 432 && self.loads == other.loads 433 && self.totalram == other.totalram 434 && self.freeram == other.freeram 435 && self.sharedram == other.sharedram 436 && self.bufferram == other.bufferram 437 && self.totalswap == other.totalswap 438 && self.freeswap == other.freeswap 439 && self.procs == other.procs 440 && self.pad == other.pad 441 && self.totalhigh == other.totalhigh 442 && self.freehigh == other.freehigh 443 && self.mem_unit == other.mem_unit 444 && self 445 .__reserved 446 .iter() 447 .zip(other.__reserved.iter()) 448 .all(|(a, b)| a == b) 449 } 450 } 451 impl Eq for sysinfo {} 452 impl fmt::Debug for sysinfo { 453 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 454 f.debug_struct("sysinfo") 455 .field("uptime", &self.uptime) 456 .field("loads", &self.loads) 457 .field("totalram", &self.totalram) 458 .field("freeram", &self.freeram) 459 .field("sharedram", &self.sharedram) 460 .field("bufferram", &self.bufferram) 461 .field("totalswap", &self.totalswap) 462 .field("freeswap", &self.freeswap) 463 .field("procs", &self.procs) 464 .field("pad", &self.pad) 465 .field("totalhigh", &self.totalhigh) 466 .field("freehigh", &self.freehigh) 467 .field("mem_unit", &self.mem_unit) 468 // FIXME(debug): .field("__reserved", &self.__reserved) 469 .finish() 470 } 471 } 472 impl hash::Hash for sysinfo { 473 fn hash<H: hash::Hasher>(&self, state: &mut H) { 474 self.uptime.hash(state); 475 self.loads.hash(state); 476 self.totalram.hash(state); 477 self.freeram.hash(state); 478 self.sharedram.hash(state); 479 self.bufferram.hash(state); 480 self.totalswap.hash(state); 481 self.freeswap.hash(state); 482 self.procs.hash(state); 483 self.pad.hash(state); 484 self.totalhigh.hash(state); 485 self.freehigh.hash(state); 486 self.mem_unit.hash(state); 487 self.__reserved.hash(state); 488 } 489 } 490 491 impl PartialEq for mq_attr { 492 fn eq(&self, other: &mq_attr) -> bool { 493 self.mq_flags == other.mq_flags 494 && self.mq_maxmsg == other.mq_maxmsg 495 && self.mq_msgsize == other.mq_msgsize 496 && self.mq_curmsgs == other.mq_curmsgs 497 } 498 } 499 impl Eq for mq_attr {} 500 impl fmt::Debug for mq_attr { 501 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 502 f.debug_struct("mq_attr") 503 .field("mq_flags", &self.mq_flags) 504 .field("mq_maxmsg", &self.mq_maxmsg) 505 .field("mq_msgsize", &self.mq_msgsize) 506 .field("mq_curmsgs", &self.mq_curmsgs) 507 .finish() 508 } 509 } 510 impl hash::Hash for mq_attr { 511 fn hash<H: hash::Hasher>(&self, state: &mut H) { 512 self.mq_flags.hash(state); 513 self.mq_maxmsg.hash(state); 514 self.mq_msgsize.hash(state); 515 self.mq_curmsgs.hash(state); 516 } 517 } 518 519 impl PartialEq for pthread_cond_t { 520 fn eq(&self, other: &pthread_cond_t) -> bool { 521 self.size.iter().zip(other.size.iter()).all(|(a, b)| a == b) 522 } 523 } 524 impl Eq for pthread_cond_t {} 525 impl fmt::Debug for pthread_cond_t { 526 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 527 f.debug_struct("pthread_cond_t") 528 // FIXME(debug): .field("size", &self.size) 529 .finish() 530 } 531 } 532 impl hash::Hash for pthread_cond_t { 533 fn hash<H: hash::Hasher>(&self, state: &mut H) { 534 self.size.hash(state); 535 } 536 } 537 } 538 } 539 540 pub const MADV_SOFT_OFFLINE: c_int = 101; 541 pub const MS_NOUSER: c_ulong = 0x80000000; 542 pub const MS_RMT_MASK: c_ulong = 0x02800051; 543 544 pub const ABDAY_1: crate::nl_item = 0x20000; 545 pub const ABDAY_2: crate::nl_item = 0x20001; 546 pub const ABDAY_3: crate::nl_item = 0x20002; 547 pub const ABDAY_4: crate::nl_item = 0x20003; 548 pub const ABDAY_5: crate::nl_item = 0x20004; 549 pub const ABDAY_6: crate::nl_item = 0x20005; 550 pub const ABDAY_7: crate::nl_item = 0x20006; 551 552 pub const DAY_1: crate::nl_item = 0x20007; 553 pub const DAY_2: crate::nl_item = 0x20008; 554 pub const DAY_3: crate::nl_item = 0x20009; 555 pub const DAY_4: crate::nl_item = 0x2000A; 556 pub const DAY_5: crate::nl_item = 0x2000B; 557 pub const DAY_6: crate::nl_item = 0x2000C; 558 pub const DAY_7: crate::nl_item = 0x2000D; 559 560 pub const ABMON_1: crate::nl_item = 0x2000E; 561 pub const ABMON_2: crate::nl_item = 0x2000F; 562 pub const ABMON_3: crate::nl_item = 0x20010; 563 pub const ABMON_4: crate::nl_item = 0x20011; 564 pub const ABMON_5: crate::nl_item = 0x20012; 565 pub const ABMON_6: crate::nl_item = 0x20013; 566 pub const ABMON_7: crate::nl_item = 0x20014; 567 pub const ABMON_8: crate::nl_item = 0x20015; 568 pub const ABMON_9: crate::nl_item = 0x20016; 569 pub const ABMON_10: crate::nl_item = 0x20017; 570 pub const ABMON_11: crate::nl_item = 0x20018; 571 pub const ABMON_12: crate::nl_item = 0x20019; 572 573 pub const MON_1: crate::nl_item = 0x2001A; 574 pub const MON_2: crate::nl_item = 0x2001B; 575 pub const MON_3: crate::nl_item = 0x2001C; 576 pub const MON_4: crate::nl_item = 0x2001D; 577 pub const MON_5: crate::nl_item = 0x2001E; 578 pub const MON_6: crate::nl_item = 0x2001F; 579 pub const MON_7: crate::nl_item = 0x20020; 580 pub const MON_8: crate::nl_item = 0x20021; 581 pub const MON_9: crate::nl_item = 0x20022; 582 pub const MON_10: crate::nl_item = 0x20023; 583 pub const MON_11: crate::nl_item = 0x20024; 584 pub const MON_12: crate::nl_item = 0x20025; 585 586 pub const AM_STR: crate::nl_item = 0x20026; 587 pub const PM_STR: crate::nl_item = 0x20027; 588 589 pub const D_T_FMT: crate::nl_item = 0x20028; 590 pub const D_FMT: crate::nl_item = 0x20029; 591 pub const T_FMT: crate::nl_item = 0x2002A; 592 pub const T_FMT_AMPM: crate::nl_item = 0x2002B; 593 594 pub const ERA: crate::nl_item = 0x2002C; 595 pub const ERA_D_FMT: crate::nl_item = 0x2002E; 596 pub const ALT_DIGITS: crate::nl_item = 0x2002F; 597 pub const ERA_D_T_FMT: crate::nl_item = 0x20030; 598 pub const ERA_T_FMT: crate::nl_item = 0x20031; 599 600 pub const CODESET: crate::nl_item = 14; 601 602 pub const CRNCYSTR: crate::nl_item = 0x4000F; 603 604 pub const RUSAGE_THREAD: c_int = 1; 605 pub const RUSAGE_CHILDREN: c_int = -1; 606 607 pub const RADIXCHAR: crate::nl_item = 0x10000; 608 pub const THOUSEP: crate::nl_item = 0x10001; 609 610 pub const YESEXPR: crate::nl_item = 0x50000; 611 pub const NOEXPR: crate::nl_item = 0x50001; 612 pub const YESSTR: crate::nl_item = 0x50002; 613 pub const NOSTR: crate::nl_item = 0x50003; 614 615 pub const FILENAME_MAX: c_uint = 4096; 616 pub const L_tmpnam: c_uint = 20; 617 pub const _PC_LINK_MAX: c_int = 0; 618 pub const _PC_MAX_CANON: c_int = 1; 619 pub const _PC_MAX_INPUT: c_int = 2; 620 pub const _PC_NAME_MAX: c_int = 3; 621 pub const _PC_PATH_MAX: c_int = 4; 622 pub const _PC_PIPE_BUF: c_int = 5; 623 pub const _PC_CHOWN_RESTRICTED: c_int = 6; 624 pub const _PC_NO_TRUNC: c_int = 7; 625 pub const _PC_VDISABLE: c_int = 8; 626 pub const _PC_SYNC_IO: c_int = 9; 627 pub const _PC_ASYNC_IO: c_int = 10; 628 pub const _PC_PRIO_IO: c_int = 11; 629 pub const _PC_SOCK_MAXBUF: c_int = 12; 630 pub const _PC_FILESIZEBITS: c_int = 13; 631 pub const _PC_REC_INCR_XFER_SIZE: c_int = 14; 632 pub const _PC_REC_MAX_XFER_SIZE: c_int = 15; 633 pub const _PC_REC_MIN_XFER_SIZE: c_int = 16; 634 pub const _PC_REC_XFER_ALIGN: c_int = 17; 635 pub const _PC_ALLOC_SIZE_MIN: c_int = 18; 636 pub const _PC_SYMLINK_MAX: c_int = 19; 637 pub const _PC_2_SYMLINKS: c_int = 20; 638 639 pub const _SC_ARG_MAX: c_int = 0; 640 pub const _SC_CHILD_MAX: c_int = 1; 641 pub const _SC_CLK_TCK: c_int = 2; 642 pub const _SC_NGROUPS_MAX: c_int = 3; 643 pub const _SC_OPEN_MAX: c_int = 4; 644 pub const _SC_STREAM_MAX: c_int = 5; 645 pub const _SC_TZNAME_MAX: c_int = 6; 646 pub const _SC_JOB_CONTROL: c_int = 7; 647 pub const _SC_SAVED_IDS: c_int = 8; 648 pub const _SC_REALTIME_SIGNALS: c_int = 9; 649 pub const _SC_PRIORITY_SCHEDULING: c_int = 10; 650 pub const _SC_TIMERS: c_int = 11; 651 pub const _SC_ASYNCHRONOUS_IO: c_int = 12; 652 pub const _SC_PRIORITIZED_IO: c_int = 13; 653 pub const _SC_SYNCHRONIZED_IO: c_int = 14; 654 pub const _SC_FSYNC: c_int = 15; 655 pub const _SC_MAPPED_FILES: c_int = 16; 656 pub const _SC_MEMLOCK: c_int = 17; 657 pub const _SC_MEMLOCK_RANGE: c_int = 18; 658 pub const _SC_MEMORY_PROTECTION: c_int = 19; 659 pub const _SC_MESSAGE_PASSING: c_int = 20; 660 pub const _SC_SEMAPHORES: c_int = 21; 661 pub const _SC_SHARED_MEMORY_OBJECTS: c_int = 22; 662 pub const _SC_AIO_LISTIO_MAX: c_int = 23; 663 pub const _SC_AIO_MAX: c_int = 24; 664 pub const _SC_AIO_PRIO_DELTA_MAX: c_int = 25; 665 pub const _SC_DELAYTIMER_MAX: c_int = 26; 666 pub const _SC_MQ_OPEN_MAX: c_int = 27; 667 pub const _SC_MQ_PRIO_MAX: c_int = 28; 668 pub const _SC_VERSION: c_int = 29; 669 pub const _SC_PAGESIZE: c_int = 30; 670 pub const _SC_PAGE_SIZE: c_int = _SC_PAGESIZE; 671 pub const _SC_RTSIG_MAX: c_int = 31; 672 pub const _SC_SEM_NSEMS_MAX: c_int = 32; 673 pub const _SC_SEM_VALUE_MAX: c_int = 33; 674 pub const _SC_SIGQUEUE_MAX: c_int = 34; 675 pub const _SC_TIMER_MAX: c_int = 35; 676 pub const _SC_BC_BASE_MAX: c_int = 36; 677 pub const _SC_BC_DIM_MAX: c_int = 37; 678 pub const _SC_BC_SCALE_MAX: c_int = 38; 679 pub const _SC_BC_STRING_MAX: c_int = 39; 680 pub const _SC_COLL_WEIGHTS_MAX: c_int = 40; 681 pub const _SC_EXPR_NEST_MAX: c_int = 42; 682 pub const _SC_LINE_MAX: c_int = 43; 683 pub const _SC_RE_DUP_MAX: c_int = 44; 684 pub const _SC_2_VERSION: c_int = 46; 685 pub const _SC_2_C_BIND: c_int = 47; 686 pub const _SC_2_C_DEV: c_int = 48; 687 pub const _SC_2_FORT_DEV: c_int = 49; 688 pub const _SC_2_FORT_RUN: c_int = 50; 689 pub const _SC_2_SW_DEV: c_int = 51; 690 pub const _SC_2_LOCALEDEF: c_int = 52; 691 pub const _SC_UIO_MAXIOV: c_int = 60; 692 pub const _SC_IOV_MAX: c_int = 60; 693 pub const _SC_THREADS: c_int = 67; 694 pub const _SC_THREAD_SAFE_FUNCTIONS: c_int = 68; 695 pub const _SC_GETGR_R_SIZE_MAX: c_int = 69; 696 pub const _SC_GETPW_R_SIZE_MAX: c_int = 70; 697 pub const _SC_LOGIN_NAME_MAX: c_int = 71; 698 pub const _SC_TTY_NAME_MAX: c_int = 72; 699 pub const _SC_THREAD_DESTRUCTOR_ITERATIONS: c_int = 73; 700 pub const _SC_THREAD_KEYS_MAX: c_int = 74; 701 pub const _SC_THREAD_STACK_MIN: c_int = 75; 702 pub const _SC_THREAD_THREADS_MAX: c_int = 76; 703 pub const _SC_THREAD_ATTR_STACKADDR: c_int = 77; 704 pub const _SC_THREAD_ATTR_STACKSIZE: c_int = 78; 705 pub const _SC_THREAD_PRIORITY_SCHEDULING: c_int = 79; 706 pub const _SC_THREAD_PRIO_INHERIT: c_int = 80; 707 pub const _SC_THREAD_PRIO_PROTECT: c_int = 81; 708 pub const _SC_THREAD_PROCESS_SHARED: c_int = 82; 709 pub const _SC_NPROCESSORS_CONF: c_int = 83; 710 pub const _SC_NPROCESSORS_ONLN: c_int = 84; 711 pub const _SC_PHYS_PAGES: c_int = 85; 712 pub const _SC_AVPHYS_PAGES: c_int = 86; 713 pub const _SC_ATEXIT_MAX: c_int = 87; 714 pub const _SC_PASS_MAX: c_int = 88; 715 pub const _SC_XOPEN_VERSION: c_int = 89; 716 pub const _SC_XOPEN_XCU_VERSION: c_int = 90; 717 pub const _SC_XOPEN_UNIX: c_int = 91; 718 pub const _SC_XOPEN_CRYPT: c_int = 92; 719 pub const _SC_XOPEN_ENH_I18N: c_int = 93; 720 pub const _SC_XOPEN_SHM: c_int = 94; 721 pub const _SC_2_CHAR_TERM: c_int = 95; 722 pub const _SC_2_UPE: c_int = 97; 723 pub const _SC_XOPEN_XPG2: c_int = 98; 724 pub const _SC_XOPEN_XPG3: c_int = 99; 725 pub const _SC_XOPEN_XPG4: c_int = 100; 726 pub const _SC_NZERO: c_int = 109; 727 pub const _SC_XBS5_ILP32_OFF32: c_int = 125; 728 pub const _SC_XBS5_ILP32_OFFBIG: c_int = 126; 729 pub const _SC_XBS5_LP64_OFF64: c_int = 127; 730 pub const _SC_XBS5_LPBIG_OFFBIG: c_int = 128; 731 pub const _SC_XOPEN_LEGACY: c_int = 129; 732 pub const _SC_XOPEN_REALTIME: c_int = 130; 733 pub const _SC_XOPEN_REALTIME_THREADS: c_int = 131; 734 pub const _SC_ADVISORY_INFO: c_int = 132; 735 pub const _SC_BARRIERS: c_int = 133; 736 pub const _SC_CLOCK_SELECTION: c_int = 137; 737 pub const _SC_CPUTIME: c_int = 138; 738 pub const _SC_THREAD_CPUTIME: c_int = 139; 739 pub const _SC_MONOTONIC_CLOCK: c_int = 149; 740 pub const _SC_READER_WRITER_LOCKS: c_int = 153; 741 pub const _SC_SPIN_LOCKS: c_int = 154; 742 pub const _SC_REGEXP: c_int = 155; 743 pub const _SC_SHELL: c_int = 157; 744 pub const _SC_SPAWN: c_int = 159; 745 pub const _SC_SPORADIC_SERVER: c_int = 160; 746 pub const _SC_THREAD_SPORADIC_SERVER: c_int = 161; 747 pub const _SC_TIMEOUTS: c_int = 164; 748 pub const _SC_TYPED_MEMORY_OBJECTS: c_int = 165; 749 pub const _SC_2_PBS: c_int = 168; 750 pub const _SC_2_PBS_ACCOUNTING: c_int = 169; 751 pub const _SC_2_PBS_LOCATE: c_int = 170; 752 pub const _SC_2_PBS_MESSAGE: c_int = 171; 753 pub const _SC_2_PBS_TRACK: c_int = 172; 754 pub const _SC_SYMLOOP_MAX: c_int = 173; 755 pub const _SC_STREAMS: c_int = 174; 756 pub const _SC_2_PBS_CHECKPOINT: c_int = 175; 757 pub const _SC_V6_ILP32_OFF32: c_int = 176; 758 pub const _SC_V6_ILP32_OFFBIG: c_int = 177; 759 pub const _SC_V6_LP64_OFF64: c_int = 178; 760 pub const _SC_V6_LPBIG_OFFBIG: c_int = 179; 761 pub const _SC_HOST_NAME_MAX: c_int = 180; 762 pub const _SC_TRACE: c_int = 181; 763 pub const _SC_TRACE_EVENT_FILTER: c_int = 182; 764 pub const _SC_TRACE_INHERIT: c_int = 183; 765 pub const _SC_TRACE_LOG: c_int = 184; 766 pub const _SC_IPV6: c_int = 235; 767 pub const _SC_RAW_SOCKETS: c_int = 236; 768 pub const _SC_V7_ILP32_OFF32: c_int = 237; 769 pub const _SC_V7_ILP32_OFFBIG: c_int = 238; 770 pub const _SC_V7_LP64_OFF64: c_int = 239; 771 pub const _SC_V7_LPBIG_OFFBIG: c_int = 240; 772 pub const _SC_SS_REPL_MAX: c_int = 241; 773 pub const _SC_TRACE_EVENT_NAME_MAX: c_int = 242; 774 pub const _SC_TRACE_NAME_MAX: c_int = 243; 775 pub const _SC_TRACE_SYS_MAX: c_int = 244; 776 pub const _SC_TRACE_USER_EVENT_MAX: c_int = 245; 777 pub const _SC_XOPEN_STREAMS: c_int = 246; 778 pub const _SC_THREAD_ROBUST_PRIO_INHERIT: c_int = 247; 779 pub const _SC_THREAD_ROBUST_PRIO_PROTECT: c_int = 248; 780 781 pub const RLIM_SAVED_MAX: crate::rlim_t = RLIM_INFINITY; 782 pub const RLIM_SAVED_CUR: crate::rlim_t = RLIM_INFINITY; 783 784 pub const GLOB_ERR: c_int = 1 << 0; 785 pub const GLOB_MARK: c_int = 1 << 1; 786 pub const GLOB_NOSORT: c_int = 1 << 2; 787 pub const GLOB_DOOFFS: c_int = 1 << 3; 788 pub const GLOB_NOCHECK: c_int = 1 << 4; 789 pub const GLOB_APPEND: c_int = 1 << 5; 790 pub const GLOB_NOESCAPE: c_int = 1 << 6; 791 792 pub const GLOB_NOSPACE: c_int = 1; 793 pub const GLOB_ABORTED: c_int = 2; 794 pub const GLOB_NOMATCH: c_int = 3; 795 796 pub const POSIX_MADV_NORMAL: c_int = 0; 797 pub const POSIX_MADV_RANDOM: c_int = 1; 798 pub const POSIX_MADV_SEQUENTIAL: c_int = 2; 799 pub const POSIX_MADV_WILLNEED: c_int = 3; 800 801 pub const AT_EACCESS: c_int = 0x200; 802 803 pub const S_IEXEC: mode_t = 0o0100; 804 pub const S_IWRITE: mode_t = 0o0200; 805 pub const S_IREAD: mode_t = 0o0400; 806 807 pub const F_LOCK: c_int = 1; 808 pub const F_TEST: c_int = 3; 809 pub const F_TLOCK: c_int = 2; 810 pub const F_ULOCK: c_int = 0; 811 812 pub const ST_RDONLY: c_ulong = 1; 813 pub const ST_NOSUID: c_ulong = 2; 814 pub const ST_NODEV: c_ulong = 4; 815 pub const ST_NOEXEC: c_ulong = 8; 816 pub const ST_SYNCHRONOUS: c_ulong = 16; 817 pub const ST_MANDLOCK: c_ulong = 64; 818 pub const ST_WRITE: c_ulong = 128; 819 pub const ST_APPEND: c_ulong = 256; 820 pub const ST_IMMUTABLE: c_ulong = 512; 821 pub const ST_NOATIME: c_ulong = 1024; 822 pub const ST_NODIRATIME: c_ulong = 2048; 823 824 pub const RTLD_NEXT: *mut c_void = -1i64 as *mut c_void; 825 pub const RTLD_DEFAULT: *mut c_void = 0i64 as *mut c_void; 826 pub const RTLD_NODELETE: c_int = 0x1000; 827 pub const RTLD_NOW: c_int = 0x2; 828 829 pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { 830 size: [0; __SIZEOF_PTHREAD_MUTEX_T], 831 }; 832 pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t { 833 size: [0; __SIZEOF_PTHREAD_COND_T], 834 }; 835 pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { 836 size: [0; __SIZEOF_PTHREAD_RWLOCK_T], 837 }; 838 839 pub const PTHREAD_MUTEX_NORMAL: c_int = 0; 840 pub const PTHREAD_MUTEX_RECURSIVE: c_int = 1; 841 pub const PTHREAD_MUTEX_ERRORCHECK: c_int = 2; 842 pub const PTHREAD_MUTEX_DEFAULT: c_int = PTHREAD_MUTEX_NORMAL; 843 pub const PTHREAD_PROCESS_PRIVATE: c_int = 0; 844 pub const PTHREAD_PROCESS_SHARED: c_int = 1; 845 pub const __SIZEOF_PTHREAD_COND_T: usize = 48; 846 847 pub const SCHED_OTHER: c_int = 0; 848 pub const SCHED_FIFO: c_int = 1; 849 pub const SCHED_RR: c_int = 2; 850 pub const SCHED_BATCH: c_int = 3; 851 pub const SCHED_IDLE: c_int = 5; 852 853 pub const AF_IB: c_int = 27; 854 pub const AF_MPLS: c_int = 28; 855 pub const AF_NFC: c_int = 39; 856 pub const AF_VSOCK: c_int = 40; 857 pub const PF_IB: c_int = AF_IB; 858 pub const PF_MPLS: c_int = AF_MPLS; 859 pub const PF_NFC: c_int = AF_NFC; 860 pub const PF_VSOCK: c_int = AF_VSOCK; 861 862 // System V IPC 863 pub const IPC_PRIVATE: crate::key_t = 0; 864 865 pub const IPC_CREAT: c_int = 0o1000; 866 pub const IPC_EXCL: c_int = 0o2000; 867 pub const IPC_NOWAIT: c_int = 0o4000; 868 869 pub const IPC_RMID: c_int = 0; 870 pub const IPC_SET: c_int = 1; 871 pub const IPC_STAT: c_int = 2; 872 pub const IPC_INFO: c_int = 3; 873 pub const MSG_STAT: c_int = 11; 874 pub const MSG_INFO: c_int = 12; 875 876 pub const MSG_NOERROR: c_int = 0o10000; 877 pub const MSG_EXCEPT: c_int = 0o20000; 878 879 pub const SHM_R: c_int = 0o400; 880 pub const SHM_W: c_int = 0o200; 881 882 pub const SHM_RDONLY: c_int = 0o10000; 883 pub const SHM_RND: c_int = 0o20000; 884 pub const SHM_REMAP: c_int = 0o40000; 885 pub const SHM_EXEC: c_int = 0o100000; 886 887 pub const SHM_LOCK: c_int = 11; 888 pub const SHM_UNLOCK: c_int = 12; 889 890 pub const SHM_HUGETLB: c_int = 0o4000; 891 pub const SHM_NORESERVE: c_int = 0o10000; 892 893 pub const LOG_NFACILITIES: c_int = 24; 894 895 pub const SEM_FAILED: *mut crate::sem_t = 0 as *mut sem_t; 896 897 pub const AI_PASSIVE: c_int = 0x0001; 898 pub const AI_CANONNAME: c_int = 0x0002; 899 pub const AI_NUMERICHOST: c_int = 0x0004; 900 pub const AI_V4MAPPED: c_int = 0x0008; 901 pub const AI_ALL: c_int = 0x0010; 902 pub const AI_ADDRCONFIG: c_int = 0x0020; 903 904 pub const AI_NUMERICSERV: c_int = 0x0400; 905 906 pub const EAI_BADFLAGS: c_int = -1; 907 pub const EAI_NONAME: c_int = -2; 908 pub const EAI_AGAIN: c_int = -3; 909 pub const EAI_FAIL: c_int = -4; 910 pub const EAI_FAMILY: c_int = -6; 911 pub const EAI_SOCKTYPE: c_int = -7; 912 pub const EAI_SERVICE: c_int = -8; 913 pub const EAI_MEMORY: c_int = -10; 914 pub const EAI_OVERFLOW: c_int = -12; 915 916 pub const NI_NUMERICHOST: c_int = 1; 917 pub const NI_NUMERICSERV: c_int = 2; 918 pub const NI_NOFQDN: c_int = 4; 919 pub const NI_NAMEREQD: c_int = 8; 920 pub const NI_DGRAM: c_int = 16; 921 922 pub const SYNC_FILE_RANGE_WAIT_BEFORE: c_uint = 1; 923 pub const SYNC_FILE_RANGE_WRITE: c_uint = 2; 924 pub const SYNC_FILE_RANGE_WAIT_AFTER: c_uint = 4; 925 926 pub const EAI_SYSTEM: c_int = -11; 927 928 pub const MREMAP_MAYMOVE: c_int = 1; 929 pub const MREMAP_FIXED: c_int = 2; 930 931 pub const ITIMER_REAL: c_int = 0; 932 pub const ITIMER_VIRTUAL: c_int = 1; 933 pub const ITIMER_PROF: c_int = 2; 934 935 pub const _POSIX_VDISABLE: crate::cc_t = 0; 936 937 pub const FALLOC_FL_KEEP_SIZE: c_int = 0x01; 938 pub const FALLOC_FL_PUNCH_HOLE: c_int = 0x02; 939 940 pub const NCCS: usize = 32; 941 942 pub const O_TRUNC: c_int = 512; 943 pub const O_NOATIME: c_int = 0o1000000; 944 pub const O_CLOEXEC: c_int = 0x80000; 945 946 // Defined as wasi value. 947 pub const EPERM: c_int = 63; 948 pub const ENOENT: c_int = 44; 949 pub const ESRCH: c_int = 71; 950 pub const EINTR: c_int = 27; 951 pub const EIO: c_int = 29; 952 pub const ENXIO: c_int = 60; 953 pub const E2BIG: c_int = 1; 954 pub const ENOEXEC: c_int = 45; 955 pub const EBADF: c_int = 8; 956 pub const ECHILD: c_int = 12; 957 pub const EAGAIN: c_int = 6; 958 pub const ENOMEM: c_int = 48; 959 pub const EACCES: c_int = 2; 960 pub const EFAULT: c_int = 21; 961 pub const ENOTBLK: c_int = 105; 962 pub const EBUSY: c_int = 10; 963 pub const EEXIST: c_int = 20; 964 pub const EXDEV: c_int = 75; 965 pub const ENODEV: c_int = 43; 966 pub const ENOTDIR: c_int = 54; 967 pub const EISDIR: c_int = 31; 968 pub const EINVAL: c_int = 28; 969 pub const ENFILE: c_int = 41; 970 pub const EMFILE: c_int = 33; 971 pub const ENOTTY: c_int = 59; 972 pub const ETXTBSY: c_int = 74; 973 pub const EFBIG: c_int = 22; 974 pub const ENOSPC: c_int = 51; 975 pub const ESPIPE: c_int = 70; 976 pub const EROFS: c_int = 69; 977 pub const EMLINK: c_int = 34; 978 pub const EPIPE: c_int = 64; 979 pub const EDOM: c_int = 18; 980 pub const ERANGE: c_int = 68; 981 pub const EWOULDBLOCK: c_int = EAGAIN; 982 pub const ENOLINK: c_int = 47; 983 pub const EPROTO: c_int = 65; 984 pub const EDEADLK: c_int = 16; 985 pub const EDEADLOCK: c_int = EDEADLK; 986 pub const ENAMETOOLONG: c_int = 37; 987 pub const ENOLCK: c_int = 46; 988 pub const ENOSYS: c_int = 52; 989 pub const ENOTEMPTY: c_int = 55; 990 pub const ELOOP: c_int = 32; 991 pub const ENOMSG: c_int = 49; 992 pub const EIDRM: c_int = 24; 993 pub const EMULTIHOP: c_int = 36; 994 pub const EBADMSG: c_int = 9; 995 pub const EOVERFLOW: c_int = 61; 996 pub const EILSEQ: c_int = 25; 997 pub const ENOTSOCK: c_int = 57; 998 pub const EDESTADDRREQ: c_int = 17; 999 pub const EMSGSIZE: c_int = 35; 1000 pub const EPROTOTYPE: c_int = 67; 1001 pub const ENOPROTOOPT: c_int = 50; 1002 pub const EPROTONOSUPPORT: c_int = 66; 1003 pub const EAFNOSUPPORT: c_int = 5; 1004 pub const EADDRINUSE: c_int = 3; 1005 pub const EADDRNOTAVAIL: c_int = 4; 1006 pub const ENETDOWN: c_int = 38; 1007 pub const ENETUNREACH: c_int = 40; 1008 pub const ENETRESET: c_int = 39; 1009 pub const ECONNABORTED: c_int = 13; 1010 pub const ECONNRESET: c_int = 15; 1011 pub const ENOBUFS: c_int = 42; 1012 pub const EISCONN: c_int = 30; 1013 pub const ENOTCONN: c_int = 53; 1014 pub const ETIMEDOUT: c_int = 73; 1015 pub const ECONNREFUSED: c_int = 14; 1016 pub const EHOSTUNREACH: c_int = 23; 1017 pub const EALREADY: c_int = 7; 1018 pub const EINPROGRESS: c_int = 26; 1019 pub const ESTALE: c_int = 72; 1020 pub const EDQUOT: c_int = 19; 1021 pub const ECANCELED: c_int = 11; 1022 pub const EOWNERDEAD: c_int = 62; 1023 pub const ENOTRECOVERABLE: c_int = 56; 1024 1025 pub const ENOSTR: c_int = 100; 1026 pub const EBFONT: c_int = 101; 1027 pub const EBADSLT: c_int = 102; 1028 pub const EBADRQC: c_int = 103; 1029 pub const ENOANO: c_int = 104; 1030 pub const ECHRNG: c_int = 106; 1031 pub const EL3HLT: c_int = 107; 1032 pub const EL3RST: c_int = 108; 1033 pub const ELNRNG: c_int = 109; 1034 pub const EUNATCH: c_int = 110; 1035 pub const ENOCSI: c_int = 111; 1036 pub const EL2HLT: c_int = 112; 1037 pub const EBADE: c_int = 113; 1038 pub const EBADR: c_int = 114; 1039 pub const EXFULL: c_int = 115; 1040 pub const ENODATA: c_int = 116; 1041 pub const ETIME: c_int = 117; 1042 pub const ENOSR: c_int = 118; 1043 pub const ENONET: c_int = 119; 1044 pub const ENOPKG: c_int = 120; 1045 pub const EREMOTE: c_int = 121; 1046 pub const EADV: c_int = 122; 1047 pub const ESRMNT: c_int = 123; 1048 pub const ECOMM: c_int = 124; 1049 pub const EDOTDOT: c_int = 125; 1050 pub const ENOTUNIQ: c_int = 126; 1051 pub const EBADFD: c_int = 127; 1052 pub const EREMCHG: c_int = 128; 1053 pub const ELIBACC: c_int = 129; 1054 pub const ELIBBAD: c_int = 130; 1055 pub const ELIBSCN: c_int = 131; 1056 pub const ELIBMAX: c_int = 132; 1057 pub const ELIBEXEC: c_int = 133; 1058 pub const ERESTART: c_int = 134; 1059 pub const ESTRPIPE: c_int = 135; 1060 pub const EUSERS: c_int = 136; 1061 pub const ESOCKTNOSUPPORT: c_int = 137; 1062 pub const EOPNOTSUPP: c_int = 138; 1063 pub const ENOTSUP: c_int = EOPNOTSUPP; 1064 pub const EPFNOSUPPORT: c_int = 139; 1065 pub const ESHUTDOWN: c_int = 140; 1066 pub const ETOOMANYREFS: c_int = 141; 1067 pub const EHOSTDOWN: c_int = 142; 1068 pub const EUCLEAN: c_int = 143; 1069 pub const ENOTNAM: c_int = 144; 1070 pub const ENAVAIL: c_int = 145; 1071 pub const EISNAM: c_int = 146; 1072 pub const EREMOTEIO: c_int = 147; 1073 pub const ENOMEDIUM: c_int = 148; 1074 pub const EMEDIUMTYPE: c_int = 149; 1075 pub const ENOKEY: c_int = 150; 1076 pub const EKEYEXPIRED: c_int = 151; 1077 pub const EKEYREVOKED: c_int = 152; 1078 pub const EKEYREJECTED: c_int = 153; 1079 pub const ERFKILL: c_int = 154; 1080 pub const EHWPOISON: c_int = 155; 1081 pub const EL2NSYNC: c_int = 156; 1082 1083 pub const SA_NODEFER: c_int = 0x40000000; 1084 pub const SA_RESETHAND: c_int = 0x80000000; 1085 pub const SA_RESTART: c_int = 0x10000000; 1086 pub const SA_NOCLDSTOP: c_int = 0x00000001; 1087 1088 pub const BUFSIZ: c_uint = 1024; 1089 pub const TMP_MAX: c_uint = 10000; 1090 pub const FOPEN_MAX: c_uint = 1000; 1091 pub const O_PATH: c_int = 0o10000000; 1092 pub const O_EXEC: c_int = 0o10000000; 1093 pub const O_SEARCH: c_int = 0o10000000; 1094 pub const O_ACCMODE: c_int = 0o10000003; 1095 pub const O_NDELAY: c_int = O_NONBLOCK; 1096 pub const NI_MAXHOST: crate::socklen_t = 255; 1097 pub const PTHREAD_STACK_MIN: size_t = 2048; 1098 pub const POSIX_FADV_DONTNEED: c_int = 4; 1099 pub const POSIX_FADV_NOREUSE: c_int = 5; 1100 1101 pub const POSIX_MADV_DONTNEED: c_int = 4; 1102 1103 pub const RLIM_INFINITY: crate::rlim_t = !0; 1104 #[deprecated(since = "0.2.64", note = "Not stable across OS versions")] 1105 pub const RLIMIT_NLIMITS: c_int = 16; 1106 #[allow(deprecated)] 1107 #[deprecated(since = "0.2.64", note = "Not stable across OS versions")] 1108 pub const RLIM_NLIMITS: c_int = RLIMIT_NLIMITS; 1109 1110 pub const MAP_ANONYMOUS: c_int = MAP_ANON; 1111 1112 #[doc(hidden)] 1113 #[deprecated(since = "0.2.55", note = "Use SIGSYS instead")] 1114 pub const SIGUNUSED: c_int = crate::SIGSYS; 1115 1116 pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4; 1117 pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4; 1118 pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: usize = 8; 1119 1120 pub const CPU_SETSIZE: c_int = 1024; 1121 1122 pub const TCSANOW: c_int = 0; 1123 pub const TCSADRAIN: c_int = 1; 1124 pub const TCSAFLUSH: c_int = 2; 1125 1126 pub const TIOCINQ: c_int = crate::FIONREAD; 1127 1128 pub const RTLD_GLOBAL: c_int = 0x100; 1129 pub const RTLD_NOLOAD: c_int = 0x4; 1130 1131 pub const CLOCK_SGI_CYCLE: crate::clockid_t = 10; 1132 1133 pub const MCL_CURRENT: c_int = 0x0001; 1134 pub const MCL_FUTURE: c_int = 0x0002; 1135 1136 pub const SIGSTKSZ: size_t = 8192; 1137 pub const MINSIGSTKSZ: size_t = 2048; 1138 pub const CBAUD: crate::tcflag_t = 0o0010017; 1139 pub const TAB1: c_int = 0x00000800; 1140 pub const TAB2: c_int = 0x00001000; 1141 pub const TAB3: c_int = 0x00001800; 1142 pub const CR1: c_int = 0x00000200; 1143 pub const CR2: c_int = 0x00000400; 1144 pub const CR3: c_int = 0x00000600; 1145 pub const FF1: c_int = 0x00008000; 1146 pub const BS1: c_int = 0x00002000; 1147 pub const VT1: c_int = 0x00004000; 1148 pub const VWERASE: usize = 14; 1149 pub const VREPRINT: usize = 12; 1150 pub const VSUSP: usize = 10; 1151 pub const VSTART: usize = 8; 1152 pub const VSTOP: usize = 9; 1153 pub const VDISCARD: usize = 13; 1154 pub const VTIME: usize = 5; 1155 pub const IXON: crate::tcflag_t = 0x00000400; 1156 pub const IXOFF: crate::tcflag_t = 0x00001000; 1157 pub const ONLCR: crate::tcflag_t = 0x4; 1158 pub const CSIZE: crate::tcflag_t = 0x00000030; 1159 pub const CS6: crate::tcflag_t = 0x00000010; 1160 pub const CS7: crate::tcflag_t = 0x00000020; 1161 pub const CS8: crate::tcflag_t = 0x00000030; 1162 pub const CSTOPB: crate::tcflag_t = 0x00000040; 1163 pub const CREAD: crate::tcflag_t = 0x00000080; 1164 pub const PARENB: crate::tcflag_t = 0x00000100; 1165 pub const PARODD: crate::tcflag_t = 0x00000200; 1166 pub const HUPCL: crate::tcflag_t = 0x00000400; 1167 pub const CLOCAL: crate::tcflag_t = 0x00000800; 1168 pub const ECHOKE: crate::tcflag_t = 0x00000800; 1169 pub const ECHOE: crate::tcflag_t = 0x00000010; 1170 pub const ECHOK: crate::tcflag_t = 0x00000020; 1171 pub const ECHONL: crate::tcflag_t = 0x00000040; 1172 pub const ECHOPRT: crate::tcflag_t = 0x00000400; 1173 pub const ECHOCTL: crate::tcflag_t = 0x00000200; 1174 pub const ISIG: crate::tcflag_t = 0x00000001; 1175 pub const ICANON: crate::tcflag_t = 0x00000002; 1176 pub const PENDIN: crate::tcflag_t = 0x00004000; 1177 pub const NOFLSH: crate::tcflag_t = 0x00000080; 1178 pub const CBAUDEX: crate::tcflag_t = 0o010000; 1179 pub const VSWTC: usize = 7; 1180 pub const OLCUC: crate::tcflag_t = 0o000002; 1181 pub const NLDLY: crate::tcflag_t = 0o000400; 1182 pub const CRDLY: crate::tcflag_t = 0o003000; 1183 pub const TABDLY: crate::tcflag_t = 0o014000; 1184 pub const BSDLY: crate::tcflag_t = 0o020000; 1185 pub const FFDLY: crate::tcflag_t = 0o100000; 1186 pub const VTDLY: crate::tcflag_t = 0o040000; 1187 pub const XTABS: crate::tcflag_t = 0o014000; 1188 1189 pub const B0: crate::speed_t = 0o000000; 1190 pub const B50: crate::speed_t = 0o000001; 1191 pub const B75: crate::speed_t = 0o000002; 1192 pub const B110: crate::speed_t = 0o000003; 1193 pub const B134: crate::speed_t = 0o000004; 1194 pub const B150: crate::speed_t = 0o000005; 1195 pub const B200: crate::speed_t = 0o000006; 1196 pub const B300: crate::speed_t = 0o000007; 1197 pub const B600: crate::speed_t = 0o000010; 1198 pub const B1200: crate::speed_t = 0o000011; 1199 pub const B1800: crate::speed_t = 0o000012; 1200 pub const B2400: crate::speed_t = 0o000013; 1201 pub const B4800: crate::speed_t = 0o000014; 1202 pub const B9600: crate::speed_t = 0o000015; 1203 pub const B19200: crate::speed_t = 0o000016; 1204 pub const B38400: crate::speed_t = 0o000017; 1205 pub const B57600: crate::speed_t = 0o010001; 1206 pub const B115200: crate::speed_t = 0o010002; 1207 pub const B230400: crate::speed_t = 0o010003; 1208 pub const B460800: crate::speed_t = 0o010004; 1209 pub const B500000: crate::speed_t = 0o010005; 1210 pub const B576000: crate::speed_t = 0o010006; 1211 pub const B921600: crate::speed_t = 0o010007; 1212 pub const B1000000: crate::speed_t = 0o010010; 1213 pub const B1152000: crate::speed_t = 0o010011; 1214 pub const B1500000: crate::speed_t = 0o010012; 1215 pub const B2000000: crate::speed_t = 0o010013; 1216 pub const B2500000: crate::speed_t = 0o010014; 1217 pub const B3000000: crate::speed_t = 0o010015; 1218 pub const B3500000: crate::speed_t = 0o010016; 1219 pub const B4000000: crate::speed_t = 0o010017; 1220 1221 pub const SO_BINDTODEVICE: c_int = 25; 1222 pub const SO_TIMESTAMP: c_int = 63; 1223 pub const SO_MARK: c_int = 36; 1224 pub const SO_RXQ_OVFL: c_int = 40; 1225 pub const SO_PEEK_OFF: c_int = 42; 1226 pub const SO_BUSY_POLL: c_int = 46; 1227 1228 pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 32; 1229 pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 24; 1230 1231 pub const O_DIRECT: c_int = 0x4000; 1232 pub const O_DIRECTORY: c_int = 0x10000; 1233 pub const O_NOFOLLOW: c_int = 0x20000; 1234 pub const O_ASYNC: c_int = 0x2000; 1235 1236 pub const FIOCLEX: c_int = 0x5451; 1237 pub const FIONBIO: c_int = 0x5421; 1238 1239 pub const RLIMIT_RSS: c_int = 5; 1240 pub const RLIMIT_NOFILE: c_int = 7; 1241 pub const RLIMIT_AS: c_int = 9; 1242 pub const RLIMIT_NPROC: c_int = 6; 1243 pub const RLIMIT_MEMLOCK: c_int = 8; 1244 pub const RLIMIT_CPU: c_int = 0; 1245 pub const RLIMIT_FSIZE: c_int = 1; 1246 pub const RLIMIT_DATA: c_int = 2; 1247 pub const RLIMIT_STACK: c_int = 3; 1248 pub const RLIMIT_CORE: c_int = 4; 1249 pub const RLIMIT_LOCKS: c_int = 10; 1250 pub const RLIMIT_SIGPENDING: c_int = 11; 1251 pub const RLIMIT_MSGQUEUE: c_int = 12; 1252 pub const RLIMIT_NICE: c_int = 13; 1253 pub const RLIMIT_RTPRIO: c_int = 14; 1254 1255 pub const O_APPEND: c_int = 1024; 1256 pub const O_CREAT: c_int = 64; 1257 pub const O_EXCL: c_int = 128; 1258 pub const O_NOCTTY: c_int = 256; 1259 pub const O_NONBLOCK: c_int = 2048; 1260 pub const O_SYNC: c_int = 1052672; 1261 pub const O_RSYNC: c_int = 1052672; 1262 pub const O_DSYNC: c_int = 4096; 1263 1264 pub const SOCK_NONBLOCK: c_int = 2048; 1265 1266 pub const MAP_ANON: c_int = 0x0020; 1267 pub const MAP_GROWSDOWN: c_int = 0x0100; 1268 pub const MAP_DENYWRITE: c_int = 0x0800; 1269 pub const MAP_EXECUTABLE: c_int = 0x01000; 1270 pub const MAP_LOCKED: c_int = 0x02000; 1271 pub const MAP_NORESERVE: c_int = 0x04000; 1272 pub const MAP_POPULATE: c_int = 0x08000; 1273 pub const MAP_NONBLOCK: c_int = 0x010000; 1274 pub const MAP_STACK: c_int = 0x020000; 1275 1276 pub const SOCK_STREAM: c_int = 1; 1277 pub const SOCK_DGRAM: c_int = 2; 1278 pub const SOCK_SEQPACKET: c_int = 5; 1279 1280 pub const IPPROTO_MAX: c_int = 263; 1281 1282 pub const SOL_SOCKET: c_int = 1; 1283 1284 pub const SO_REUSEADDR: c_int = 2; 1285 pub const SO_TYPE: c_int = 3; 1286 pub const SO_ERROR: c_int = 4; 1287 pub const SO_DONTROUTE: c_int = 5; 1288 pub const SO_BROADCAST: c_int = 6; 1289 pub const SO_SNDBUF: c_int = 7; 1290 pub const SO_RCVBUF: c_int = 8; 1291 pub const SO_KEEPALIVE: c_int = 9; 1292 pub const SO_OOBINLINE: c_int = 10; 1293 pub const SO_LINGER: c_int = 13; 1294 pub const SO_REUSEPORT: c_int = 15; 1295 pub const SO_RCVLOWAT: c_int = 18; 1296 pub const SO_SNDLOWAT: c_int = 19; 1297 pub const SO_RCVTIMEO: c_int = 66; 1298 pub const SO_SNDTIMEO: c_int = 67; 1299 pub const SO_ACCEPTCONN: c_int = 30; 1300 1301 pub const IPV6_RTHDR_LOOSE: c_int = 0; 1302 pub const IPV6_RTHDR_STRICT: c_int = 1; 1303 1304 pub const SA_ONSTACK: c_int = 0x08000000; 1305 pub const SA_SIGINFO: c_int = 0x00000004; 1306 pub const SA_NOCLDWAIT: c_int = 0x00000002; 1307 1308 pub const SIGCHLD: c_int = 17; 1309 pub const SIGBUS: c_int = 7; 1310 pub const SIGTTIN: c_int = 21; 1311 pub const SIGTTOU: c_int = 22; 1312 pub const SIGXCPU: c_int = 24; 1313 pub const SIGXFSZ: c_int = 25; 1314 pub const SIGVTALRM: c_int = 26; 1315 pub const SIGPROF: c_int = 27; 1316 pub const SIGWINCH: c_int = 28; 1317 pub const SIGUSR1: c_int = 10; 1318 pub const SIGUSR2: c_int = 12; 1319 pub const SIGCONT: c_int = 18; 1320 pub const SIGSTOP: c_int = 19; 1321 pub const SIGTSTP: c_int = 20; 1322 pub const SIGURG: c_int = 23; 1323 pub const SIGIO: c_int = 29; 1324 pub const SIGSYS: c_int = 31; 1325 pub const SIGSTKFLT: c_int = 16; 1326 pub const SIGPOLL: c_int = 29; 1327 pub const SIGPWR: c_int = 30; 1328 pub const SIG_SETMASK: c_int = 2; 1329 pub const SIG_BLOCK: c_int = 0x000000; 1330 pub const SIG_UNBLOCK: c_int = 0x01; 1331 1332 pub const EXTPROC: crate::tcflag_t = 0x00010000; 1333 1334 pub const MAP_HUGETLB: c_int = 0x040000; 1335 1336 pub const F_GETLK: c_int = 12; 1337 pub const F_GETOWN: c_int = 9; 1338 pub const F_SETLK: c_int = 13; 1339 pub const F_SETLKW: c_int = 14; 1340 pub const F_SETOWN: c_int = 8; 1341 pub const F_OFD_GETLK: c_int = 36; 1342 pub const F_OFD_SETLK: c_int = 37; 1343 pub const F_OFD_SETLKW: c_int = 38; 1344 1345 pub const VEOF: usize = 4; 1346 pub const VEOL: usize = 11; 1347 pub const VEOL2: usize = 16; 1348 pub const VMIN: usize = 6; 1349 pub const IEXTEN: crate::tcflag_t = 0x00008000; 1350 pub const TOSTOP: crate::tcflag_t = 0x00000100; 1351 pub const FLUSHO: crate::tcflag_t = 0x00001000; 1352 1353 pub const TCGETS: c_int = 0x5401; 1354 pub const TCSETS: c_int = 0x5402; 1355 pub const TCSETSW: c_int = 0x5403; 1356 pub const TCSETSF: c_int = 0x5404; 1357 pub const TCGETA: c_int = 0x5405; 1358 pub const TCSETA: c_int = 0x5406; 1359 pub const TCSETAW: c_int = 0x5407; 1360 pub const TCSETAF: c_int = 0x5408; 1361 pub const TCSBRK: c_int = 0x5409; 1362 pub const TCXONC: c_int = 0x540A; 1363 pub const TCFLSH: c_int = 0x540B; 1364 pub const TIOCGSOFTCAR: c_int = 0x5419; 1365 pub const TIOCSSOFTCAR: c_int = 0x541A; 1366 pub const TIOCLINUX: c_int = 0x541C; 1367 pub const TIOCGSERIAL: c_int = 0x541E; 1368 pub const TIOCEXCL: c_int = 0x540C; 1369 pub const TIOCNXCL: c_int = 0x540D; 1370 pub const TIOCSCTTY: c_int = 0x540E; 1371 pub const TIOCGPGRP: c_int = 0x540F; 1372 pub const TIOCSPGRP: c_int = 0x5410; 1373 pub const TIOCOUTQ: c_int = 0x5411; 1374 pub const TIOCSTI: c_int = 0x5412; 1375 pub const TIOCGWINSZ: c_int = 0x5413; 1376 pub const TIOCSWINSZ: c_int = 0x5414; 1377 pub const TIOCMGET: c_int = 0x5415; 1378 pub const TIOCMBIS: c_int = 0x5416; 1379 pub const TIOCMBIC: c_int = 0x5417; 1380 pub const TIOCMSET: c_int = 0x5418; 1381 pub const FIONREAD: c_int = 0x541B; 1382 pub const TIOCCONS: c_int = 0x541D; 1383 1384 pub const SYS_gettid: c_long = 224; // Valid for arm (32-bit) and x86 (32-bit) 1385 1386 pub const POLLWRNORM: c_short = 0x100; 1387 pub const POLLWRBAND: c_short = 0x200; 1388 1389 pub const TIOCM_LE: c_int = 0x001; 1390 pub const TIOCM_DTR: c_int = 0x002; 1391 pub const TIOCM_RTS: c_int = 0x004; 1392 pub const TIOCM_ST: c_int = 0x008; 1393 pub const TIOCM_SR: c_int = 0x010; 1394 pub const TIOCM_CTS: c_int = 0x020; 1395 pub const TIOCM_CAR: c_int = 0x040; 1396 pub const TIOCM_RNG: c_int = 0x080; 1397 pub const TIOCM_DSR: c_int = 0x100; 1398 pub const TIOCM_CD: c_int = TIOCM_CAR; 1399 pub const TIOCM_RI: c_int = TIOCM_RNG; 1400 pub const O_TMPFILE: c_int = 0x410000; 1401 1402 pub const MAX_ADDR_LEN: usize = 7; 1403 pub const ARPD_UPDATE: c_ushort = 0x01; 1404 pub const ARPD_LOOKUP: c_ushort = 0x02; 1405 pub const ARPD_FLUSH: c_ushort = 0x03; 1406 pub const ATF_MAGIC: c_int = 0x80; 1407 1408 pub const PRIO_PROCESS: c_int = 0; 1409 pub const PRIO_PGRP: c_int = 1; 1410 pub const PRIO_USER: c_int = 2; 1411 1412 pub const SOMAXCONN: c_int = 128; 1413 1414 f! { 1415 pub fn CMSG_NXTHDR(mhdr: *const msghdr, cmsg: *const cmsghdr) -> *mut cmsghdr { 1416 if ((*cmsg).cmsg_len as usize) < mem::size_of::<cmsghdr>() { 1417 return 0 as *mut cmsghdr; 1418 }; 1419 let next = (cmsg as usize + super::CMSG_ALIGN((*cmsg).cmsg_len as usize)) as *mut cmsghdr; 1420 let max = (*mhdr).msg_control as usize + (*mhdr).msg_controllen as usize; 1421 if (next.offset(1)) as usize > max { 1422 0 as *mut cmsghdr 1423 } else { 1424 next as *mut cmsghdr 1425 } 1426 } 1427 1428 pub fn CPU_ZERO(cpuset: &mut cpu_set_t) -> () { 1429 for slot in cpuset.bits.iter_mut() { 1430 *slot = 0; 1431 } 1432 } 1433 1434 pub fn CPU_SET(cpu: usize, cpuset: &mut cpu_set_t) -> () { 1435 let size_in_bits = 8 * mem::size_of_val(&cpuset.bits[0]); // 32, 64 etc 1436 let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits); 1437 cpuset.bits[idx] |= 1 << offset; 1438 () 1439 } 1440 1441 pub fn CPU_CLR(cpu: usize, cpuset: &mut cpu_set_t) -> () { 1442 let size_in_bits = 8 * mem::size_of_val(&cpuset.bits[0]); // 32, 64 etc 1443 let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits); 1444 cpuset.bits[idx] &= !(1 << offset); 1445 () 1446 } 1447 1448 pub fn CPU_ISSET(cpu: usize, cpuset: &cpu_set_t) -> bool { 1449 let size_in_bits = 8 * mem::size_of_val(&cpuset.bits[0]); 1450 let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits); 1451 0 != (cpuset.bits[idx] & (1 << offset)) 1452 } 1453 1454 pub fn CPU_EQUAL(set1: &cpu_set_t, set2: &cpu_set_t) -> bool { 1455 set1.bits == set2.bits 1456 } 1457 1458 pub fn major(dev: crate::dev_t) -> c_uint { 1459 // see 1460 // https://github.com/emscripten-core/emscripten/blob/ 1461 // main/system/lib/libc/musl/include/sys/sysmacros.h 1462 let mut major = 0; 1463 major |= (dev & 0x00000fff) >> 8; 1464 major |= (dev & 0xfffff000) >> 31 >> 1; 1465 major as c_uint 1466 } 1467 1468 pub fn minor(dev: crate::dev_t) -> c_uint { 1469 // see 1470 // https://github.com/emscripten-core/emscripten/blob/ 1471 // main/system/lib/libc/musl/include/sys/sysmacros.h 1472 let mut minor = 0; 1473 minor |= (dev & 0x000000ff) >> 0; 1474 minor |= (dev & 0xffffff00) >> 12; 1475 minor as c_uint 1476 } 1477 } 1478 1479 safe_f! { 1480 pub {const} fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t { 1481 let major = major as crate::dev_t; 1482 let minor = minor as crate::dev_t; 1483 let mut dev = 0; 1484 dev |= (major & 0x00000fff) << 8; 1485 dev |= (major & 0xfffff000) << 31 << 1; 1486 dev |= (minor & 0x000000ff) << 0; 1487 dev |= (minor & 0xffffff00) << 12; 1488 dev 1489 } 1490 } 1491 1492 extern "C" { 1493 pub fn getrlimit(resource: c_int, rlim: *mut crate::rlimit) -> c_int; 1494 pub fn setrlimit(resource: c_int, rlim: *const crate::rlimit) -> c_int; 1495 pub fn strerror_r(errnum: c_int, buf: *mut c_char, buflen: size_t) -> c_int; 1496 1497 pub fn abs(i: c_int) -> c_int; 1498 pub fn labs(i: c_long) -> c_long; 1499 pub fn rand() -> c_int; 1500 pub fn srand(seed: c_uint); 1501 1502 pub fn gettimeofday(tp: *mut crate::timeval, tz: *mut c_void) -> c_int; 1503 1504 pub fn setpwent(); 1505 pub fn endpwent(); 1506 pub fn getpwent() -> *mut passwd; 1507 1508 pub fn shm_open(name: *const c_char, oflag: c_int, mode: mode_t) -> c_int; 1509 1510 pub fn mprotect(addr: *mut c_void, len: size_t, prot: c_int) -> c_int; 1511 pub fn __errno_location() -> *mut c_int; 1512 1513 pub fn posix_fallocate(fd: c_int, offset: off_t, len: off_t) -> c_int; 1514 pub fn pwritev(fd: c_int, iov: *const crate::iovec, iovcnt: c_int, offset: off_t) -> ssize_t; 1515 pub fn preadv(fd: c_int, iov: *const crate::iovec, iovcnt: c_int, offset: off_t) -> ssize_t; 1516 pub fn dup3(oldfd: c_int, newfd: c_int, flags: c_int) -> c_int; 1517 pub fn nl_langinfo_l(item: crate::nl_item, locale: crate::locale_t) -> *mut c_char; 1518 pub fn accept4( 1519 fd: c_int, 1520 addr: *mut crate::sockaddr, 1521 len: *mut crate::socklen_t, 1522 flg: c_int, 1523 ) -> c_int; 1524 pub fn getnameinfo( 1525 sa: *const crate::sockaddr, 1526 salen: crate::socklen_t, 1527 host: *mut c_char, 1528 hostlen: crate::socklen_t, 1529 serv: *mut c_char, 1530 servlen: crate::socklen_t, 1531 flags: c_int, 1532 ) -> c_int; 1533 pub fn getloadavg(loadavg: *mut c_double, nelem: c_int) -> c_int; 1534 1535 pub fn mkfifoat(dirfd: c_int, pathname: *const c_char, mode: crate::mode_t) -> c_int; 1536 pub fn if_nameindex() -> *mut if_nameindex; 1537 pub fn if_freenameindex(ptr: *mut if_nameindex); 1538 1539 pub fn mremap( 1540 addr: *mut c_void, 1541 len: size_t, 1542 new_len: size_t, 1543 flags: c_int, 1544 ... 1545 ) -> *mut c_void; 1546 1547 pub fn glob( 1548 pattern: *const c_char, 1549 flags: c_int, 1550 errfunc: Option<extern "C" fn(epath: *const c_char, errno: c_int) -> c_int>, 1551 pglob: *mut crate::glob_t, 1552 ) -> c_int; 1553 pub fn globfree(pglob: *mut crate::glob_t); 1554 1555 pub fn posix_madvise(addr: *mut c_void, len: size_t, advice: c_int) -> c_int; 1556 1557 pub fn shm_unlink(name: *const c_char) -> c_int; 1558 1559 pub fn seekdir(dirp: *mut crate::DIR, loc: c_long); 1560 1561 pub fn telldir(dirp: *mut crate::DIR) -> c_long; 1562 pub fn madvise(addr: *mut c_void, len: size_t, advice: c_int) -> c_int; 1563 1564 pub fn msync(addr: *mut c_void, len: size_t, flags: c_int) -> c_int; 1565 1566 pub fn recvfrom( 1567 socket: c_int, 1568 buf: *mut c_void, 1569 len: size_t, 1570 flags: c_int, 1571 addr: *mut crate::sockaddr, 1572 addrlen: *mut crate::socklen_t, 1573 ) -> ssize_t; 1574 pub fn mkstemps(template: *mut c_char, suffixlen: c_int) -> c_int; 1575 pub fn nl_langinfo(item: crate::nl_item) -> *mut c_char; 1576 1577 pub fn sendmmsg( 1578 sockfd: c_int, 1579 msgvec: *mut crate::mmsghdr, 1580 vlen: c_uint, 1581 flags: c_uint, 1582 ) -> c_int; 1583 pub fn recvmmsg( 1584 sockfd: c_int, 1585 msgvec: *mut crate::mmsghdr, 1586 vlen: c_uint, 1587 flags: c_uint, 1588 timeout: *mut crate::timespec, 1589 ) -> c_int; 1590 pub fn sync(); 1591 pub fn ioctl(fd: c_int, request: c_int, ...) -> c_int; 1592 pub fn getpriority(which: c_int, who: crate::id_t) -> c_int; 1593 pub fn setpriority(which: c_int, who: crate::id_t, prio: c_int) -> c_int; 1594 pub fn pthread_create( 1595 native: *mut crate::pthread_t, 1596 attr: *const crate::pthread_attr_t, 1597 f: extern "C" fn(*mut c_void) -> *mut c_void, 1598 value: *mut c_void, 1599 ) -> c_int; 1600 1601 pub fn getentropy(buf: *mut c_void, buflen: size_t) -> c_int; 1602 1603 pub fn getpwnam_r( 1604 name: *const c_char, 1605 pwd: *mut passwd, 1606 buf: *mut c_char, 1607 buflen: size_t, 1608 result: *mut *mut passwd, 1609 ) -> c_int; 1610 pub fn getpwuid_r( 1611 uid: crate::uid_t, 1612 pwd: *mut passwd, 1613 buf: *mut c_char, 1614 buflen: size_t, 1615 result: *mut *mut passwd, 1616 ) -> c_int; 1617 1618 // grp.h 1619 pub fn getgrgid(gid: crate::gid_t) -> *mut crate::group; 1620 pub fn getgrnam(name: *const c_char) -> *mut crate::group; 1621 pub fn getgrnam_r( 1622 name: *const c_char, 1623 grp: *mut crate::group, 1624 buf: *mut c_char, 1625 buflen: size_t, 1626 result: *mut *mut crate::group, 1627 ) -> c_int; 1628 pub fn getgrgid_r( 1629 gid: crate::gid_t, 1630 grp: *mut crate::group, 1631 buf: *mut c_char, 1632 buflen: size_t, 1633 result: *mut *mut crate::group, 1634 ) -> c_int; 1635 } 1636 1637 // Alias <foo> to <foo>64 to mimic glibc's LFS64 support 1638 mod lfs64; 1639 pub use self::lfs64::*; 1640