Bug 1785002 - Update libc to 0.2.132. r=emilio,supply-chain-reviewers

Differential Revision: https://phabricator.services.mozilla.com/D154731
This commit is contained in:
Mike Hommey 2022-08-16 21:01:47 +00:00
Родитель 88058d9bfe
Коммит ecf2d6f3c8
43 изменённых файлов: 1246 добавлений и 131 удалений

4
Cargo.lock сгенерированный
Просмотреть файл

@ -2936,9 +2936,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
[[package]]
name = "libc"
version = "0.2.126"
version = "0.2.132"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5"
[[package]]
name = "libdbus-sys"

Просмотреть файл

@ -398,6 +398,11 @@ who = "Mike Hommey <mh+mozilla@glandium.org>"
criteria = "safe-to-deploy"
delta = "1.0.2 -> 1.0.3"
[[audits.libc]]
who = "Mike Hommey <mh+mozilla@glandium.org>"
criteria = "safe-to-deploy"
delta = "0.2.126 -> 0.2.132"
[[audits.linked-hash-map]]
who = "Aria Beingessner <a.beingessner@gmail.com>"
criteria = "safe-to-deploy"

2
third_party/rust/libc/.cargo-checksum.json поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

4
third_party/rust/libc/CONTRIBUTING.md поставляемый
Просмотреть файл

@ -72,6 +72,10 @@ after a certain period. The steps are:
If you're using it, please comment on #XXX").
2. If we don't see any concerns for a while, do the change actually.
## Supported target policy
When Rust removes a support for a target, the libc crate also may remove the support anytime.
## Releasing your change to crates.io
Now that you've done the amazing job of landing your new API or your new

2
third_party/rust/libc/Cargo.toml поставляемый
Просмотреть файл

@ -11,7 +11,7 @@
[package]
name = "libc"
version = "0.2.126"
version = "0.2.132"
authors = ["The Rust Project Developers"]
build = "build.rs"
exclude = [

8
third_party/rust/libc/README.md поставляемый
Просмотреть файл

@ -35,13 +35,16 @@ libc = "0.2"
This feature derives `Debug`, `Eq`, `Hash`, and `PartialEq`.
* `const-extern-fn`: Changes some `extern fn`s into `const extern fn`s.
This feature requires a nightly rustc.
If you use Rust >= 1.62, this feature is implicitly enabled.
Otherwise it requires a nightly rustc.
* **deprecated**: `use_std` is deprecated, and is equivalent to `std`.
## Rust version support
The minimum supported Rust toolchain version is **Rust 1.13.0** . APIs requiring
The minimum supported Rust toolchain version is currently **Rust 1.13.0**.
(libc does not currently have any policy regarding changes to the minimum
supported Rust version; such policy is a work in progress.) APIs requiring
newer Rust features are only available on newer Rust toolchains:
| Feature | Version |
@ -53,6 +56,7 @@ newer Rust features are only available on newer Rust toolchains:
| `core::ffi::c_void` | 1.30.0 |
| `repr(packed(N))` | 1.33.0 |
| `cfg(target_vendor)` | 1.33.0 |
| `const-extern-fn` | 1.62.0 |
## Platform support

15
third_party/rust/libc/build.rs поставляемый
Просмотреть файл

@ -97,11 +97,18 @@ fn main() {
println!("cargo:rustc-cfg=libc_thread_local");
}
if const_extern_fn_cargo_feature {
if !is_nightly || rustc_minor_ver < 40 {
panic!("const-extern-fn requires a nightly compiler >= 1.40")
}
// Rust >= 1.62.0 allows to use `const_extern_fn` for "Rust" and "C".
if rustc_minor_ver >= 62 {
println!("cargo:rustc-cfg=libc_const_extern_fn");
} else {
// Rust < 1.62.0 requires a crate feature and feature gate.
if const_extern_fn_cargo_feature {
if !is_nightly || rustc_minor_ver < 40 {
panic!("const-extern-fn requires a nightly compiler >= 1.40");
}
println!("cargo:rustc-cfg=libc_const_extern_fn_unstable");
println!("cargo:rustc-cfg=libc_const_extern_fn");
}
}
}

11
third_party/rust/libc/src/fuchsia/mod.rs поставляемый
Просмотреть файл

@ -877,6 +877,11 @@ s! {
pub c_ispeed: ::speed_t,
pub c_ospeed: ::speed_t,
}
pub struct in6_pktinfo {
pub ipi6_addr: ::in6_addr,
pub ipi6_ifindex: ::c_uint,
}
}
s_no_extra_traits! {
@ -1788,6 +1793,9 @@ pub const IPV6_MULTICAST_LOOP: ::c_int = 19;
pub const IPV6_ADD_MEMBERSHIP: ::c_int = 20;
pub const IPV6_DROP_MEMBERSHIP: ::c_int = 21;
pub const IPV6_V6ONLY: ::c_int = 26;
pub const IPV6_RECVPKTINFO: ::c_int = 49;
pub const IPV6_RECVTCLASS: ::c_int = 66;
pub const IPV6_TCLASS: ::c_int = 67;
pub const TCP_NODELAY: ::c_int = 1;
pub const TCP_MAXSEG: ::c_int = 2;
@ -2669,6 +2677,9 @@ pub const PT_GNU_EH_FRAME: u32 = 0x6474e550;
pub const PT_GNU_STACK: u32 = 0x6474e551;
pub const PT_GNU_RELRO: u32 = 0x6474e552;
// Ethernet protocol IDs.
pub const ETH_P_IP: ::c_int = 0x0800;
pub const SFD_CLOEXEC: ::c_int = 0x080000;
pub const NCCS: usize = 32;

10
third_party/rust/libc/src/lib.rs поставляемый
Просмотреть файл

@ -13,7 +13,9 @@
improper_ctypes,
// This lint is renamed but we run CI for old stable rustc so should be here.
redundant_semicolon,
redundant_semicolons
redundant_semicolons,
unused_macros,
unused_macro_rules,
)]
#![cfg_attr(libc_deny_warnings, deny(warnings))]
// Attributes needed when building as part of the standard library
@ -24,11 +26,7 @@
#![deny(missing_copy_implementations, safe_packed_borrows)]
#![cfg_attr(not(feature = "rustc-dep-of-std"), no_std)]
#![cfg_attr(feature = "rustc-dep-of-std", no_core)]
#![cfg_attr(
feature = "rustc-dep-of-std",
feature(native_link_modifiers, native_link_modifiers_bundle)
)]
#![cfg_attr(libc_const_extern_fn, feature(const_extern_fn))]
#![cfg_attr(libc_const_extern_fn_unstable, feature(const_extern_fn))]
#[macro_use]
mod macros;

16
third_party/rust/libc/src/macros.rs поставляемый
Просмотреть файл

