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