// This file is autogenerated! // All changes made will be lost (eventually)! use crate::prelude::*; use crate::sighandler_t; pub type blkcnt64_t = i64; pub type rlimit64 = crate::rlimit; pub type rlim64_t = crate::rlim_t; pub type dirent64 = crate::dirent; pub type stat64 = crate::stat; pub type statfs64 = crate::statfs; pub type statvfs64 = crate::statvfs; pub type idtype_t = c_uint; pub type Ioctl = c_ulong; pub type pthread_t = *mut c_void; pub type __u8 = c_uchar; pub type __u16 = c_ushort; pub type __s16 = c_short; pub type __u32 = c_uint; pub type __s32 = c_int; pub type __u64 = c_ulonglong; pub type __s64 = c_longlong; pub const RTLD_DEFAULT: *mut c_void = 0i64 as *mut c_void; pub const RLIM_INFINITY: crate::rlim_t = !0; pub type Elf32_Half = u16; pub type Elf32_Word = u32; pub type Elf32_Off = u32; pub type Elf32_Addr = u32; pub type Elf64_Half = u16; pub type Elf64_Word = u32; pub type Elf64_Off = u64; pub type Elf64_Addr = u64; pub type Elf64_Xword = u64; s! { pub struct Elf32_Phdr { pub p_type: Elf32_Word, pub p_offset: Elf32_Off, pub p_vaddr: Elf32_Addr, pub p_paddr: Elf32_Addr, pub p_filesz: Elf32_Word, pub p_memsz: Elf32_Word, pub p_flags: Elf32_Word, pub p_align: Elf32_Word, } pub struct Elf64_Phdr { pub p_type: Elf64_Word, pub p_flags: Elf64_Word, pub p_offset: Elf64_Off, pub p_vaddr: Elf64_Addr, pub p_paddr: Elf64_Addr, pub p_filesz: Elf64_Xword, pub p_memsz: Elf64_Xword, pub p_align: Elf64_Xword, } } s! { pub struct dl_phdr_info { #[cfg(target_pointer_width = "64")] pub dlpi_addr: Elf64_Addr, #[cfg(target_pointer_width = "32")] pub dlpi_addr: Elf32_Addr, pub dlpi_name: *const c_char, #[cfg(target_pointer_width = "64")] pub dlpi_phdr: *const Elf64_Phdr, #[cfg(target_pointer_width = "32")] pub dlpi_phdr: *const Elf32_Phdr, #[cfg(target_pointer_width = "64")] pub dlpi_phnum: Elf64_Half, #[cfg(target_pointer_width = "32")] pub dlpi_phnum: Elf32_Half, pub dlpi_adds: c_ulonglong, pub dlpi_subs: c_ulonglong, pub dlpi_tls_modid: size_t, pub dlpi_tls_data: *mut c_void, } } f! { pub fn CMSG_NXTHDR(mhdr: *const msghdr, cmsg: *const cmsghdr) -> *mut cmsghdr { if ((*cmsg).cmsg_len as usize) < mem::size_of::() { return 0 as *mut cmsghdr; }; let next = (cmsg as usize + super::CMSG_ALIGN((*cmsg).cmsg_len as usize)) as *mut cmsghdr; let max = (*mhdr).msg_control as usize + (*mhdr).msg_controllen as usize; if (next.offset(1)) as usize > max || next as usize + super::CMSG_ALIGN((*next).cmsg_len as usize) > max { 0 as *mut cmsghdr } else { next as *mut cmsghdr } } } pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { size: [0; 16], }; pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t { size: [0; 12], }; pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { size: [0; 12], }; s_no_extra_traits! { pub struct ifreq { pub ifru_addr: crate::sockaddr, pub ifru_dstaddr: crate::sockaddr, pub ifru_broadaddr: crate::sockaddr, pub ifru_netmask: crate::sockaddr, pub ifru_hwaddr: crate::sockaddr, pub ifru_flags: c_short, pub ifru_ivalue: c_int, pub ifru_mtu: c_int, pub ifru_map: crate::ifmap, pub ifru_slave: [c_char; 16], pub ifru_newname: [c_char; 16], pub ifru_data: *mut c_char, } } safe_f! { pub {const} fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t { let major = major as crate::dev_t; let minor = minor as crate::dev_t; let mut dev = 0; dev |= (major & 0x00000fff) << 8; dev |= (major & 0xfffff000) << 32; dev |= (minor & 0x000000ff) << 0; dev |= (minor & 0xffffff00) << 12; dev } pub {const} fn major(dev: crate::dev_t) -> c_uint { let mut major = 0; major |= (dev & 0x00000000000fff00) >> 8; major |= (dev & 0xfffff00000000000) >> 32; major as c_uint } pub {const} fn minor(dev: crate::dev_t) -> c_uint { let mut minor = 0; minor |= (dev & 0x00000000000000ff) >> 0; minor |= (dev & 0x00000ffffff00000) >> 12; minor as c_uint } } extern "C" { #[link_name = "__gnu_strerror_r"] pub fn strerror_r(errnum: c_int, buf: *mut c_char, buflen: size_t) -> c_int; } impl siginfo_t { pub unsafe fn si_status(&self) -> c_int { #[repr(C)] struct siginfo_sigchld { _si_signo: c_int, _si_errno: c_int, _si_code: c_int, si_pid: crate::pid_t, si_uid: crate::uid_t, si_status: c_int, si_utime: crate::clock_t, si_stime: crate::clock_t, } (*(self as *const siginfo_t as *const siginfo_sigchld)).si_status } pub unsafe fn si_addr(&self) -> *mut c_void { #[repr(C)] struct siginfo_sigfault { _si_signo: c_int, _si_errno: c_int, _si_code: c_int, si_addr: *mut c_void, } (*(self as *const siginfo_t as *const siginfo_sigfault)).si_addr } } s! { pub struct sockaddr_nl { pub nl_family: crate::sa_family_t, nl_pad: c_ushort, pub nl_pid: u32, pub nl_groups: u32, } } // linux/netlink.h pub const NLA_ALIGNTO: c_int = 4; pub const NETLINK_ROUTE: c_int = 0; pub const NETLINK_UNUSED: c_int = 1; pub const NETLINK_USERSOCK: c_int = 2; pub const NETLINK_FIREWALL: c_int = 3; pub const NETLINK_SOCK_DIAG: c_int = 4; pub const NETLINK_NFLOG: c_int = 5; pub const NETLINK_XFRM: c_int = 6; pub const NETLINK_SELINUX: c_int = 7; pub const NETLINK_ISCSI: c_int = 8; pub const NETLINK_AUDIT: c_int = 9; pub const NETLINK_FIB_LOOKUP: c_int = 10; pub const NETLINK_CONNECTOR: c_int = 11; pub const NETLINK_NETFILTER: c_int = 12; pub const NETLINK_IP6_FW: c_int = 13; pub const NETLINK_DNRTMSG: c_int = 14; pub const NETLINK_KOBJECT_UEVENT: c_int = 15; pub const NETLINK_GENERIC: c_int = 16; pub const NETLINK_SCSITRANSPORT: c_int = 18; pub const NETLINK_ECRYPTFS: c_int = 19; pub const NETLINK_RDMA: c_int = 20; pub const NETLINK_CRYPTO: c_int = 21; pub const NETLINK_INET_DIAG: c_int = NETLINK_SOCK_DIAG; pub const NLM_F_REQUEST: c_int = 1; pub const NLM_F_MULTI: c_int = 2; pub const NLM_F_ACK: c_int = 4; pub const NLM_F_ECHO: c_int = 8; pub const NLM_F_DUMP_INTR: c_int = 16; pub const NLM_F_DUMP_FILTERED: c_int = 32; pub const NLM_F_ROOT: c_int = 0x100; pub const NLM_F_MATCH: c_int = 0x200; pub const NLM_F_ATOMIC: c_int = 0x400; pub const NLM_F_DUMP: c_int = NLM_F_ROOT | NLM_F_MATCH; pub const NLM_F_REPLACE: c_int = 0x100; pub const NLM_F_EXCL: c_int = 0x200; pub const NLM_F_CREATE: c_int = 0x400; pub const NLM_F_APPEND: c_int = 0x800; pub const NLM_F_NONREC: c_int = 0x100; pub const NLM_F_BULK: c_int = 0x200; pub const NLM_F_CAPPED: c_int = 0x100; pub const NLM_F_ACK_TLVS: c_int = 0x200; pub const NETLINK_ADD_MEMBERSHIP: c_int = 1; pub const NETLINK_DROP_MEMBERSHIP: c_int = 2; pub const NETLINK_PKTINFO: c_int = 3; pub const NETLINK_BROADCAST_ERROR: c_int = 4; pub const NETLINK_NO_ENOBUFS: c_int = 5; pub const NETLINK_RX_RING: c_int = 6; pub const NETLINK_TX_RING: c_int = 7; pub const NETLINK_LISTEN_ALL_NSID: c_int = 8; pub const NETLINK_LIST_MEMBERSHIPS: c_int = 9; pub const NETLINK_CAP_ACK: c_int = 10; pub const NETLINK_EXT_ACK: c_int = 11; pub const NETLINK_GET_STRICT_CHK: c_int = 12; pub const NLA_F_NESTED: c_int = 1 << 15; pub const NLA_F_NET_BYTEORDER: c_int = 1 << 14; pub const NLA_TYPE_MASK: c_int = !(NLA_F_NESTED | NLA_F_NET_BYTEORDER);