9a9b91c940
It's finally done.. Signed-off-by: kaguya <vpshinomiya@protonmail.com>
268 lines
7.8 KiB
Rust
268 lines
7.8 KiB
Rust
// 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::<cmsghdr>() {
|
|
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);
|