@ -6,7 +6,6 @@
///
/// This allows you to conveniently provide a long list #[cfg]'d blocks of code
/// without having to rewrite each clause multiple times.
#[allow(unused_macros)]
macro_rules! cfg_if {
// match if/else chains with a final `else`
($(
@ -62,7 +61,6 @@ macro_rules! cfg_if {
};
}
#[allow(unused_macros, unused_macro_rules)]
macro_rules! s {
($($(#[$attr:meta])* pub $t:ident $i:ident { $($field:tt)* })*) => ($(
s!(it: $(#[$attr])* pub $t $i { $($field)* });
@ -87,7 +85,6 @@ macro_rules! s {
);
}
#[allow(unused_macros)]
macro_rules! s_no_extra_traits {
($($(#[$attr:meta])* pub $t:ident $i:ident { $($field:tt)* })*) => ($(
s_no_extra_traits!(it: $(#[$attr])* pub $t $i { $($field)* });
@ -123,7 +120,6 @@ macro_rules! s_no_extra_traits {
);
}
#[allow(unused_macros)]
macro_rules! e {
($($(#[$attr:meta])* pub enum $i:ident { $($field:tt)* })*) => ($(
__item! {
@ -138,7 +134,6 @@ macro_rules! e {
)*);
}
#[allow(unused_macros)]
macro_rules! s_paren {
($($(#[$attr:meta])* pub struct $i:ident ( $($field:tt)* ); )* ) => ($(
__item! {
@ -182,7 +177,6 @@ macro_rules! s_paren {
// 'f!' block
cfg_if! {
if #[cfg(libc_const_extern_fn)] {
#[allow(unused_macros)]
macro_rules! f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
@ -198,7 +192,6 @@ cfg_if! {
)*)
}
#[allow(unused_macros)]
macro_rules! safe_f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
@ -214,7 +207,6 @@ cfg_if! {
)*)
}
#[allow(unused_macros)]
macro_rules! const_fn {
($($(#[$attr:meta])* $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
@ -231,7 +223,6 @@ cfg_if! {
}
} else {
#[allow(unused_macros)]
macro_rules! f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
@ -247,7 +238,6 @@ cfg_if! {
)*)
}
#[allow(unused_macros)]
macro_rules! safe_f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
@ -263,7 +253,6 @@ cfg_if! {
)*)
}
#[allow(unused_macros)]
macro_rules! const_fn {
($($(#[$attr:meta])* $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
@ -281,14 +270,12 @@ cfg_if! {
}
}
#[allow(unused_macros)]
macro_rules! __item {
($i:item) => {
$i
};
}
#[allow(unused_macros)]
macro_rules! align_const {
($($(#[$attr:meta])*
pub const $name:ident : $t1:ty
@ -308,7 +295,6 @@ macro_rules! align_const {
}
// This macro is used to deprecate items that should be accessed via the mach2 crate
#[allow(unused_macros)]
macro_rules! deprecated_mach {
(pub const $id:ident: $ty:ty = $expr:expr;) => {
#[deprecated(
@ -342,7 +328,6 @@ macro_rules! deprecated_mach {
}
}
#[allow(unused_macros)]
#[cfg(not(libc_ptr_addr_of))]
macro_rules! ptr_addr_of {
($place:expr) => {
@ -350,7 +335,6 @@ macro_rules! ptr_addr_of {
};
}
#[allow(unused_macros)]
#[cfg(libc_ptr_addr_of)]
macro_rules! ptr_addr_of {
($place:expr) => {

Просмотреть файл

@ -15,6 +15,7 @@ s! {
pub uc_link: *mut ::ucontext_t,
pub uc_mcsize: usize,
pub uc_mcontext: mcontext_t,
__mcontext_data: __darwin_mcontext64,
}
pub struct __darwin_mcontext64 {

Просмотреть файл

@ -53,6 +53,8 @@ pub type host_info64_t = *mut integer_t;
pub type processor_flavor_t = ::c_int;
pub type thread_flavor_t = natural_t;
pub type thread_inspect_t = ::mach_port_t;
pub type thread_act_t = ::mach_port_t;
pub type thread_act_array_t = *mut ::thread_act_t;
pub type policy_t = ::c_int;
pub type mach_vm_address_t = u64;
pub type mach_vm_offset_t = u64;
@ -64,6 +66,9 @@ pub type memory_object_offset_t = ::c_ulonglong;
pub type vm_inherit_t = ::c_uint;
pub type vm_prot_t = ::c_int;
pub type ledger_t = ::mach_port_t;
pub type ledger_array_t = *mut ::ledger_t;
pub type iconv_t = *mut ::c_void;
pub type processor_cpu_load_info_t = *mut processor_cpu_load_info;
@ -121,6 +126,7 @@ pub type vm_statistics64_t = *mut vm_statistics64;
pub type vm_statistics64_data_t = vm_statistics64;
pub type task_t = ::mach_port_t;
pub type task_inspect_t = ::mach_port_t;
pub type sysdir_search_path_enumeration_state = ::c_uint;
@ -672,6 +678,13 @@ s! {
pub s_addr: ::in_addr_t,
}
// net/ndrv.h
pub struct sockaddr_ndrv {
pub snd_len: ::c_uchar,
pub snd_family: ::c_uchar,
pub snd_name: [::c_uchar; 16] // IFNAMSIZ from if.h
}
// sys/socket.h
pub struct sa_endpoints_t {
@ -1038,7 +1051,8 @@ s_no_extra_traits! {
pub f_fstypename: [::c_char; 16],
pub f_mntonname: [::c_char; 1024],
pub f_mntfromname: [::c_char; 1024],
pub f_reserved: [u32; 8],
pub f_flags_ext: u32,
pub f_reserved: [u32; 7],
}
pub struct dirent {
@ -3466,6 +3480,7 @@ pub const pseudo_AF_RTIP: ::c_int = 22;
pub const AF_IPX: ::c_int = 23;
pub const AF_SIP: ::c_int = 24;
pub const pseudo_AF_PIP: ::c_int = 25;
pub const AF_NDRV: ::c_int = 27;
pub const AF_ISDN: ::c_int = 28;
pub const AF_E164: ::c_int = AF_ISDN;
pub const pseudo_AF_KEY: ::c_int = 29;
@ -3508,6 +3523,7 @@ pub const PF_SIP: ::c_int = AF_SIP;
pub const PF_IPX: ::c_int = AF_IPX;
pub const PF_RTIP: ::c_int = pseudo_AF_RTIP;
pub const PF_PIP: ::c_int = pseudo_AF_PIP;
pub const PF_NDRV: ::c_int = AF_NDRV;
pub const PF_ISDN: ::c_int = AF_ISDN;
pub const PF_KEY: ::c_int = pseudo_AF_KEY;
pub const PF_INET6: ::c_int = AF_INET6;
@ -3552,6 +3568,7 @@ pub const IP_ADD_SOURCE_MEMBERSHIP: ::c_int = 70;
pub const IP_DROP_SOURCE_MEMBERSHIP: ::c_int = 71;
pub const IP_BLOCK_SOURCE: ::c_int = 72;
pub const IP_UNBLOCK_SOURCE: ::c_int = 73;
pub const IPV6_BOUND_IF: ::c_int = 125;
pub const TCP_NOPUSH: ::c_int = 4;
pub const TCP_NOOPT: ::c_int = 8;
@ -4672,6 +4689,16 @@ cfg_if! {
const __DARWIN_ALIGNBYTES32: usize = ::mem::size_of::<u32>() - 1;
p + __DARWIN_ALIGNBYTES32 & !__DARWIN_ALIGNBYTES32
}
} else {
fn __DARWIN_ALIGN32(p: usize) -> usize {
let __DARWIN_ALIGNBYTES32: usize = ::mem::size_of::<u32>() - 1;
p + __DARWIN_ALIGNBYTES32 & !__DARWIN_ALIGNBYTES32
}
}
}
cfg_if! {
if #[cfg(libc_const_size_of)] {
pub const THREAD_EXTENDED_POLICY_COUNT: mach_msg_type_number_t =
(::mem::size_of::<thread_extended_policy_data_t>() / ::mem::size_of::<integer_t>())
as mach_msg_type_number_t;
@ -4712,10 +4739,6 @@ cfg_if! {
(::mem::size_of::<vm_statistics64_data_t>() / ::mem::size_of::<integer_t>())
as mach_msg_type_number_t;
} else {
fn __DARWIN_ALIGN32(p: usize) -> usize {
let __DARWIN_ALIGNBYTES32: usize = ::mem::size_of::<u32>() - 1;
p + __DARWIN_ALIGNBYTES32 & !__DARWIN_ALIGNBYTES32
}
pub const THREAD_EXTENDED_POLICY_COUNT: mach_msg_type_number_t = 1;
pub const THREAD_TIME_CONSTRAINT_POLICY_COUNT: mach_msg_type_number_t = 4;
pub const THREAD_PRECEDENCE_POLICY_COUNT: mach_msg_type_number_t = 1;
@ -5004,6 +5027,8 @@ extern "C" {
thread_info_out: thread_info_t,
thread_info_outCnt: *mut mach_msg_type_number_t,
) -> kern_return_t;
#[cfg_attr(doc, doc(alias = "__errno_location"))]
#[cfg_attr(doc, doc(alias = "errno"))]
pub fn __error() -> *mut ::c_int;
pub fn backtrace(buf: *mut *mut ::c_void, sz: ::c_int) -> ::c_int;
pub fn backtrace_symbols(addrs: *const *mut ::c_void, sz: ::c_int) -> *mut *mut ::c_char;
@ -5480,6 +5505,19 @@ extern "C" {
task_info_out: task_info_t,
task_info_count: *mut mach_msg_type_number_t,
) -> ::kern_return_t;
pub fn task_create(
target_task: ::task_t,
ledgers: ::ledger_array_t,
ledgersCnt: ::mach_msg_type_number_t,
inherit_memory: ::boolean_t,
child_task: *mut ::task_t,
) -> ::kern_return_t;
pub fn task_terminate(target_task: ::task_t) -> ::kern_return_t;
pub fn task_threads(
target_task: ::task_inspect_t,
act_list: *mut ::thread_act_array_t,
act_listCnt: *mut ::mach_msg_type_number_t,
) -> ::kern_return_t;
pub fn host_statistics(
host_priv: host_t,
flavor: host_flavor_t,
@ -5508,12 +5546,23 @@ cfg_if! {
if #[cfg(target_os = "macos")] {
extern "C" {
pub fn clock_settime(clock_id: ::clockid_t, tp: *const ::timespec) -> ::c_int;
}
}
}
cfg_if! {
if #[cfg(any(target_os = "macos", target_os = "ios"))] {
extern "C" {
pub fn memmem(
haystack: *const ::c_void,
haystacklen: ::size_t,
needle: *const ::c_void,
needlelen: ::size_t,
) -> *mut ::c_void;
pub fn task_set_info(target_task: ::task_t,
flavor: ::task_flavor_t,
task_info_in: ::task_info_t,
task_info_inCnt: ::mach_msg_type_number_t
) -> ::kern_return_t;
}
}
}

Просмотреть файл

@ -34,6 +34,17 @@ pub type pthread_spinlock_t = ::uintptr_t;
pub type segsz_t = usize;
pub type vm_prot_t = u8;
pub type vm_maptype_t = u8;
pub type vm_inherit_t = i8;
pub type vm_subsys_t = ::c_int;
pub type vm_eflags_t = ::c_uint;
pub type vm_map_t = *mut __c_anonymous_vm_map;
pub type vm_map_entry_t = *mut vm_map_entry;
pub type pmap = __c_anonymous_pmap;
#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum sem {}
impl ::Copy for sem {}
@ -336,6 +347,50 @@ s! {
kp_spare: [::c_int; 2],
}
pub struct __c_anonymous_vm_map {
_priv: [::uintptr_t; 36],
}
pub struct vm_map_entry {
_priv: [::uintptr_t; 15],
pub eflags: ::vm_eflags_t,
pub maptype: ::vm_maptype_t,
pub protection: ::vm_prot_t,
pub max_protection: ::vm_prot_t,
pub inheritance: ::vm_inherit_t,
pub wired_count: ::c_int,
pub id: ::vm_subsys_t,
}
pub struct __c_anonymous_pmap {
_priv1: [::uintptr_t; 32],
_priv2: [::uintptr_t; 32],
_priv3: [::uintptr_t; 32],
_priv4: [::uintptr_t; 32],
_priv5: [::uintptr_t; 8],
}
pub struct vmspace {
vm_map: __c_anonymous_vm_map,
vm_pmap: __c_anonymous_pmap,
pub vm_flags: ::c_int,
pub vm_shm: *mut ::c_char,
pub vm_rssize: ::segsz_t,
pub vm_swrss: ::segsz_t,
pub vm_tsize: ::segsz_t,
pub vm_dsize: ::segsz_t,
pub vm_ssize: ::segsz_t,
pub vm_taddr: *mut ::c_char,
pub vm_daddr: *mut ::c_char,
pub vm_maxsaddr: *mut ::c_char,
pub vm_minsaddr: *mut ::c_char,
_unused1: ::c_int,
_unused2: ::c_int,
pub vm_pagesupply: ::c_int,
pub vm_holdcnt: ::c_uint,
pub vm_refcnt: ::c_uint,
}
pub struct cpuctl_msr_args_t {
pub msr: ::c_int,
pub data: u64,
@ -1613,6 +1668,20 @@ extern "C" {
pub fn freezero(ptr: *mut ::c_void, size: ::size_t);
}
#[link(name = "kvm")]
extern "C" {
pub fn kvm_vm_map_entry_first(
kvm: *mut ::kvm_t,
map: vm_map_t,
entry: vm_map_entry_t,
) -> vm_map_entry_t;
pub fn kvm_vm_map_entry_next(
kvm: *mut ::kvm_t,
map: vm_map_entry_t,
entry: vm_map_entry_t,
) -> vm_map_entry_t;
}
cfg_if! {
if #[cfg(libc_thread_local)] {
mod errno;

Просмотреть файл

@ -44,10 +44,6 @@ pub type fhandle_t = fhandle;
pub type au_id_t = ::uid_t;
pub type au_asid_t = ::pid_t;
// It's an alias over "struct __kvm_t". However, its fields aren't supposed to be used directly,
// making the type definition system dependent. Better not bind it exactly.
pub type kvm_t = ::c_void;
#[cfg_attr(feature = "extra_traits", derive(Debug, Hash, PartialEq, Eq))]
#[repr(u32)]
pub enum devstat_support_flags {
@ -3661,6 +3657,19 @@ pub const CPUCLOCK_WHICH_TID: ::c_int = 1;
pub const MFD_CLOEXEC: ::c_uint = 0x00000001;
pub const MFD_ALLOW_SEALING: ::c_uint = 0x00000002;
pub const MFD_HUGETLB: ::c_uint = 0x00000004;
pub const MFD_HUGE_MASK: ::c_uint = 0xFC000000;
pub const MFD_HUGE_64KB: ::c_uint = 16 << 26;
pub const MFD_HUGE_512KB: ::c_uint = 19 << 26;
pub const MFD_HUGE_1MB: ::c_uint = 20 << 26;
pub const MFD_HUGE_2MB: ::c_uint = 21 << 26;
pub const MFD_HUGE_8MB: ::c_uint = 23 << 26;
pub const MFD_HUGE_16MB: ::c_uint = 24 << 26;
pub const MFD_HUGE_32MB: ::c_uint = 25 << 26;
pub const MFD_HUGE_256MB: ::c_uint = 28 << 26;
pub const MFD_HUGE_512MB: ::c_uint = 29 << 26;
pub const MFD_HUGE_1GB: ::c_uint = 30 << 26;
pub const MFD_HUGE_2GB: ::c_uint = 31 << 26;
pub const MFD_HUGE_16GB: ::c_uint = 34 << 26;
pub const SHM_LARGEPAGE_ALLOC_DEFAULT: ::c_int = 0;
pub const SHM_LARGEPAGE_ALLOC_NOWAIT: ::c_int = 1;
@ -3772,21 +3781,21 @@ f! {
}
pub fn CPU_SET(cpu: usize, cpuset: &mut cpuset_t) -> () {
let bitset_bits = ::mem::size_of::<::c_long>();
let bitset_bits = 8 * ::mem::size_of::<::c_long>();
let (idx, offset) = (cpu / bitset_bits, cpu % bitset_bits);
cpuset.__bits[idx] |= 1 << offset;
()
}
pub fn CPU_CLR(cpu: usize, cpuset: &mut cpuset_t) -> () {
let bitset_bits = ::mem::size_of::<::c_long>();
let bitset_bits = 8 * ::mem::size_of::<::c_long>();
let (idx, offset) = (cpu / bitset_bits, cpu % bitset_bits);
cpuset.__bits[idx] &= !(1 << offset);
()
}
pub fn CPU_ISSET(cpu: usize, cpuset: &cpuset_t) -> bool {
let bitset_bits = ::mem::size_of::<::c_long>();
let bitset_bits = 8 * ::mem::size_of::<::c_long>();
let (idx, offset) = (cpu / bitset_bits, cpu % bitset_bits);
0 != cpuset.__bits[idx] & (1 << offset)
}
@ -3794,9 +3803,9 @@ f! {
pub fn CPU_COUNT(cpuset: &cpuset_t) -> ::c_int {
let mut s: u32 = 0;
let cpuset_size = ::mem::size_of::<cpuset_t>();
let bitset_bits = ::mem::size_of::<::c_long>();
let bitset_size = ::mem::size_of::<::c_long>();
for i in cpuset.__bits[..(cpuset_size / bitset_bits)].iter() {
for i in cpuset.__bits[..(cpuset_size / bitset_size)].iter() {
s += i.count_ones();
};
s as ::c_int
@ -3839,6 +3848,8 @@ cfg_if! {
}
extern "C" {
#[cfg_attr(doc, doc(alias = "__errno_location"))]
#[cfg_attr(doc, doc(alias = "errno"))]
pub fn __error() -> *mut ::c_int;
pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
@ -4272,71 +4283,39 @@ extern "C" {
#[link(name = "kvm")]
extern "C" {
pub fn kvm_open(
execfile: *const ::c_char,
corefile: *const ::c_char,
swapfile: *const ::c_char,
flags: ::c_int,
errstr: *const ::c_char,
) -> *mut kvm_t;
pub fn kvm_close(kd: *mut kvm_t) -> ::c_int;
pub fn kvm_dpcpu_setcpu(kd: *mut kvm_t, cpu: ::c_uint) -> ::c_int;
pub fn kvm_getargv(kd: *mut kvm_t, p: *const kinfo_proc, nchr: ::c_int) -> *mut *mut ::c_char;
pub fn kvm_getcptime(kd: *mut kvm_t, cp_time: *mut ::c_long) -> ::c_int;
pub fn kvm_getenvv(kd: *mut kvm_t, p: *const kinfo_proc, nchr: ::c_int) -> *mut *mut ::c_char;
pub fn kvm_geterr(kd: *mut kvm_t) -> *mut ::c_char;
pub fn kvm_getloadavg(kd: *mut kvm_t, loadavg: *mut ::c_double, nelem: ::c_int) -> ::c_int;
pub fn kvm_getmaxcpu(kd: *mut kvm_t) -> ::c_int;
pub fn kvm_getncpus(kd: *mut kvm_t) -> ::c_int;
pub fn kvm_getpcpu(kd: *mut kvm_t, cpu: ::c_int) -> *mut ::c_void;
pub fn kvm_counter_u64_fetch(kd: *mut kvm_t, base: ::c_ulong) -> u64;
pub fn kvm_getprocs(
kd: *mut kvm_t,
op: ::c_int,
arg: ::c_int,
cnt: *mut ::c_int,
) -> *mut kinfo_proc;
pub fn kvm_dpcpu_setcpu(kd: *mut ::kvm_t, cpu: ::c_uint) -> ::c_int;
pub fn kvm_getargv(kd: *mut ::kvm_t, p: *const kinfo_proc, nchr: ::c_int)
-> *mut *mut ::c_char;
pub fn kvm_getcptime(kd: *mut ::kvm_t, cp_time: *mut ::c_long) -> ::c_int;
pub fn kvm_getenvv(kd: *mut ::kvm_t, p: *const kinfo_proc, nchr: ::c_int)
-> *mut *mut ::c_char;
pub fn kvm_geterr(kd: *mut ::kvm_t) -> *mut ::c_char;
pub fn kvm_getmaxcpu(kd: *mut ::kvm_t) -> ::c_int;
pub fn kvm_getncpus(kd: *mut ::kvm_t) -> ::c_int;
pub fn kvm_getpcpu(kd: *mut ::kvm_t, cpu: ::c_int) -> *mut ::c_void;
pub fn kvm_counter_u64_fetch(kd: *mut ::kvm_t, base: ::c_ulong) -> u64;
pub fn kvm_getswapinfo(
kd: *mut kvm_t,
kd: *mut ::kvm_t,
info: *mut kvm_swap,
maxswap: ::c_int,
flags: ::c_int,
) -> ::c_int;
pub fn kvm_native(kd: *mut kvm_t) -> ::c_int;
pub fn kvm_nlist(kd: *mut kvm_t, nl: *mut nlist) -> ::c_int;
pub fn kvm_nlist2(kd: *mut kvm_t, nl: *mut kvm_nlist) -> ::c_int;
pub fn kvm_openfiles(
execfile: *const ::c_char,
corefile: *const ::c_char,
swapfile: *const ::c_char,
flags: ::c_int,
errbuf: *mut ::c_char,
) -> *mut kvm_t;
pub fn kvm_read(
kd: *mut kvm_t,
addr: ::c_ulong,
buf: *mut ::c_void,
nbytes: ::size_t,
) -> ::ssize_t;
pub fn kvm_native(kd: *mut ::kvm_t) -> ::c_int;
pub fn kvm_nlist(kd: *mut ::kvm_t, nl: *mut nlist) -> ::c_int;
pub fn kvm_nlist2(kd: *mut ::kvm_t, nl: *mut kvm_nlist) -> ::c_int;
pub fn kvm_read_zpcpu(
kd: *mut kvm_t,
kd: *mut ::kvm_t,
base: ::c_ulong,
buf: *mut ::c_void,
size: ::size_t,
cpu: ::c_int,
) -> ::ssize_t;
pub fn kvm_read2(
kd: *mut kvm_t,
kd: *mut ::kvm_t,
addr: kvaddr_t,
buf: *mut ::c_void,
nbytes: ::size_t,
) -> ::ssize_t;
pub fn kvm_write(
kd: *mut kvm_t,
addr: ::c_ulong,
buf: *const ::c_void,
nbytes: ::size_t,
) -> ::ssize_t;
}
#[link(name = "util")]
@ -4486,10 +4465,10 @@ extern "C" {
#[link(name = "devstat")]
extern "C" {
pub fn devstat_getnumdevs(kd: *mut kvm_t) -> ::c_int;
pub fn devstat_getgeneration(kd: *mut kvm_t) -> ::c_long;
pub fn devstat_getversion(kd: *mut kvm_t) -> ::c_int;
pub fn devstat_checkversion(kd: *mut kvm_t) -> ::c_int;
pub fn devstat_getnumdevs(kd: *mut ::kvm_t) -> ::c_int;
pub fn devstat_getgeneration(kd: *mut ::kvm_t) -> ::c_long;
pub fn devstat_getversion(kd: *mut ::kvm_t) -> ::c_int;
pub fn devstat_checkversion(kd: *mut ::kvm_t) -> ::c_int;
pub fn devstat_selectdevs(
dev_select: *mut *mut device_selection,
num_selected: *mut ::c_int,

Просмотреть файл

@ -35,6 +35,10 @@ pub type Elf64_Xword = u64;
pub type iconv_t = *mut ::c_void;
// It's an alias over "struct __kvm_t". However, its fields aren't supposed to be used directly,
// making the type definition system dependent. Better not bind it exactly.
pub type kvm_t = ::c_void;
cfg_if! {
if #[cfg(target_pointer_width = "64")] {
type Elf_Addr = Elf64_Addr;
@ -1790,6 +1794,44 @@ extern "C" {
) -> ::c_int;
}
#[link(name = "kvm")]
extern "C" {
pub fn kvm_open(
execfile: *const ::c_char,
corefile: *const ::c_char,
swapfile: *const ::c_char,
flags: ::c_int,
errstr: *const ::c_char,
) -> *mut ::kvm_t;
pub fn kvm_close(kd: *mut ::kvm_t) -> ::c_int;
pub fn kvm_getprocs(
kd: *mut ::kvm_t,
op: ::c_int,
arg: ::c_int,
cnt: *mut ::c_int,
) -> *mut ::kinfo_proc;
pub fn kvm_getloadavg(kd: *mut kvm_t, loadavg: *mut ::c_double, nelem: ::c_int) -> ::c_int;
pub fn kvm_openfiles(
execfile: *const ::c_char,
corefile: *const ::c_char,
swapfile: *const ::c_char,
flags: ::c_int,
errbuf: *mut ::c_char,
) -> *mut ::kvm_t;
pub fn kvm_read(
kd: *mut ::kvm_t,
addr: ::c_ulong,
buf: *mut ::c_void,
nbytes: ::size_t,
) -> ::ssize_t;
pub fn kvm_write(
kd: *mut ::kvm_t,
addr: ::c_ulong,
buf: *const ::c_void,
nbytes: ::size_t,
) -> ::ssize_t;
}
cfg_if! {
if #[cfg(target_os = "freebsd")] {
mod freebsd;

6
third_party/rust/libc/src/unix/bsd/mod.rs поставляемый
Просмотреть файл

@ -449,6 +449,12 @@ pub const TCP_MAXSEG: ::c_int = 2;
pub const PIPE_BUF: usize = 512;
// si_code values for SIGBUS signal
pub const BUS_ADRALN: ::c_int = 1;
pub const BUS_ADRERR: ::c_int = 2;
pub const BUS_OBJERR: ::c_int = 3;
// si_code values for SIGCHLD signal
pub const CLD_EXITED: ::c_int = 1;
pub const CLD_KILLED: ::c_int = 2;
pub const CLD_DUMPED: ::c_int = 3;

Просмотреть файл

@ -639,17 +639,6 @@ pub const TIOCM_DSR: ::c_int = 0o0400;
pub const TIOCM_CD: ::c_int = TIOCM_CAR;
pub const TIOCM_RI: ::c_int = TIOCM_RNG;
// Flags for chflags(2)
pub const UF_SETTABLE: ::c_ulong = 0x0000ffff;
pub const UF_NODUMP: ::c_ulong = 0x00000001;
pub const UF_IMMUTABLE: ::c_ulong = 0x00000002;
pub const UF_APPEND: ::c_ulong = 0x00000004;
pub const UF_OPAQUE: ::c_ulong = 0x00000008;
pub const SF_SETTABLE: ::c_ulong = 0xffff0000;
pub const SF_ARCHIVED: ::c_ulong = 0x00010000;
pub const SF_IMMUTABLE: ::c_ulong = 0x00020000;
pub const SF_APPEND: ::c_ulong = 0x00040000;
pub const TIMER_ABSTIME: ::c_int = 1;
#[link(name = "util")]

Просмотреть файл

@ -487,6 +487,134 @@ s! {
af_arg: [[::c_char; 10]; 24],
}
pub struct ki_sigset_t {
pub __bits: [u32; 4],
}
pub struct kinfo_proc2 {
pub p_forw: u64,
pub p_back: u64,
pub p_paddr: u64,
pub p_addr: u64,
pub p_fd: u64,
pub p_cwdi: u64,
pub p_stats: u64,
pub p_limit: u64,
pub p_vmspace: u64,
pub p_sigacts: u64,
pub p_sess: u64,
pub p_tsess: u64,
pub p_ru: u64,
pub p_eflag: i32,
pub p_exitsig: i32,
pub p_flag: i32,
pub p_pid: i32,
pub p_ppid: i32,
pub p_sid: i32,
pub p__pgid: i32,
pub p_tpgid: i32,
pub p_uid: u32,
pub p_ruid: u32,
pub p_gid: u32,
pub p_rgid: u32,
pub p_groups: [u32; KI_NGROUPS as usize],
pub p_ngroups: i16,
pub p_jobc: i16,
pub p_tdev: u32,
pub p_estcpu: u32,
pub p_rtime_sec: u32,
pub p_rtime_usec: u32,
pub p_cpticks: i32,
pub p_pctcpu: u32,
pub p_swtime: u32,
pub p_slptime: u32,
pub p_schedflags: i32,
pub p_uticks: u64,
pub p_sticks: u64,
pub p_iticks: u64,
pub p_tracep: u64,
pub p_traceflag: i32,
pub p_holdcnt: i32,
pub p_siglist: ki_sigset_t,
pub p_sigmask: ki_sigset_t,
pub p_sigignore: ki_sigset_t,
pub p_sigcatch: ki_sigset_t,
pub p_stat: i8,
pub p_priority: u8,
pub p_usrpri: u8,
pub p_nice: u8,
pub p_xstat: u16,
pub p_acflag: u16,
pub p_comm: [::c_char; KI_MAXCOMLEN as usize],
pub p_wmesg: [::c_char; KI_WMESGLEN as usize],
pub p_wchan: u64,
pub p_login: [::c_char; KI_MAXLOGNAME as usize],
pub p_vm_rssize: i32,
pub p_vm_tsize: i32,
pub p_vm_dsize: i32,
pub p_vm_ssize: i32,
pub p_uvalid: i64,
pub p_ustart_sec: u32,
pub p_ustart_usec: u32,
pub p_uutime_sec: u32,
pub p_uutime_usec: u32,
pub p_ustime_sec: u32,
pub p_ustime_usec: u32,
pub p_uru_maxrss: u64,
pub p_uru_ixrss: u64,
pub p_uru_idrss: u64,
pub p_uru_isrss: u64,
pub p_uru_minflt: u64,
pub p_uru_majflt: u64,
pub p_uru_nswap: u64,
pub p_uru_inblock: u64,
pub p_uru_oublock: u64,
pub p_uru_msgsnd: u64,
pub p_uru_msgrcv: u64,
pub p_uru_nsignals: u64,
pub p_uru_nvcsw: u64,
pub p_uru_nivcsw: u64,
pub p_uctime_sec: u32,
pub p_uctime_usec: u32,
pub p_cpuid: u64,
pub p_realflag: u64,
pub p_nlwps: u64,
pub p_nrlwps: u64,
pub p_realstat: u64,
pub p_svuid: u32,
pub p_svgid: u32,
pub p_ename: [::c_char; KI_MAXEMULLEN as usize],
pub p_vm_vsize: i64,
pub p_vm_msize: i64,
}
pub struct kinfo_lwp {
pub l_forw: u64,
pub l_back: u64,
pub l_laddr: u64,
pub l_addr: u64,
pub l_lid: i32,
pub l_flag: i32,
pub l_swtime: u32,
pub l_slptime: u32,
pub l_schedflags: i32,
pub l_holdcnt: i32,
pub l_priority: u8,
pub l_usrpri: u8,
pub l_stat: i8,
l_pad1: i8,
l_pad2: i32,
pub l_wmesg: [::c_char; KI_WMESGLEN as usize],
pub l_wchan: u64,
pub l_cpuid: u64,
pub l_rtime_sec: u32,
pub l_rtime_usec: u32,
pub l_cpticks: u32,
pub l_pctcpu: u32,
pub l_pid: u32,
pub l_name: [::c_char; KI_LNAMELEN as usize],
}
pub struct kinfo_vmentry {
pub kve_start: u64,
pub kve_end: u64,
@ -1440,10 +1568,7 @@ pub const IPPROTO_VRRP: ::c_int = 112;
/// Common Address Resolution Protocol
pub const IPPROTO_CARP: ::c_int = 112;
/// L2TPv3
// TEMP: Disabled for now; this constant was added to NetBSD on 2017-02-16,
// but isn't yet supported by the NetBSD rumprun kernel image used for
// libc testing.
//pub const IPPROTO_L2TP: ::c_int = 115;
pub const IPPROTO_L2TP: ::c_int = 115;
/// SCTP
pub const IPPROTO_SCTP: ::c_int = 132;
/// PFSYNC
@ -2103,9 +2228,18 @@ pub const POSIX_SPAWN_SETSIGMASK: ::c_int = 0x20;
pub const POSIX_SPAWN_RETURNERROR: ::c_int = 0x40;
// Flags for chflags(2)
pub const SF_SNAPSHOT: ::c_ulong = 0x00200000;
pub const SF_APPEND: ::c_ulong = 0x00040000;
pub const SF_ARCHIVED: ::c_ulong = 0x00010000;
pub const SF_IMMUTABLE: ::c_ulong = 0x00020000;
pub const SF_LOG: ::c_ulong = 0x00400000;
pub const SF_SETTABLE: ::c_ulong = 0xffff0000;
pub const SF_SNAPINVAL: ::c_ulong = 0x00800000;
pub const SF_SNAPSHOT: ::c_ulong = 0x00200000;
pub const UF_APPEND: ::c_ulong = 0x00000004;
pub const UF_IMMUTABLE: ::c_ulong = 0x00000002;
pub const UF_NODUMP: ::c_ulong = 0x00000001;
pub const UF_OPAQUE: ::c_ulong = 0x00000008;
pub const UF_SETTABLE: ::c_ulong = 0x0000ffff;
// sys/sysctl.h
pub const KVME_PROT_READ: ::c_int = 0x00000001;
@ -2121,6 +2255,22 @@ pub const KVME_FLAG_GROWS_DOWN: ::c_int = 0x000000020;
pub const NGROUPS_MAX: ::c_int = 16;
pub const KI_NGROUPS: ::c_int = 16;
pub const KI_MAXCOMLEN: ::c_int = 24;
pub const KI_WMESGLEN: ::c_int = 8;
pub const KI_MAXLOGNAME: ::c_int = 24;
pub const KI_MAXEMULLEN: ::c_int = 16;
pub const KI_LNAMELEN: ::c_int = 20;
// sys/lwp.h
pub const LSIDL: ::c_int = 1;
pub const LSRUN: ::c_int = 2;
pub const LSSLEEP: ::c_int = 3;
pub const LSSTOP: ::c_int = 4;
pub const LSZOMB: ::c_int = 5;
pub const LSONPROC: ::c_int = 7;
pub const LSSUSPENDED: ::c_int = 8;
const_fn! {
{const} fn _ALIGN(p: usize) -> usize {
(p + _ALIGNBYTES) & !_ALIGNBYTES

Просмотреть файл

@ -1628,6 +1628,17 @@ pub const EPROC_SLEADER: i32 = 0x02; // session leader
pub const EPROC_UNVEIL: i32 = 0x04; // has unveil settings
pub const EPROC_LKUNVEIL: i32 = 0x08; // unveil is locked
// Flags for chflags(2)
pub const UF_SETTABLE: ::c_uint = 0x0000ffff;
pub const UF_NODUMP: ::c_uint = 0x00000001;
pub const UF_IMMUTABLE: ::c_uint = 0x00000002;
pub const UF_APPEND: ::c_uint = 0x00000004;
pub const UF_OPAQUE: ::c_uint = 0x00000008;
pub const SF_SETTABLE: ::c_uint = 0xffff0000;
pub const SF_ARCHIVED: ::c_uint = 0x00010000;
pub const SF_IMMUTABLE: ::c_uint = 0x00020000;
pub const SF_APPEND: ::c_uint = 0x00040000;
const_fn! {
{const} fn _ALIGN(p: usize) -> usize {
(p + _ALIGNBYTES) & !_ALIGNBYTES

92
third_party/rust/libc/src/unix/haiku/mod.rs поставляемый
Просмотреть файл

@ -52,6 +52,9 @@ pub type Elf64_Xword = u64;
pub type ENTRY = entry;
pub type ACTION = ::c_int;
pub type posix_spawnattr_t = *mut ::c_void;
pub type posix_spawn_file_actions_t = *mut ::c_void;
#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum timezone {}
impl ::Copy for timezone {}
@ -1051,6 +1054,7 @@ pub const LOCK_EX: ::c_int = 0x02;
pub const LOCK_NB: ::c_int = 0x04;
pub const LOCK_UN: ::c_int = 0x08;
pub const MINSIGSTKSZ: ::size_t = 8192;
pub const SIGSTKSZ: ::size_t = 16384;
pub const IOV_MAX: ::c_int = 1024;
@ -1067,6 +1071,9 @@ pub const SA_NOMASK: ::c_int = SA_NODEFER;
pub const SA_STACK: ::c_int = SA_ONSTACK;
pub const SA_ONESHOT: ::c_int = SA_RESETHAND;
pub const SS_ONSTACK: ::c_int = 0x1;
pub const SS_DISABLE: ::c_int = 0x2;
pub const FD_SETSIZE: usize = 1024;
pub const RTLD_LOCAL: ::c_int = 0x0;
@ -1225,6 +1232,8 @@ pub const SO_PEERCRED: ::c_int = 0x4000000b;
pub const SCM_RIGHTS: ::c_int = 0x01;
pub const SOMAXCONN: ::c_int = 32;
pub const NI_MAXHOST: ::size_t = 1025;
pub const WNOHANG: ::c_int = 0x01;
@ -1234,6 +1243,12 @@ pub const WEXITED: ::c_int = 0x08;
pub const WSTOPPED: ::c_int = 0x10;
pub const WNOWAIT: ::c_int = 0x20;
// si_code values for SIGBUS signal
pub const BUS_ADRALN: ::c_int = 40;
pub const BUS_ADRERR: ::c_int = 41;
pub const BUS_OBJERR: ::c_int = 42;
// si_code values for SIGCHLD signal
pub const CLD_EXITED: ::c_int = 60;
pub const CLD_KILLED: ::c_int = 61;
pub const CLD_DUMPED: ::c_int = 62;
@ -1432,6 +1447,13 @@ pub const LOG_SERIAL: ::c_int = 16 << 12;
pub const LOG_PERROR: ::c_int = 32 << 12;
pub const LOG_NOWAIT: ::c_int = 64 << 12;
// spawn.h
pub const POSIX_SPAWN_RESETIDS: ::c_int = 0x01;
pub const POSIX_SPAWN_SETPGROUP: ::c_int = 0x02;
pub const POSIX_SPAWN_SETSIGDEF: ::c_int = 0x10;
pub const POSIX_SPAWN_SETSIGMASK: ::c_int = 0x20;
pub const POSIX_SPAWN_SETSID: ::c_int = 0x40;
const_fn! {
{const} fn CMSG_ALIGN(len: usize) -> usize {
len + ::mem::size_of::<usize>() - 1 & !(::mem::size_of::<usize>() - 1)
@ -1768,8 +1790,6 @@ extern "C" {
pub fn endgrent();
pub fn getgrent() -> *mut ::group;
pub fn setgrent();
pub fn setreuid(ruid: ::uid_t, euid: ::uid_t) -> ::c_int;
pub fn setregid(rgid: ::gid_t, egid: ::gid_t) -> ::c_int;
pub fn sigwait(set: *const sigset_t, sig: *mut ::c_int) -> ::c_int;
pub fn pthread_atfork(
prepare: ::Option<unsafe extern "C" fn()>,
@ -1884,6 +1904,74 @@ extern "C" {
pub fn brk(addr: *mut ::c_void) -> ::c_int;
pub fn sbrk(increment: ::intptr_t) -> *mut ::c_void;
pub fn posix_spawn(
pid: *mut ::pid_t,
path: *const ::c_char,
file_actions: *const ::posix_spawn_file_actions_t,
attrp: *const ::posix_spawnattr_t,
argv: *const *mut ::c_char,
envp: *const *mut ::c_char,
) -> ::c_int;
pub fn posix_spawnp(
pid: *mut ::pid_t,
file: *const ::c_char,
file_actions: *const ::posix_spawn_file_actions_t,
attrp: *const ::posix_spawnattr_t,
argv: *const *mut ::c_char,
envp: *const *mut ::c_char,
) -> ::c_int;
pub fn posix_spawn_file_actions_init(file_actions: *mut posix_spawn_file_actions_t) -> ::c_int;
pub fn posix_spawn_file_actions_destroy(
file_actions: *mut posix_spawn_file_actions_t,
) -> ::c_int;
pub fn posix_spawn_file_actions_addopen(
file_actions: *mut posix_spawn_file_actions_t,
fildes: ::c_int,
path: *const ::c_char,
oflag: ::c_int,
mode: ::mode_t,
) -> ::c_int;
pub fn posix_spawn_file_actions_addclose(
file_actions: *mut posix_spawn_file_actions_t,
fildes: ::c_int,
) -> ::c_int;
pub fn posix_spawn_file_actions_adddup2(
file_actions: *mut posix_spawn_file_actions_t,
fildes: ::c_int,
newfildes: ::c_int,
) -> ::c_int;
pub fn posix_spawnattr_init(attr: *mut posix_spawnattr_t) -> ::c_int;
pub fn posix_spawnattr_destroy(attr: *mut posix_spawnattr_t) -> ::c_int;
pub fn posix_spawnattr_getflags(
attr: *const posix_spawnattr_t,
_flags: *mut ::c_short,
) -> ::c_int;
pub fn posix_spawnattr_setflags(attr: *mut posix_spawnattr_t, flags: ::c_short) -> ::c_int;
pub fn posix_spawnattr_getpgroup(
attr: *const posix_spawnattr_t,
_pgroup: *mut ::pid_t,
) -> ::c_int;
pub fn posix_spawnattr_setpgroup(attr: *mut posix_spawnattr_t, pgroup: ::pid_t) -> ::c_int;
pub fn posix_spawnattr_getsigdefault(
attr: *const posix_spawnattr_t,
sigdefault: *mut ::sigset_t,
) -> ::c_int;
pub fn posix_spawnattr_setsigdefault(
attr: *mut posix_spawnattr_t,
sigdefault: *const ::sigset_t,
) -> ::c_int;
pub fn posix_spawnattr_getsigmask(
attr: *const posix_spawnattr_t,
_sigmask: *mut ::sigset_t,
) -> ::c_int;
pub fn posix_spawnattr_setsigmask(
attr: *mut posix_spawnattr_t,
sigmask: *const ::sigset_t,
) -> ::c_int;
}
#[link(name = "bsd")]

Просмотреть файл

@ -346,6 +346,9 @@ cfg_if! {
} else if #[cfg(target_arch = "aarch64")] {
mod aarch64;
pub use self::aarch64::*;
} else if #[cfg(target_arch = "riscv64")] {
mod riscv64;
pub use self::riscv64::*;
} else {
// Unknown target_arch
}

Просмотреть файл

@ -0,0 +1,7 @@
s_no_extra_traits! {
#[allow(missing_debug_implementations)]
#[repr(align(16))]
pub struct max_align_t {
priv_: [f32; 8]
}
}

Просмотреть файл

@ -0,0 +1,342 @@
pub type c_char = i8;
pub type wchar_t = u32;
pub type greg_t = i64;
pub type __u64 = ::c_ulonglong;
s! {
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
pub st_mode: ::c_uint,
pub st_nlink: ::c_uint,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
pub st_rdev: ::dev_t,
__pad1: ::c_ulong,
pub st_size: ::off64_t,
pub st_blksize: ::c_int,
__pad2: ::c_int,
pub st_blocks: ::c_long,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
pub st_mtime: ::time_t,
pub st_mtime_nsec: ::c_long,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
__unused4: ::c_uint,
__unused5: ::c_uint,
}
pub struct stat64 {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
pub st_mode: ::c_uint,
pub st_nlink: ::c_uint,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
pub st_rdev: ::dev_t,
__pad1: ::c_ulong,
pub st_size: ::off64_t,
pub st_blksize: ::c_int,
__pad2: ::c_int,
pub st_blocks: ::c_long,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
pub st_mtime: ::time_t,
pub st_mtime_nsec: ::c_long,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
__unused4: ::c_uint,
__unused5: ::c_uint,
}
}
pub const O_DIRECT: ::c_int = 0x40000;
pub const O_DIRECTORY: ::c_int = 0x200000;
pub const O_NOFOLLOW: ::c_int = 0x400000;
pub const O_LARGEFILE: ::c_int = 0x100000;
pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
// From NDK's asm/hwcap.h
pub const COMPAT_HWCAP_ISA_I: ::c_ulong = 1 << ('I' - 'A');
pub const COMPAT_HWCAP_ISA_M: ::c_ulong = 1 << ('M' - 'A');
pub const COMPAT_HWCAP_ISA_A: ::c_ulong = 1 << ('A' - 'A');
pub const COMPAT_HWCAP_ISA_F: ::c_ulong = 1 << ('F' - 'A');
pub const COMPAT_HWCAP_ISA_D: ::c_ulong = 1 << ('D' - 'A');
pub const COMPAT_HWCAP_ISA_C: ::c_ulong = 1 << ('C' - 'A');
pub const SYS_io_setup: ::c_long = 0;
pub const SYS_io_destroy: ::c_long = 1;
pub const SYS_io_submit: ::c_long = 2;
pub const SYS_io_cancel: ::c_long = 3;
pub const SYS_io_getevents: ::c_long = 4;
pub const SYS_setxattr: ::c_long = 5;
pub const SYS_lsetxattr: ::c_long = 6;
pub const SYS_fsetxattr: ::c_long = 7;
pub const SYS_getxattr: ::c_long = 8;
pub const SYS_lgetxattr: ::c_long = 9;
pub const SYS_fgetxattr: ::c_long = 10;
pub const SYS_listxattr: ::c_long = 11;
pub const SYS_llistxattr: ::c_long = 12;
pub const SYS_flistxattr: ::c_long = 13;
pub const SYS_removexattr: ::c_long = 14;
pub const SYS_lremovexattr: ::c_long = 15;
pub const SYS_fremovexattr: ::c_long = 16;
pub const SYS_getcwd: ::c_long = 17;
pub const SYS_lookup_dcookie: ::c_long = 18;
pub const SYS_eventfd2: ::c_long = 19;
pub const SYS_epoll_create1: ::c_long = 20;
pub const SYS_epoll_ctl: ::c_long = 21;
pub const SYS_epoll_pwait: ::c_long = 22;
pub const SYS_dup: ::c_long = 23;
pub const SYS_dup3: ::c_long = 24;
pub const SYS_inotify_init1: ::c_long = 26;
pub const SYS_inotify_add_watch: ::c_long = 27;
pub const SYS_inotify_rm_watch: ::c_long = 28;
pub const SYS_ioctl: ::c_long = 29;
pub const SYS_ioprio_set: ::c_long = 30;
pub const SYS_ioprio_get: ::c_long = 31;
pub const SYS_flock: ::c_long = 32;
pub const SYS_mknodat: ::c_long = 33;
pub const SYS_mkdirat: ::c_long = 34;
pub const SYS_unlinkat: ::c_long = 35;
pub const SYS_symlinkat: ::c_long = 36;
pub const SYS_linkat: ::c_long = 37;
pub const SYS_renameat: ::c_long = 38;
pub const SYS_umount2: ::c_long = 39;
pub const SYS_mount: ::c_long = 40;
pub const SYS_pivot_root: ::c_long = 41;
pub const SYS_nfsservctl: ::c_long = 42;
pub const SYS_fallocate: ::c_long = 47;
pub const SYS_faccessat: ::c_long = 48;
pub const SYS_chdir: ::c_long = 49;
pub const SYS_fchdir: ::c_long = 50;
pub const SYS_chroot: ::c_long = 51;
pub const SYS_fchmod: ::c_long = 52;
pub const SYS_fchmodat: ::c_long = 53;
pub const SYS_fchownat: ::c_long = 54;
pub const SYS_fchown: ::c_long = 55;
pub const SYS_openat: ::c_long = 56;
pub const SYS_close: ::c_long = 57;
pub const SYS_vhangup: ::c_long = 58;
pub const SYS_pipe2: ::c_long = 59;
pub const SYS_quotactl: ::c_long = 60;
pub const SYS_getdents64: ::c_long = 61;
pub const SYS_read: ::c_long = 63;
pub const SYS_write: ::c_long = 64;
pub const SYS_readv: ::c_long = 65;
pub const SYS_writev: ::c_long = 66;
pub const SYS_pread64: ::c_long = 67;
pub const SYS_pwrite64: ::c_long = 68;
pub const SYS_preadv: ::c_long = 69;
pub const SYS_pwritev: ::c_long = 70;
pub const SYS_pselect6: ::c_long = 72;
pub const SYS_ppoll: ::c_long = 73;
pub const SYS_signalfd4: ::c_long = 74;
pub const SYS_vmsplice: ::c_long = 75;
pub const SYS_splice: ::c_long = 76;
pub const SYS_tee: ::c_long = 77;
pub const SYS_readlinkat: ::c_long = 78;
pub const SYS_sync: ::c_long = 81;
pub const SYS_fsync: ::c_long = 82;
pub const SYS_fdatasync: ::c_long = 83;
pub const SYS_sync_file_range: ::c_long = 84;
pub const SYS_timerfd_create: ::c_long = 85;
pub const SYS_timerfd_settime: ::c_long = 86;
pub const SYS_timerfd_gettime: ::c_long = 87;
pub const SYS_utimensat: ::c_long = 88;
pub const SYS_acct: ::c_long = 89;
pub const SYS_capget: ::c_long = 90;
pub const SYS_capset: ::c_long = 91;
pub const SYS_personality: ::c_long = 92;
pub const SYS_exit: ::c_long = 93;
pub const SYS_exit_group: ::c_long = 94;
pub const SYS_waitid: ::c_long = 95;
pub const SYS_set_tid_address: ::c_long = 96;
pub const SYS_unshare: ::c_long = 97;
pub const SYS_futex: ::c_long = 98;
pub const SYS_set_robust_list: ::c_long = 99;
pub const SYS_get_robust_list: ::c_long = 100;
pub const SYS_nanosleep: ::c_long = 101;
pub const SYS_getitimer: ::c_long = 102;
pub const SYS_setitimer: ::c_long = 103;
pub const SYS_kexec_load: ::c_long = 104;
pub const SYS_init_module: ::c_long = 105;
pub const SYS_delete_module: ::c_long = 106;
pub const SYS_timer_create: ::c_long = 107;
pub const SYS_timer_gettime: ::c_long = 108;
pub const SYS_timer_getoverrun: ::c_long = 109;
pub const SYS_timer_settime: ::c_long = 110;
pub const SYS_timer_delete: ::c_long = 111;
pub const SYS_clock_settime: ::c_long = 112;
pub const SYS_clock_gettime: ::c_long = 113;
pub const SYS_clock_getres: ::c_long = 114;
pub const SYS_clock_nanosleep: ::c_long = 115;
pub const SYS_syslog: ::c_long = 116;
pub const SYS_ptrace: ::c_long = 117;
pub const SYS_sched_setparam: ::c_long = 118;
pub const SYS_sched_setscheduler: ::c_long = 119;
pub const SYS_sched_getscheduler: ::c_long = 120;
pub const SYS_sched_getparam: ::c_long = 121;
pub const SYS_sched_setaffinity: ::c_long = 122;
pub const SYS_sched_getaffinity: ::c_long = 123;
pub const SYS_sched_yield: ::c_long = 124;
pub const SYS_sched_get_priority_max: ::c_long = 125;
pub const SYS_sched_get_priority_min: ::c_long = 126;
pub const SYS_sched_rr_get_interval: ::c_long = 127;
pub const SYS_restart_syscall: ::c_long = 128;
pub const SYS_kill: ::c_long = 129;
pub const SYS_tkill: ::c_long = 130;
pub const SYS_tgkill: ::c_long = 131;
pub const SYS_sigaltstack: ::c_long = 132;
pub const SYS_rt_sigsuspend: ::c_long = 133;
pub const SYS_rt_sigaction: ::c_long = 134;
pub const SYS_rt_sigprocmask: ::c_long = 135;
pub const SYS_rt_sigpending: ::c_long = 136;
pub const SYS_rt_sigtimedwait: ::c_long = 137;
pub const SYS_rt_sigqueueinfo: ::c_long = 138;
pub const SYS_rt_sigreturn: ::c_long = 139;
pub const SYS_setpriority: ::c_long = 140;
pub const SYS_getpriority: ::c_long = 141;
pub const SYS_reboot: ::c_long = 142;
pub const SYS_setregid: ::c_long = 143;
pub const SYS_setgid: ::c_long = 144;
pub const SYS_setreuid: ::c_long = 145;
pub const SYS_setuid: ::c_long = 146;
pub const SYS_setresuid: ::c_long = 147;
pub const SYS_getresuid: ::c_long = 148;
pub const SYS_setresgid: ::c_long = 149;
pub const SYS_getresgid: ::c_long = 150;
pub const SYS_setfsuid: ::c_long = 151;
pub const SYS_setfsgid: ::c_long = 152;
pub const SYS_times: ::c_long = 153;
pub const SYS_setpgid: ::c_long = 154;
pub const SYS_getpgid: ::c_long = 155;
pub const SYS_getsid: ::c_long = 156;
pub const SYS_setsid: ::c_long = 157;
pub const SYS_getgroups: ::c_long = 158;
pub const SYS_setgroups: ::c_long = 159;
pub const SYS_uname: ::c_long = 160;
pub const SYS_sethostname: ::c_long = 161;
pub const SYS_setdomainname: ::c_long = 162;
pub const SYS_getrlimit: ::c_long = 163;
pub const SYS_setrlimit: ::c_long = 164;
pub const SYS_getrusage: ::c_long = 165;
pub const SYS_umask: ::c_long = 166;
pub const SYS_prctl: ::c_long = 167;
pub const SYS_getcpu: ::c_long = 168;
pub const SYS_gettimeofday: ::c_long = 169;
pub const SYS_settimeofday: ::c_long = 170;
pub const SYS_adjtimex: ::c_long = 171;
pub const SYS_getpid: ::c_long = 172;
pub const SYS_getppid: ::c_long = 173;
pub const SYS_getuid: ::c_long = 174;
pub const SYS_geteuid: ::c_long = 175;
pub const SYS_getgid: ::c_long = 176;
pub const SYS_getegid: ::c_long = 177;
pub const SYS_gettid: ::c_long = 178;
pub const SYS_sysinfo: ::c_long = 179;
pub const SYS_mq_open: ::c_long = 180;
pub const SYS_mq_unlink: ::c_long = 181;
pub const SYS_mq_timedsend: ::c_long = 182;
pub const SYS_mq_timedreceive: ::c_long = 183;
pub const SYS_mq_notify: ::c_long = 184;
pub const SYS_mq_getsetattr: ::c_long = 185;
pub const SYS_msgget: ::c_long = 186;
pub const SYS_msgctl: ::c_long = 187;
pub const SYS_msgrcv: ::c_long = 188;
pub const SYS_msgsnd: ::c_long = 189;
pub const SYS_semget: ::c_long = 190;
pub const SYS_semctl: ::c_long = 191;
pub const SYS_semtimedop: ::c_long = 192;
pub const SYS_semop: ::c_long = 193;
pub const SYS_shmget: ::c_long = 194;
pub const SYS_shmctl: ::c_long = 195;
pub const SYS_shmat: ::c_long = 196;
pub const SYS_shmdt: ::c_long = 197;
pub const SYS_socket: ::c_long = 198;
pub const SYS_socketpair: ::c_long = 199;
pub const SYS_bind: ::c_long = 200;
pub const SYS_listen: ::c_long = 201;
pub const SYS_accept: ::c_long = 202;
pub const SYS_connect: ::c_long = 203;
pub const SYS_getsockname: ::c_long = 204;
pub const SYS_getpeername: ::c_long = 205;
pub const SYS_sendto: ::c_long = 206;
pub const SYS_recvfrom: ::c_long = 207;
pub const SYS_setsockopt: ::c_long = 208;
pub const SYS_getsockopt: ::c_long = 209;
pub const SYS_shutdown: ::c_long = 210;
pub const SYS_sendmsg: ::c_long = 211;
pub const SYS_recvmsg: ::c_long = 212;
pub const SYS_readahead: ::c_long = 213;
pub const SYS_brk: ::c_long = 214;
pub const SYS_munmap: ::c_long = 215;
pub const SYS_mremap: ::c_long = 216;
pub const SYS_add_key: ::c_long = 217;
pub const SYS_request_key: ::c_long = 218;
pub const SYS_keyctl: ::c_long = 219;
pub const SYS_clone: ::c_long = 220;
pub const SYS_execve: ::c_long = 221;
pub const SYS_swapon: ::c_long = 224;
pub const SYS_swapoff: ::c_long = 225;
pub const SYS_mprotect: ::c_long = 226;
pub const SYS_msync: ::c_long = 227;
pub const SYS_mlock: ::c_long = 228;
pub const SYS_munlock: ::c_long = 229;
pub const SYS_mlockall: ::c_long = 230;
pub const SYS_munlockall: ::c_long = 231;
pub const SYS_mincore: ::c_long = 232;
pub const SYS_madvise: ::c_long = 233;
pub const SYS_remap_file_pages: ::c_long = 234;
pub const SYS_mbind: ::c_long = 235;
pub const SYS_get_mempolicy: ::c_long = 236;
pub const SYS_set_mempolicy: ::c_long = 237;
pub const SYS_migrate_pages: ::c_long = 238;
pub const SYS_move_pages: ::c_long = 239;
pub const SYS_rt_tgsigqueueinfo: ::c_long = 240;
pub const SYS_perf_event_open: ::c_long = 241;
pub const SYS_accept4: ::c_long = 242;
pub const SYS_recvmmsg: ::c_long = 243;
pub const SYS_arch_specific_syscall: ::c_long = 244;
pub const SYS_wait4: ::c_long = 260;
pub const SYS_prlimit64: ::c_long = 261;
pub const SYS_fanotify_init: ::c_long = 262;
pub const SYS_fanotify_mark: ::c_long = 263;
pub const SYS_name_to_handle_at: ::c_long = 264;
pub const SYS_open_by_handle_at: ::c_long = 265;
pub const SYS_clock_adjtime: ::c_long = 266;
pub const SYS_syncfs: ::c_long = 267;
pub const SYS_setns: ::c_long = 268;
pub const SYS_sendmmsg: ::c_long = 269;
pub const SYS_process_vm_readv: ::c_long = 270;
pub const SYS_process_vm_writev: ::c_long = 271;
pub const SYS_kcmp: ::c_long = 272;
pub const SYS_finit_module: ::c_long = 273;
pub const SYS_sched_setattr: ::c_long = 274;
pub const SYS_sched_getattr: ::c_long = 275;
pub const SYS_renameat2: ::c_long = 276;
pub const SYS_seccomp: ::c_long = 277;
pub const SYS_getrandom: ::c_long = 278;
pub const SYS_memfd_create: ::c_long = 279;
pub const SYS_bpf: ::c_long = 280;
pub const SYS_execveat: ::c_long = 281;
pub const SYS_userfaultfd: ::c_long = 282;
pub const SYS_membarrier: ::c_long = 283;
pub const SYS_mlock2: ::c_long = 284;
pub const SYS_copy_file_range: ::c_long = 285;
pub const SYS_preadv2: ::c_long = 286;
pub const SYS_pwritev2: ::c_long = 287;
pub const SYS_pkey_mprotect: ::c_long = 288;
pub const SYS_pkey_alloc: ::c_long = 289;
pub const SYS_pkey_free: ::c_long = 290;
pub const SYS_syscalls: ::c_long = 436;
cfg_if! {
if #[cfg(libc_align)] {
mod align;
pub use self::align::*;
}
}

Просмотреть файл

@ -350,6 +350,7 @@ cfg_if! {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("user_fpregs_struct")
.field("cwd", &self.cwd)
.field("swd", &self.swd)
.field("ftw", &self.ftw)
.field("fop", &self.fop)
.field("rip", &self.rip)
@ -366,6 +367,7 @@ cfg_if! {
impl ::hash::Hash for user_fpregs_struct {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
self.cwd.hash(state);
self.swd.hash(state);
self.ftw.hash(state);
self.fop.hash(state);
self.rip.hash(state);

Просмотреть файл

@ -2489,6 +2489,8 @@ pub const AF_VSOCK: ::c_int = 40;
pub const PF_NFC: ::c_int = AF_NFC;
pub const PF_VSOCK: ::c_int = AF_VSOCK;
pub const SOMAXCONN: ::c_int = 128;
// sys/system_properties.h
pub const PROP_VALUE_MAX: ::c_int = 92;
pub const PROP_NAME_MAX: ::c_int = 32;
@ -2496,6 +2498,216 @@ pub const PROP_NAME_MAX: ::c_int = 32;
// sys/prctl.h
pub const PR_SET_VMA: ::c_int = 0x53564d41;
pub const PR_SET_VMA_ANON_NAME: ::c_int = 0;
pub const PR_SET_NO_NEW_PRIVS: ::c_int = 38;
pub const PR_GET_NO_NEW_PRIVS: ::c_int = 39;
pub const PR_GET_SECCOMP: ::c_int = 21;
pub const PR_SET_SECCOMP: ::c_int = 22;
pub const PR_GET_TIMING: ::c_int = 13;
pub const PR_SET_TIMING: ::c_int = 14;
pub const PR_TIMING_STATISTICAL: ::c_int = 0;
pub const PR_TIMING_TIMESTAMP: ::c_int = 1;
// linux/if_addr.h
pub const IFA_UNSPEC: ::c_ushort = 0;
pub const IFA_ADDRESS: ::c_ushort = 1;
pub const IFA_LOCAL: ::c_ushort = 2;
pub const IFA_LABEL: ::c_ushort = 3;
pub const IFA_BROADCAST: ::c_ushort = 4;
pub const IFA_ANYCAST: ::c_ushort = 5;
pub const IFA_CACHEINFO: ::c_ushort = 6;
pub const IFA_MULTICAST: ::c_ushort = 7;
pub const IFA_F_SECONDARY: u32 = 0x01;
pub const IFA_F_TEMPORARY: u32 = 0x01;
pub const IFA_F_NODAD: u32 = 0x02;
pub const IFA_F_OPTIMISTIC: u32 = 0x04;
pub const IFA_F_DADFAILED: u32 = 0x08;
pub const IFA_F_HOMEADDRESS: u32 = 0x10;
pub const IFA_F_DEPRECATED: u32 = 0x20;
pub const IFA_F_TENTATIVE: u32 = 0x40;
pub const IFA_F_PERMANENT: u32 = 0x80;
// linux/if_link.h
pub const IFLA_UNSPEC: ::c_ushort = 0;
pub const IFLA_ADDRESS: ::c_ushort = 1;
pub const IFLA_BROADCAST: ::c_ushort = 2;
pub const IFLA_IFNAME: ::c_ushort = 3;
pub const IFLA_MTU: ::c_ushort = 4;
pub const IFLA_LINK: ::c_ushort = 5;
pub const IFLA_QDISC: ::c_ushort = 6;
pub const IFLA_STATS: ::c_ushort = 7;
pub const IFLA_COST: ::c_ushort = 8;
pub const IFLA_PRIORITY: ::c_ushort = 9;
pub const IFLA_MASTER: ::c_ushort = 10;
pub const IFLA_WIRELESS: ::c_ushort = 11;
pub const IFLA_PROTINFO: ::c_ushort = 12;
pub const IFLA_TXQLEN: ::c_ushort = 13;
pub const IFLA_MAP: ::c_ushort = 14;
pub const IFLA_WEIGHT: ::c_ushort = 15;
pub const IFLA_OPERSTATE: ::c_ushort = 16;
pub const IFLA_LINKMODE: ::c_ushort = 17;
pub const IFLA_LINKINFO: ::c_ushort = 18;
pub const IFLA_NET_NS_PID: ::c_ushort = 19;
pub const IFLA_IFALIAS: ::c_ushort = 20;
pub const IFLA_NUM_VF: ::c_ushort = 21;
pub const IFLA_VFINFO_LIST: ::c_ushort = 22;
pub const IFLA_STATS64: ::c_ushort = 23;
pub const IFLA_VF_PORTS: ::c_ushort = 24;
pub const IFLA_PORT_SELF: ::c_ushort = 25;
pub const IFLA_AF_SPEC: ::c_ushort = 26;
pub const IFLA_GROUP: ::c_ushort = 27;
pub const IFLA_NET_NS_FD: ::c_ushort = 28;
pub const IFLA_EXT_MASK: ::c_ushort = 29;
pub const IFLA_PROMISCUITY: ::c_ushort = 30;
pub const IFLA_NUM_TX_QUEUES: ::c_ushort = 31;
pub const IFLA_NUM_RX_QUEUES: ::c_ushort = 32;
pub const IFLA_CARRIER: ::c_ushort = 33;
pub const IFLA_PHYS_PORT_ID: ::c_ushort = 34;
pub const IFLA_CARRIER_CHANGES: ::c_ushort = 35;
pub const IFLA_PHYS_SWITCH_ID: ::c_ushort = 36;
pub const IFLA_LINK_NETNSID: ::c_ushort = 37;
pub const IFLA_PHYS_PORT_NAME: ::c_ushort = 38;
pub const IFLA_PROTO_DOWN: ::c_ushort = 39;
pub const IFLA_GSO_MAX_SEGS: ::c_ushort = 40;
pub const IFLA_GSO_MAX_SIZE: ::c_ushort = 41;
pub const IFLA_PAD: ::c_ushort = 42;
pub const IFLA_XDP: ::c_ushort = 43;
pub const IFLA_EVENT: ::c_ushort = 44;
pub const IFLA_NEW_NETNSID: ::c_ushort = 45;
pub const IFLA_IF_NETNSID: ::c_ushort = 46;
pub const IFLA_TARGET_NETNSID: ::c_ushort = IFLA_IF_NETNSID;
pub const IFLA_CARRIER_UP_COUNT: ::c_ushort = 47;
pub const IFLA_CARRIER_DOWN_COUNT: ::c_ushort = 48;
pub const IFLA_NEW_IFINDEX: ::c_ushort = 49;
pub const IFLA_MIN_MTU: ::c_ushort = 50;
pub const IFLA_MAX_MTU: ::c_ushort = 51;
pub const IFLA_INFO_UNSPEC: ::c_ushort = 0;
pub const IFLA_INFO_KIND: ::c_ushort = 1;
pub const IFLA_INFO_DATA: ::c_ushort = 2;
pub const IFLA_INFO_XSTATS: ::c_ushort = 3;
pub const IFLA_INFO_SLAVE_KIND: ::c_ushort = 4;
pub const IFLA_INFO_SLAVE_DATA: ::c_ushort = 5;
// linux/rtnetlink.h
pub const TCA_UNSPEC: ::c_ushort = 0;
pub const TCA_KIND: ::c_ushort = 1;
pub const TCA_OPTIONS: ::c_ushort = 2;
pub const TCA_STATS: ::c_ushort = 3;
pub const TCA_XSTATS: ::c_ushort = 4;
pub const TCA_RATE: ::c_ushort = 5;
pub const TCA_FCNT: ::c_ushort = 6;
pub const TCA_STATS2: ::c_ushort = 7;
pub const TCA_STAB: ::c_ushort = 8;
pub const RTM_NEWLINK: u16 = 16;
pub const RTM_DELLINK: u16 = 17;
pub const RTM_GETLINK: u16 = 18;
pub const RTM_SETLINK: u16 = 19;
pub const RTM_NEWADDR: u16 = 20;
pub const RTM_DELADDR: u16 = 21;
pub const RTM_GETADDR: u16 = 22;
pub const RTM_NEWROUTE: u16 = 24;
pub const RTM_DELROUTE: u16 = 25;
pub const RTM_GETROUTE: u16 = 26;
pub const RTM_NEWNEIGH: u16 = 28;
pub const RTM_DELNEIGH: u16 = 29;
pub const RTM_GETNEIGH: u16 = 30;
pub const RTM_NEWRULE: u16 = 32;
pub const RTM_DELRULE: u16 = 33;
pub const RTM_GETRULE: u16 = 34;
pub const RTM_NEWQDISC: u16 = 36;
pub const RTM_DELQDISC: u16 = 37;
pub const RTM_GETQDISC: u16 = 38;
pub const RTM_NEWTCLASS: u16 = 40;
pub const RTM_DELTCLASS: u16 = 41;
pub const RTM_GETTCLASS: u16 = 42;
pub const RTM_NEWTFILTER: u16 = 44;
pub const RTM_DELTFILTER: u16 = 45;
pub const RTM_GETTFILTER: u16 = 46;
pub const RTM_NEWACTION: u16 = 48;
pub const RTM_DELACTION: u16 = 49;
pub const RTM_GETACTION: u16 = 50;
pub const RTM_NEWPREFIX: u16 = 52;
pub const RTM_GETMULTICAST: u16 = 58;
pub const RTM_GETANYCAST: u16 = 62;
pub const RTM_NEWNEIGHTBL: u16 = 64;
pub const RTM_GETNEIGHTBL: u16 = 66;
pub const RTM_SETNEIGHTBL: u16 = 67;
pub const RTM_NEWNDUSEROPT: u16 = 68;
pub const RTM_NEWADDRLABEL: u16 = 72;
pub const RTM_DELADDRLABEL: u16 = 73;
pub const RTM_GETADDRLABEL: u16 = 74;
pub const RTM_GETDCB: u16 = 78;
pub const RTM_SETDCB: u16 = 79;
pub const RTM_NEWNETCONF: u16 = 80;
pub const RTM_GETNETCONF: u16 = 82;
pub const RTM_NEWMDB: u16 = 84;
pub const RTM_DELMDB: u16 = 85;
pub const RTM_GETMDB: u16 = 86;
pub const RTM_NEWNSID: u16 = 88;
pub const RTM_DELNSID: u16 = 89;
pub const RTM_GETNSID: u16 = 90;
pub const RTM_F_NOTIFY: ::c_uint = 0x100;
pub const RTM_F_CLONED: ::c_uint = 0x200;
pub const RTM_F_EQUALIZE: ::c_uint = 0x400;
pub const RTM_F_PREFIX: ::c_uint = 0x800;
pub const RTA_UNSPEC: ::c_ushort = 0;
pub const RTA_DST: ::c_ushort = 1;
pub const RTA_SRC: ::c_ushort = 2;
pub const RTA_IIF: ::c_ushort = 3;
pub const RTA_OIF: ::c_ushort = 4;
pub const RTA_GATEWAY: ::c_ushort = 5;
pub const RTA_PRIORITY: ::c_ushort = 6;
pub const RTA_PREFSRC: ::c_ushort = 7;
pub const RTA_METRICS: ::c_ushort = 8;
pub const RTA_MULTIPATH: ::c_ushort = 9;
pub const RTA_PROTOINFO: ::c_ushort = 10; // No longer used
pub const RTA_FLOW: ::c_ushort = 11;
pub const RTA_CACHEINFO: ::c_ushort = 12;
pub const RTA_SESSION: ::c_ushort = 13; // No longer used
pub const RTA_MP_ALGO: ::c_ushort = 14; // No longer used
pub const RTA_TABLE: ::c_ushort = 15;
pub const RTA_MARK: ::c_ushort = 16;
pub const RTA_MFC_STATS: ::c_ushort = 17;
pub const RTN_UNSPEC: ::c_uchar = 0;
pub const RTN_UNICAST: ::c_uchar = 1;
pub const RTN_LOCAL: ::c_uchar = 2;
pub const RTN_BROADCAST: ::c_uchar = 3;
pub const RTN_ANYCAST: ::c_uchar = 4;
pub const RTN_MULTICAST: ::c_uchar = 5;
pub const RTN_BLACKHOLE: ::c_uchar = 6;
pub const RTN_UNREACHABLE: ::c_uchar = 7;
pub const RTN_PROHIBIT: ::c_uchar = 8;
pub const RTN_THROW: ::c_uchar = 9;
pub const RTN_NAT: ::c_uchar = 10;
pub const RTN_XRESOLVE: ::c_uchar = 11;
pub const RTPROT_UNSPEC: ::c_uchar = 0;
pub const RTPROT_REDIRECT: ::c_uchar = 1;
pub const RTPROT_KERNEL: ::c_uchar = 2;
pub const RTPROT_BOOT: ::c_uchar = 3;
pub const RTPROT_STATIC: ::c_uchar = 4;
pub const RT_SCOPE_UNIVERSE: ::c_uchar = 0;
pub const RT_SCOPE_SITE: ::c_uchar = 200;
pub const RT_SCOPE_LINK: ::c_uchar = 253;
pub const RT_SCOPE_HOST: ::c_uchar = 254;
pub const RT_SCOPE_NOWHERE: ::c_uchar = 255;
pub const RT_TABLE_UNSPEC: ::c_uchar = 0;
pub const RT_TABLE_COMPAT: ::c_uchar = 252;
pub const RT_TABLE_DEFAULT: ::c_uchar = 253;
pub const RT_TABLE_MAIN: ::c_uchar = 254;
pub const RT_TABLE_LOCAL: ::c_uchar = 255;
pub const RTMSG_NEWDEVICE: u32 = 0x11;
pub const RTMSG_DELDEVICE: u32 = 0x12;
pub const RTMSG_NEWROUTE: u32 = 0x21;
pub const RTMSG_DELROUTE: u32 = 0x22;
f! {
pub fn CMSG_NXTHDR(mhdr: *const msghdr,

Просмотреть файл

@ -1669,6 +1669,8 @@ pub const PRIO_PROCESS: ::c_int = 0;
pub const PRIO_PGRP: ::c_int = 1;
pub const PRIO_USER: ::c_int = 2;
pub const SOMAXCONN: ::c_int = 128;
f! {
pub fn CMSG_NXTHDR(mhdr: *const msghdr,
cmsg: *const cmsghdr) -> *mut cmsghdr {

Просмотреть файл

@ -26,4 +26,26 @@ s! {
// auto-derive traits like Debug
__reserved: [[u64; 32]; 16],
}
#[repr(align(16))]
pub struct user_fpsimd_struct {
pub vregs: [[u64; 2]; 32],
pub fpsr: ::c_uint,
pub fpcr: ::c_uint,
}
#[repr(align(8))]
pub struct clone_args {
pub flags: ::c_ulonglong,
pub pidfd: ::c_ulonglong,
pub child_tid: ::c_ulonglong,
pub parent_tid: ::c_ulonglong,
pub exit_signal: ::c_ulonglong,
pub stack: ::c_ulonglong,
pub stack_size: ::c_ulonglong,
pub tls: ::c_ulonglong,
pub set_tid: ::c_ulonglong,
pub set_tid_size: ::c_ulonglong,
pub cgroup: ::c_ulonglong,
}
}

Просмотреть файл

@ -573,6 +573,22 @@ pub const HWCAP_PACG: ::c_ulong = 1 << 31;
//pub const HWCAP2_SVESM4: ::c_ulong = 1 << 6;
//pub const HWCAP2_FLAGM2: ::c_ulong = 1 << 7;
//pub const HWCAP2_FRINT: ::c_ulong = 1 << 8;
//pub const HWCAP2_MTE: ::c_ulong = 1 << 18;
// linux/prctl.h
pub const PR_PAC_RESET_KEYS: ::c_int = 54;
pub const PR_SET_TAGGED_ADDR_CTRL: ::c_int = 55;
pub const PR_GET_TAGGED_ADDR_CTRL: ::c_int = 56;
pub const PR_PAC_SET_ENABLED_KEYS: ::c_int = 60;
pub const PR_PAC_GET_ENABLED_KEYS: ::c_int = 61;
pub const PR_TAGGED_ADDR_ENABLE: ::c_ulong = 1;
pub const PR_PAC_APIAKEY: ::c_ulong = 1 << 0;
pub const PR_PAC_APIBKEY: ::c_ulong = 1 << 1;
pub const PR_PAC_APDAKEY: ::c_ulong = 1 << 2;
pub const PR_PAC_APDBKEY: ::c_ulong = 1 << 3;
pub const PR_PAC_APGAKEY: ::c_ulong = 1 << 4;
// Syscall table
pub const SYS_io_setup: ::c_long = 0;

Просмотреть файл

@ -5,3 +5,20 @@ s_no_extra_traits! {
priv_: [f64; 4]
}
}
s! {
#[repr(align(8))]
pub struct clone_args {
pub flags: ::c_ulonglong,
pub pidfd: ::c_ulonglong,
pub child_tid: ::c_ulonglong,
pub parent_tid: ::c_ulonglong,
pub exit_signal: ::c_ulonglong,
pub stack: ::c_ulonglong,
pub stack_size: ::c_ulonglong,
pub tls: ::c_ulonglong,
pub set_tid: ::c_ulonglong,
pub set_tid_size: ::c_ulonglong,
pub cgroup: ::c_ulonglong,
}
}

Просмотреть файл

@ -626,6 +626,19 @@ pub const PTRACE_PEEKSIGINFO_SHARED: ::c_uint = 1;
pub const PTRACE_SYSEMU: ::c_uint = 31;
pub const PTRACE_SYSEMU_SINGLESTEP: ::c_uint = 32;
pub const PR_GET_SPECULATION_CTRL: ::c_int = 52;
pub const PR_SET_SPECULATION_CTRL: ::c_int = 53;
pub const PR_SPEC_NOT_AFFECTED: ::c_uint = 0;
pub const PR_SPEC_PRCTL: ::c_uint = 1 << 0;
pub const PR_SPEC_ENABLE: ::c_uint = 1 << 1;
pub const PR_SPEC_DISABLE: ::c_uint = 1 << 2;
pub const PR_SPEC_FORCE_DISABLE: ::c_uint = 1 << 3;
pub const PR_SPEC_DISABLE_NOEXEC: ::c_uint = 1 << 4;
pub const PR_SPEC_STORE_BYPASS: ::c_int = 0;
pub const PR_SPEC_INDIRECT_BRANCH: ::c_int = 1;
// FIXME: perharps for later
//pub const PR_SPEC_L1D_FLUSH: ::c_int = 2;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;

Просмотреть файл

@ -1025,6 +1025,8 @@ pub const STATX_ATTR_NODUMP: ::c_int = 0x0040;
pub const STATX_ATTR_ENCRYPTED: ::c_int = 0x0800;
pub const STATX_ATTR_AUTOMOUNT: ::c_int = 0x1000;
pub const SOMAXCONN: ::c_int = 4096;
//sys/timex.h
pub const ADJ_OFFSET: ::c_uint = 0x0001;
pub const ADJ_FREQUENCY: ::c_uint = 0x0002;
@ -1289,6 +1291,7 @@ extern "C" {
attr: *mut ::pthread_rwlockattr_t,
val: ::c_int,
) -> ::c_int;
pub fn pthread_sigqueue(thread: ::pthread_t, sig: ::c_int, value: ::sigval) -> ::c_int;
pub fn mallinfo() -> ::mallinfo;
pub fn mallinfo2() -> ::mallinfo2;
pub fn malloc_info(options: ::c_int, stream: *mut ::FILE) -> ::c_int;
@ -1324,6 +1327,11 @@ extern "C" {
pub fn malloc_trim(__pad: ::size_t) -> ::c_int;
}
extern "C" {
pub fn gnu_get_libc_release() -> *const ::c_char;
pub fn gnu_get_libc_version() -> *const ::c_char;
}
cfg_if! {
if #[cfg(any(target_arch = "x86",
target_arch = "arm",

Просмотреть файл

@ -1565,6 +1565,7 @@ pub const MSG_INFO: ::c_int = 12;
pub const MSG_NOERROR: ::c_int = 0o10000;
pub const MSG_EXCEPT: ::c_int = 0o20000;
pub const MSG_ZEROCOPY: ::c_int = 0x4000000;
pub const SHM_R: ::c_int = 0o400;
pub const SHM_W: ::c_int = 0o200;
@ -1810,6 +1811,7 @@ pub const ITIMER_PROF: ::c_int = 2;
pub const TFD_CLOEXEC: ::c_int = O_CLOEXEC;
pub const TFD_NONBLOCK: ::c_int = O_NONBLOCK;
pub const TFD_TIMER_ABSTIME: ::c_int = 1;
pub const TFD_TIMER_CANCEL_ON_SET: ::c_int = 2;
pub const _POSIX_VDISABLE: ::cc_t = 0;
@ -1841,6 +1843,17 @@ pub const IPV6_FLOWINFO_PRIORITY: ::c_int = 0x0ff00000;
pub const IPV6_RTHDR_LOOSE: ::c_int = 0;
pub const IPV6_RTHDR_STRICT: ::c_int = 1;
// SO_MEMINFO offsets
pub const SK_MEMINFO_RMEM_ALLOC: ::c_int = 0;
pub const SK_MEMINFO_RCVBUF: ::c_int = 1;
pub const SK_MEMINFO_WMEM_ALLOC: ::c_int = 2;
pub const SK_MEMINFO_SNDBUF: ::c_int = 3;
pub const SK_MEMINFO_FWD_ALLOC: ::c_int = 4;
pub const SK_MEMINFO_WMEM_QUEUED: ::c_int = 5;
pub const SK_MEMINFO_OPTMEM: ::c_int = 6;
pub const SK_MEMINFO_BACKLOG: ::c_int = 7;
pub const SK_MEMINFO_DROPS: ::c_int = 8;
pub const IUTF8: ::tcflag_t = 0x00004000;
#[cfg(not(all(target_env = "uclibc", target_arch = "mips")))]
pub const CMSPAR: ::tcflag_t = 0o10000000000;
@ -3061,6 +3074,7 @@ pub const FUTEX_WAIT_BITSET: ::c_int = 9;
pub const FUTEX_WAKE_BITSET: ::c_int = 10;
pub const FUTEX_WAIT_REQUEUE_PI: ::c_int = 11;
pub const FUTEX_CMP_REQUEUE_PI: ::c_int = 12;
pub const FUTEX_LOCK_PI2: ::c_int = 13;
pub const FUTEX_PRIVATE_FLAG: ::c_int = 128;
pub const FUTEX_CLOCK_REALTIME: ::c_int = 256;

Просмотреть файл

@ -24,4 +24,19 @@ s! {
pub pstate: ::c_ulong,
__reserved: [[u64; 32]; 16],
}
#[repr(align(8))]
pub struct clone_args {
pub flags: ::c_ulonglong,
pub pidfd: ::c_ulonglong,
pub child_tid: ::c_ulonglong,
pub parent_tid: ::c_ulonglong,
pub exit_signal: ::c_ulonglong,
pub stack: ::c_ulonglong,
pub stack_size: ::c_ulonglong,
pub tls: ::c_ulonglong,
pub set_tid: ::c_ulonglong,
pub set_tid_size: ::c_ulonglong,
pub cgroup: ::c_ulonglong,
}
}

Просмотреть файл

@ -458,7 +458,7 @@ pub const O_SYNC: ::c_int = 0x4010;
pub const O_RSYNC: ::c_int = 0x4010;
pub const O_DSYNC: ::c_int = 0x10;
pub const O_ASYNC: ::c_int = 0x1000;
pub const O_LARGEFILE: ::c_int = 0;
pub const O_LARGEFILE: ::c_int = 0x2000;
pub const EDEADLK: ::c_int = 45;
pub const ENAMETOOLONG: ::c_int = 78;

Просмотреть файл

@ -221,6 +221,7 @@ pub const ENOPROTOOPT: ::c_int = 92;
pub const EPROTONOSUPPORT: ::c_int = 93;
pub const ESOCKTNOSUPPORT: ::c_int = 94;
pub const EOPNOTSUPP: ::c_int = 95;
pub const ENOTSUP: ::c_int = EOPNOTSUPP;
pub const EPFNOSUPPORT: ::c_int = 96;
pub const EAFNOSUPPORT: ::c_int = 97;
pub const ENETDOWN: ::c_int = 100;

Просмотреть файл

@ -4,4 +4,22 @@ s_no_extra_traits! {
pub struct max_align_t {
priv_: [f64; 4]
}
}
s! {
#[repr(align(8))]
pub struct clone_args {
pub flags: ::c_ulonglong,
pub pidfd: ::c_ulonglong,
pub child_tid: ::c_ulonglong,
pub parent_tid: ::c_ulonglong,
pub exit_signal: ::c_ulonglong,
pub stack: ::c_ulonglong,
pub stack_size: ::c_ulonglong,
pub tls: ::c_ulonglong,
pub set_tid: ::c_ulonglong,
pub set_tid_size: ::c_ulonglong,
pub cgroup: ::c_ulonglong,
}
}

Просмотреть файл

@ -529,6 +529,8 @@ pub const MAP_ANONYMOUS: ::c_int = MAP_ANON;
pub const SOCK_DCCP: ::c_int = 6;
pub const SOCK_PACKET: ::c_int = 10;
pub const SOMAXCONN: ::c_int = 128;
#[deprecated(since = "0.2.55", note = "Use SIGSYS instead")]
pub const SIGUNUSED: ::c_int = ::SIGSYS;

Просмотреть файл

@ -235,6 +235,8 @@ pub const PRIO_PROCESS: ::c_int = 0;
pub const PRIO_PGRP: ::c_int = 1;
pub const PRIO_USER: ::c_int = 2;
pub const SOMAXCONN: ::c_int = 128;
pub const ST_RELATIME: ::c_ulong = 4096;
pub const AF_NFC: ::c_int = PF_NFC;

Просмотреть файл

@ -759,8 +759,6 @@ pub const PF_IEEE802154: ::c_int = AF_IEEE802154;
pub const PF_CAIF: ::c_int = AF_CAIF;
pub const PF_ALG: ::c_int = AF_ALG;
pub const SOMAXCONN: ::c_int = 128;
pub const MSG_OOB: ::c_int = 1;
pub const MSG_PEEK: ::c_int = 2;
pub const MSG_DONTROUTE: ::c_int = 4;
@ -1213,6 +1211,15 @@ pub const PIPE_BUF: usize = 4096;
pub const SI_LOAD_SHIFT: ::c_uint = 16;
// si_code values for SIGBUS signal
pub const BUS_ADRALN: ::c_int = 1;
pub const BUS_ADRERR: ::c_int = 2;
pub const BUS_OBJERR: ::c_int = 3;
// Linux-specific si_code values for SIGBUS signal
pub const BUS_MCEERR_AR: ::c_int = 4;
pub const BUS_MCEERR_AO: ::c_int = 5;
// si_code values for SIGCHLD signal
pub const CLD_EXITED: ::c_int = 1;
pub const CLD_KILLED: ::c_int = 2;
pub const CLD_DUMPED: ::c_int = 3;
@ -1726,8 +1733,6 @@ extern "C" {
pub fn clearenv() -> ::c_int;
pub fn waitid(idtype: idtype_t, id: id_t, infop: *mut ::siginfo_t, options: ::c_int)
-> ::c_int;
pub fn setreuid(ruid: ::uid_t, euid: ::uid_t) -> ::c_int;
pub fn setregid(rgid: ::gid_t, egid: ::gid_t) -> ::c_int;
pub fn getresuid(ruid: *mut ::uid_t, euid: *mut ::uid_t, suid: *mut ::uid_t) -> ::c_int;
pub fn getresgid(rgid: *mut ::gid_t, egid: *mut ::gid_t, sgid: *mut ::gid_t) -> ::c_int;
pub fn acct(filename: *const ::c_char) -> ::c_int;

16
third_party/rust/libc/src/unix/mod.rs поставляемый
Просмотреть файл

@ -346,13 +346,13 @@ cfg_if! {
} else if #[cfg(target_os = "emscripten")] {
#[link(name = "c")]
extern {}
} else if #[cfg(all(target_os = "netbsd",
feature = "rustc-dep-of-std",
target_vendor = "rumprun"))] {
// Since we don't use -nodefaultlibs on Rumprun, libc is always pulled
// in automatically by the linker. We avoid passing it explicitly, as it
// causes some versions of binutils to crash with an assertion failure.
#[link(name = "m")]
} else if #[cfg(all(target_os = "android", feature = "rustc-dep-of-std"))] {
#[link(name = "c", kind = "static", modifiers = "-bundle",
cfg(target_feature = "crt-static"))]
#[link(name = "m", kind = "static", modifiers = "-bundle",
cfg(target_feature = "crt-static"))]
#[link(name = "m", cfg(not(target_feature = "crt-static")))]
#[link(name = "c", cfg(not(target_feature = "crt-static")))]
extern {}
} else if #[cfg(any(target_os = "macos",
target_os = "ios",
@ -901,6 +901,8 @@ extern "C" {
pub fn setpgid(pid: pid_t, pgid: pid_t) -> ::c_int;
pub fn setsid() -> pid_t;
pub fn setuid(uid: uid_t) -> ::c_int;
pub fn setreuid(ruid: uid_t, euid: uid_t) -> ::c_int;
pub fn setregid(rgid: gid_t, egid: gid_t) -> ::c_int;
#[cfg_attr(
all(target_os = "macos", target_arch = "x86"),
link_name = "sleep$UNIX2003"

Просмотреть файл

@ -83,6 +83,9 @@ pub const MSG_DONTROUTE: ::c_int = 0x4;
pub const MSG_WAITALL: ::c_int = 0x02;
pub const MSG_MORE: ::c_int = 0x10;
pub const MSG_NOSIGNAL: ::c_int = 0x20;
pub const MSG_TRUNC: ::c_int = 0x04;
pub const MSG_CTRUNC: ::c_int = 0x08;
pub const MSG_EOR: ::c_int = 0x08;
pub const PTHREAD_STACK_MIN: ::size_t = 768;
@ -100,6 +103,8 @@ extern "C" {
pub fn sendmsg(s: ::c_int, msg: *const ::msghdr, flags: ::c_int) -> ::ssize_t;
#[link_name = "lwip_recvmsg"]
pub fn recvmsg(s: ::c_int, msg: *mut ::msghdr, flags: ::c_int) -> ::ssize_t;
pub fn eventfd(initval: ::c_uint, flags: ::c_int) -> ::c_int;
}
pub use crate::unix::newlib::generic::{sigset_t, stat};

Просмотреть файл

@ -1796,6 +1796,8 @@ pub const TCP_LINGER2: ::c_int = 0x1c;
pub const UDP_NAT_T_ENDPOINT: ::c_int = 0x0103;
pub const SOMAXCONN: ::c_int = 128;
pub const SOL_SOCKET: ::c_int = 0xffff;
pub const SO_DEBUG: ::c_int = 0x01;
pub const SO_ACCEPTCONN: ::c_int = 0x0002;

12
third_party/rust/libc/src/windows/mod.rs поставляемый
Просмотреть файл

@ -277,6 +277,16 @@ impl ::Clone for fpos_t {
}
}
// Special handling for all print and scan type functions because of https://github.com/rust-lang/libc/issues/2860
#[cfg_attr(
all(windows, target_env = "msvc"),
link(name = "legacy_stdio_definitions")
)]
extern "C" {
pub fn printf(format: *const c_char, ...) -> ::c_int;
pub fn fprintf(stream: *mut FILE, format: *const c_char, ...) -> ::c_int;
}
extern "C" {
pub fn isalnum(c: c_int) -> c_int;
pub fn isalpha(c: c_int) -> c_int;
@ -319,8 +329,6 @@ extern "C" {
pub fn feof(stream: *mut FILE) -> c_int;
pub fn ferror(stream: *mut FILE) -> c_int;
pub fn perror(s: *const c_char);
pub fn printf(format: *const c_char, ...) -> ::c_int;
pub fn fprintf(stream: *mut FILE, format: *const c_char, ...) -> ::c_int;
pub fn atoi(s: *const c_char) -> c_int;
pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;
pub fn strtof(s: *const c_char, endp: *mut *mut c_char) -> c_float;