summaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
Diffstat (limited to 'libc')
-rw-r--r--libc/.cirrus.yml4
-rw-r--r--libc/.travis.yml254
-rw-r--r--libc/CONTRIBUTING.md4
-rw-r--r--libc/Cargo.toml4
-rw-r--r--libc/README.md10
-rw-r--r--libc/appveyor.yml28
-rw-r--r--libc/build.rs28
-rw-r--r--libc/ci/README.md13
-rw-r--r--libc/ci/azure-install-rust.yml78
-rw-r--r--libc/ci/azure.yml222
-rw-r--r--libc/ci/build.sh58
-rw-r--r--libc/ci/docker/wasm32-wasi/Dockerfile2
-rw-r--r--libc/ci/dox.sh20
-rwxr-xr-xlibc/ci/run-docker.sh16
-rwxr-xr-xlibc/ci/run.sh2
-rw-r--r--libc/ci/semver.sh9
-rw-r--r--libc/ci/style.rs4
-rw-r--r--libc/ci/style.sh19
-rw-r--r--libc/libc-test/build.rs113
-rw-r--r--libc/libc-test/test/cmsg.rs1
-rw-r--r--libc/src/fuchsia/aarch64.rs281
-rw-r--r--libc/src/fuchsia/mod.rs54
-rw-r--r--libc/src/fuchsia/x86_64.rs350
-rw-r--r--libc/src/lib.rs7
-rw-r--r--libc/src/unix/bsd/apple/b32.rs4
-rw-r--r--libc/src/unix/bsd/apple/b64.rs4
-rw-r--r--libc/src/unix/bsd/apple/mod.rs105
-rw-r--r--libc/src/unix/bsd/freebsdlike/dragonfly/errno.rs12
-rw-r--r--libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs83
-rw-r--r--libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs2
-rw-r--r--libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs9
-rw-r--r--libc/src/unix/bsd/freebsdlike/freebsd/mod.rs89
-rw-r--r--libc/src/unix/bsd/freebsdlike/mod.rs22
-rw-r--r--libc/src/unix/bsd/mod.rs9
-rw-r--r--libc/src/unix/bsd/netbsdlike/netbsd/mod.rs92
-rw-r--r--libc/src/unix/bsd/netbsdlike/openbsd/mod.rs42
-rw-r--r--libc/src/unix/haiku/mod.rs79
-rw-r--r--libc/src/unix/linux_like/android/b32/arm.rs (renamed from libc/src/unix/notbsd/android/b32/arm.rs)0
-rw-r--r--libc/src/unix/linux_like/android/b32/mod.rs (renamed from libc/src/unix/notbsd/android/b32/mod.rs)0
-rw-r--r--libc/src/unix/linux_like/android/b32/x86.rs (renamed from libc/src/unix/notbsd/android/b32/x86.rs)0
-rw-r--r--libc/src/unix/linux_like/android/b64/aarch64.rs (renamed from libc/src/unix/notbsd/android/b64/aarch64.rs)0
-rw-r--r--libc/src/unix/linux_like/android/b64/mod.rs (renamed from libc/src/unix/notbsd/android/b64/mod.rs)0
-rw-r--r--libc/src/unix/linux_like/android/b64/x86_64.rs (renamed from libc/src/unix/notbsd/android/b64/x86_64.rs)0
-rw-r--r--libc/src/unix/linux_like/android/mod.rs (renamed from libc/src/unix/notbsd/android/mod.rs)32
-rw-r--r--libc/src/unix/linux_like/emscripten/align.rs (renamed from libc/src/unix/notbsd/emscripten/align.rs)0
-rw-r--r--libc/src/unix/linux_like/emscripten/mod.rs (renamed from libc/src/unix/notbsd/emscripten/mod.rs)17
-rw-r--r--libc/src/unix/linux_like/emscripten/no_align.rs (renamed from libc/src/unix/notbsd/emscripten/no_align.rs)0
-rw-r--r--libc/src/unix/linux_like/linux/align.rs (renamed from libc/src/unix/notbsd/linux/align.rs)4
-rw-r--r--libc/src/unix/linux_like/linux/gnu/align.rs (renamed from libc/src/unix/notbsd/linux/mips/align.rs)0
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b32/arm.rs (renamed from libc/src/unix/notbsd/linux/other/b32/arm.rs)252
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b32/mips.rs (renamed from libc/src/unix/notbsd/linux/mips/mips32.rs)582
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b32/mod.rs (renamed from libc/src/unix/notbsd/linux/other/b32/mod.rs)195
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs (renamed from libc/src/unix/notbsd/linux/other/b32/powerpc.rs)251
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b32/x86.rs (renamed from libc/src/unix/notbsd/linux/other/b32/x86.rs)252
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b64/aarch64.rs (renamed from libc/src/unix/notbsd/linux/other/b64/aarch64.rs)108
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b64/mips64.rs (renamed from libc/src/unix/notbsd/linux/mips/mips64.rs)561
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b64/mod.rs (renamed from libc/src/unix/notbsd/linux/other/b64/mod.rs)19
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b64/powerpc64.rs (renamed from libc/src/unix/notbsd/linux/other/b64/powerpc64.rs)106
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b64/s390x.rs (renamed from libc/src/unix/notbsd/linux/s390x/mod.rs)575
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b64/sparc64.rs (renamed from libc/src/unix/notbsd/linux/other/b64/sparc64.rs)106
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs (renamed from libc/src/unix/notbsd/linux/other/b64/x86_64.rs)122
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs (renamed from libc/src/unix/notbsd/linux/other/b64/not_x32.rs)0
-rw-r--r--libc/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs (renamed from libc/src/unix/notbsd/linux/other/b64/x32.rs)0
-rw-r--r--libc/src/unix/linux_like/linux/gnu/mod.rs (renamed from libc/src/unix/notbsd/linux/other/mod.rs)251
-rw-r--r--libc/src/unix/linux_like/linux/gnu/no_align.rs (renamed from libc/src/unix/notbsd/linux/mips/no_align.rs)0
-rw-r--r--libc/src/unix/linux_like/linux/mod.rs (renamed from libc/src/unix/notbsd/linux/mod.rs)149
-rw-r--r--libc/src/unix/linux_like/linux/musl/b32/arm.rs (renamed from libc/src/unix/notbsd/linux/musl/b32/arm.rs)23
-rw-r--r--libc/src/unix/linux_like/linux/musl/b32/hexagon.rs795
-rw-r--r--libc/src/unix/linux_like/linux/musl/b32/mips.rs (renamed from libc/src/unix/notbsd/linux/musl/b32/mips.rs)17
-rw-r--r--libc/src/unix/linux_like/linux/musl/b32/mod.rs (renamed from libc/src/unix/notbsd/linux/musl/b32/mod.rs)3
-rw-r--r--libc/src/unix/linux_like/linux/musl/b32/powerpc.rs (renamed from libc/src/unix/notbsd/linux/musl/b32/powerpc.rs)23
-rw-r--r--libc/src/unix/linux_like/linux/musl/b32/x86.rs (renamed from libc/src/unix/notbsd/linux/musl/b32/x86.rs)23
-rw-r--r--libc/src/unix/linux_like/linux/musl/b64/aarch64.rs (renamed from libc/src/unix/notbsd/linux/musl/b64/aarch64.rs)22
-rw-r--r--libc/src/unix/linux_like/linux/musl/b64/mod.rs (renamed from libc/src/unix/notbsd/linux/musl/b64/mod.rs)8
-rw-r--r--libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs (renamed from libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs)17
-rw-r--r--libc/src/unix/linux_like/linux/musl/b64/x86_64.rs (renamed from libc/src/unix/notbsd/linux/musl/b64/x86_64.rs)17
-rw-r--r--libc/src/unix/linux_like/linux/musl/mod.rs (renamed from libc/src/unix/notbsd/linux/musl/mod.rs)35
-rw-r--r--libc/src/unix/linux_like/linux/no_align.rs (renamed from libc/src/unix/notbsd/linux/no_align.rs)0
-rw-r--r--libc/src/unix/linux_like/mod.rs (renamed from libc/src/unix/notbsd/mod.rs)57
-rw-r--r--libc/src/unix/mod.rs94
-rw-r--r--libc/src/unix/newlib/mod.rs1
-rw-r--r--libc/src/unix/notbsd/linux/mips/mod.rs1008
-rw-r--r--libc/src/unix/notbsd/linux/other/align.rs13
-rw-r--r--libc/src/unix/notbsd/linux/other/no_align.rs10
-rw-r--r--libc/src/unix/notbsd/linux/s390x/align.rs10
-rw-r--r--libc/src/unix/notbsd/linux/s390x/no_align.rs7
-rw-r--r--libc/src/unix/redox/mod.rs709
-rw-r--r--libc/src/unix/solarish/mod.rs133
-rw-r--r--libc/src/unix/uclibc/arm/mod.rs392
-rw-r--r--libc/src/unix/uclibc/mips/mod.rs1
-rw-r--r--libc/src/unix/uclibc/mod.rs63
-rw-r--r--libc/src/vxworks/aarch64.rs3
-rw-r--r--libc/src/vxworks/arm.rs3
-rw-r--r--libc/src/vxworks/armv7.rs2
-rwxr-xr-xlibc/src/vxworks/mod.rs2319
-rw-r--r--libc/src/vxworks/powerpc.rs3
-rw-r--r--libc/src/vxworks/powerpc64.rs3
-rw-r--r--libc/src/vxworks/x86.rs3
-rw-r--r--libc/src/vxworks/x86_64.rs3
-rw-r--r--libc/src/wasi.rs1
100 files changed, 7722 insertions, 3814 deletions
diff --git a/libc/.cirrus.yml b/libc/.cirrus.yml
index 47807ab..e3f777b 100644
--- a/libc/.cirrus.yml
+++ b/libc/.cirrus.yml
@@ -1,7 +1,7 @@
task:
name: stable x86_64-unknown-freebsd-11
freebsd_instance:
- image: freebsd-11-2-release-amd64
+ image: freebsd-11-3-stable-amd64-v20190801
setup_script:
- pkg install -y curl
- curl https://sh.rustup.rs -sSf --output rustup.sh
@@ -10,6 +10,7 @@ task:
- rustup default stable
test_script:
- . $HOME/.cargo/env
+ - LIBC_CI=1 sh ci/run.sh x86_64-unknown-freebsd
- sh ci/run.sh x86_64-unknown-freebsd
task:
@@ -24,4 +25,5 @@ task:
- rustup default nightly
test_script:
- . $HOME/.cargo/env
+ - LIBC_CI=1 sh ci/run.sh x86_64-unknown-freebsd
- sh ci/run.sh x86_64-unknown-freebsd
diff --git a/libc/.travis.yml b/libc/.travis.yml
deleted file mode 100644
index ea5e0ac..0000000
--- a/libc/.travis.yml
+++ /dev/null
@@ -1,254 +0,0 @@
-language: rust
-rust: nightly
-sudo: required
-dist: xenial
-services: docker
-
-stages:
- - tools-and-build-and-tier1
- - tier2
-
-matrix:
- include:
- # TOOLS
- - name: "Documentation"
- env: TARGET=x86_64-unknown-linux-gnu
- script: sh ci/dox.sh
- install:
- - travis_retry rustup component add rust-src
- - travis_retry cargo install xargo
- stage: tools-and-build-and-tier1
- - name: "Shellcheck"
- install: true
- script:
- - shellcheck --version
- # FIXME: https://github.com/koalaman/shellcheck/issues/1591
- - shellcheck -e SC2103 ci/*.sh
- stage: tools-and-build-and-tier1
- - name: "Style"
- install: true
- script:
- - rustc ci/style.rs && ./style src
- # Disabled due to rust-lang/rustfmt#3341
- #- |
- # if rustup component add rustfmt-preview ; then
- # cargo fmt --all -- --check
- # fi
- stage: tools-and-build-and-tier1
- - name: "Semver Linux"
- install: travis_retry cargo +nightly install semverver
- script: sh ci/semver.sh
- stage: tools-and-build-and-tier1
- - name: "Semver MacOSX"
- install: travis_retry cargo +nightly install semverver
- script: sh ci/semver.sh
- os: osx
- osx_image: xcode10
- stage: tools-and-build-and-tier1
-
- # BUILD stable, beta, nightly
- - name: "Build Stable Rust"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: stable
- install: true
- - name: "Build Beta Rust"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: beta
- install: true
- - name: "Build Nightly Rust"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: nightly
- install:
- - travis_retry rustup component add rust-src
- - travis_retry cargo install xargo
- - name: "Build Stable Rust"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: stable
- os: osx
- osx_image: xcode10
- install: true
- - name: "Build Beta Rust"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: beta
- os: osx
- osx_image: xcode10
- install: true
- - name: "Build Nightly Rust"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: nightly
- os: osx
- osx_image: xcode10
- install: true
- - name: "Build Stable Rust 1.13.0"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: 1.13.0
- install: true
- - name: "Build Stable Rust 1.19.0"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: 1.19.0
- install: true
- - name: "Build Stable Rust 1.24.0"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: 1.24.0
- install: true
- - name: "Build Stable Rust 1.25.0"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: 1.25.0
- install: true
- - name: "Build Stable Rust 1.30.0"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: 1.30.0
- install: true
- - name: "Build Stable Rust 1.13.0"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: 1.13.0
- os: osx
- osx_image: xcode10
- install: true
- - name: "Build Stable Rust 1.19.0"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: 1.19.0
- os: osx
- osx_image: xcode10
- install: true
- - name: "Build Stable Rust 1.24.0"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: 1.24.0
- os: osx
- osx_image: xcode10
- install: true
- - name: "Build Stable Rust 1.25.0"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: 1.25.0
- os: osx
- osx_image: xcode10
- install: true
- - name: "Build Stable Rust 1.30.0"
- script: sh ci/build.sh
- stage: tools-and-build-and-tier1
- rust: 1.30.0
- os: osx
- osx_image: xcode10
- install: true
- - env: TARGET=i686-apple-darwin
- os: osx
- osx_image: xcode10
- stage: tools-and-build-and-tier1
- - env: TARGET=i686-unknown-linux-gnu
- stage: tools-and-build-and-tier1
- - env: TARGET=x86_64-apple-darwin
- os: osx
- osx_image: xcode10
- install: true
- stage: tools-and-build-and-tier1
- - env: TARGET=x86_64-unknown-linux-gnu
- stage: tools-and-build-and-tier1
- install: true
-
- # Tier 2 targets
- - env: TARGET=aarch64-linux-android
- stage: tier2
- - env: TARGET=aarch64-unknown-linux-gnu
- stage: tier2
- - env: TARGET=aarch64-unknown-linux-musl
- stage: tier2
- - env: TARGET=arm-linux-androideabi
- stage: tier2
- - env: TARGET=arm-unknown-linux-gnueabihf
- stage: tier2
- - env: TARGET=arm-unknown-linux-musleabihf
- stage: tier2
- - env: TARGET=asmjs-unknown-emscripten
- stage: tier2
- - env: TARGET=i686-linux-android
- stage: tier2
- - env: TARGET=i686-unknown-linux-musl
- stage: tier2
- - env: TARGET=mips-unknown-linux-gnu
- stage: tier2
- - env: TARGET=mips-unknown-linux-musl
- stage: tier2
- - env: TARGET=mips64-unknown-linux-gnuabi64
- stage: tier2
- - env: TARGET=mips64el-unknown-linux-gnuabi64
- stage: tier2
- - env: TARGET=mipsel-unknown-linux-musl
- stage: tier2
- - env: TARGET=powerpc-unknown-linux-gnu
- stage: tier2
- - env: TARGET=powerpc64-unknown-linux-gnu
- stage: tier2
- - env: TARGET=powerpc64le-unknown-linux-gnu
- stage: tier2
- - env: TARGET=s390x-unknown-linux-gnu
- stage: tier2
- - env: TARGET=sparc64-unknown-linux-gnu
- stage: tier2
- - env: TARGET=wasm32-unknown-emscripten
- stage: tier2
- - env: TARGET=x86_64-linux-android
- stage: tier2
- - env: TARGET=x86_64-unknown-linux-gnux32 OPT="--release"
- stage: tier2
- - env: TARGET=x86_64-unknown-linux-musl
- stage: tier2
- - env: TARGET=wasm32-wasi
- rust: nightly
- stage: tier2
- - name: "Nintendo Switch - build libcore only"
- rust: nightly
- stage: tier2
- install:
- - rustup component add rust-src
- - (test -x $HOME/.cargo/bin/cargo-xbuild || cargo install cargo-xbuild)
- script:
- - mkdir -p target
- - cd target
- - wget https://github.com/devkitPro/pacman/releases/download/devkitpro-pacman-1.0.1/devkitpro-pacman.deb
- - sudo dpkg -i devkitpro-pacman.deb
- - sudo dkp-pacman -Sy
- - sudo dkp-pacman -Syu
- - sudo dkp-pacman -S -v --noconfirm switch-dev devkitA64
- - export PATH="$PATH:/opt/devkitpro/devkitA64/bin"
- - export PATH="$PATH:/opt/devkitpro/tools/bin"
- - cd ..
- # Pull the target spec up into the current directory and then build
- - mv ci/switch.json switch.json
- - cargo xbuild --target switch.json
-
-
- allow_failures:
- - name: "Semver Linux"
- - name: "Semver MacOSX"
-
-install: travis_retry rustup target add $TARGET
-
-script:
- - cargo generate-lockfile --manifest-path libc-test/Cargo.toml
- - if [[ $TRAVIS_OS_NAME = "linux" ]] && [[ $BUILD_ONLY != "1" ]]; then
- sh ci/run-docker.sh $TARGET;
- else
- sh ci/run.sh $TARGET;
- fi
-env:
- global:
- secure: "e2/3QjgRN9atOuSHp22TrYG7QVKcYUWY48Hi9b60w+r1+BhPkTseIJLte7WefRhdXtqpjjUJTooKDhnurFOeHaCT+nmBgiv+FPU893sBl4bhesY4m0vgUJVbNZcs6lTImYekWVb+aqjGdgV/XAgCw7c3kPmrZV0MzGDWL64Xaps="
-
-notifications:
- email:
- on_success: never
diff --git a/libc/CONTRIBUTING.md b/libc/CONTRIBUTING.md
index 0e5d0c6..7c22c08 100644
--- a/libc/CONTRIBUTING.md
+++ b/libc/CONTRIBUTING.md
@@ -38,9 +38,9 @@ With that in mind, the steps for adding a new API are:
### Test before you commit
-We have two automated tests running on [Travis](https://travis-ci.org/rust-lang/libc):
+We have two automated tests running on [Azure Pipelines](https://dev.azure.com/rust-lang2/libc/_build?definitionId=1&_a=summary):
-1. [`libc-test`](https://github.com/alexcrichton/ctest)
+1. [`libc-test`](https://github.com/gnzlbg/ctest)
- `cd libc-test && cargo test`
- Use the `skip_*()` functions in `build.rs` if you really need a workaround.
2. Style checker
diff --git a/libc/Cargo.toml b/libc/Cargo.toml
index 82ecfe0..a39ab29 100644
--- a/libc/Cargo.toml
+++ b/libc/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "libc"
-version = "0.2.57"
+version = "0.2.62"
authors = ["The Rust Project Developers"]
license = "MIT OR Apache-2.0"
readme = "README.md"
@@ -10,7 +10,7 @@ documentation = "http://doc.rust-lang.org/libc"
keywords = ["libc", "ffi", "bindings", "operating", "system" ]
categories = ["external-ffi-bindings", "no-std", "os"]
build = "build.rs"
-exclude = ["/ci/*", "/.travis.yml", "/appveyor.yml"]
+exclude = ["/ci/*", "/azure-pipelines.yml"]
description = """
Raw FFI bindings to platform libraries like libc.
"""
diff --git a/libc/README.md b/libc/README.md
index 7bde17d..4b86023 100644
--- a/libc/README.md
+++ b/libc/README.md
@@ -1,4 +1,4 @@
-[![Travis-CI Status]][Travis-CI] [![Appveyor Status]][Appveyor] [![Cirrus-CI Status]][Cirrus-CI] [![Latest Version]][crates.io] [![Documentation]][docs.rs] ![License]
+[![Azure Status]][Azure] [![Cirrus-CI Status]][Cirrus-CI] [![Latest Version]][crates.io] [![Documentation]][docs.rs] ![License]
libc - Raw FFI bindings to platforms' system libraries
====
@@ -56,7 +56,7 @@ newer Rust features are only available on newer Rust toolchains:
[Platform-specific documentation (master branch)][docs.master].
See
-[`ci/build.sh`](https://github.com/rust-lang/libc/blob/master/libc-test/build.rs)
+[`ci/build.sh`](https://github.com/rust-lang/libc/blob/master/ci/build.sh)
for the platforms on which `libc` is guaranteed to build for each Rust
toolchain. The test-matrix at [Travis-CI], [Appveyor], and [Cirrus-CI] show the
platforms in which `libc` tests are run.
@@ -91,10 +91,8 @@ Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in `libc` by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.
-[Travis-CI]: https://travis-ci.com/rust-lang/libc
-[Travis-CI Status]: https://travis-ci.com/rust-lang/libc.svg?branch=master
-[Appveyor]: https://ci.appveyor.com/project/rust-lang-libs/libc
-[Appveyor Status]: https://ci.appveyor.com/api/projects/status/github/rust-lang/libc?svg=true
+[Azure Status]: https://dev.azure.com/rust-lang2/libc/_apis/build/status/rust-lang.libc?branchName=master
+[Azure]: https://dev.azure.com/rust-lang2/libc/_build/latest?definitionId=1&branchName=master
[Cirrus-CI]: https://cirrus-ci.com/github/rust-lang/libc
[Cirrus-CI Status]: https://api.cirrus-ci.com/github/rust-lang/libc.svg
[crates.io]: https://crates.io/crates/libc
diff --git a/libc/appveyor.yml b/libc/appveyor.yml
deleted file mode 100644
index b14230a..0000000
--- a/libc/appveyor.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-environment:
- # When this was added there were revocation check failures when using the
- # libcurl backend as libcurl checks by default, but rustup doesn't provide the
- # switch to turn this off. Switch to Reqwest which looks to not check for
- # revocation by default like libcurl does.
- RUSTUP_USE_REQWEST: 1
- CARGO_HTTP_CHECK_REVOKE: false
- matrix:
- - TARGET: x86_64-pc-windows-gnu
- MSYS2_BITS: 64
- - TARGET: i686-pc-windows-gnu
- MSYS2_BITS: 32
- - TARGET: x86_64-pc-windows-msvc
- - TARGET: i686-pc-windows-msvc
-install:
- - appveyor-retry appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe
- - rustup-init.exe -y --default-host %TARGET%
- - set PATH=%PATH%;C:\Users\appveyor\.cargo\bin
- - if defined MSYS2_BITS set PATH=%PATH%;C:\msys64\mingw%MSYS2_BITS%\bin
- - rustc -V
- - cargo -V
-
-build: false
-
-test_script:
- - cargo -vv test --target %TARGET%
- - cargo -vv test --no-default-features --target %TARGET%
- - cargo -vv test --manifest-path libc-test/Cargo.toml --target %TARGET%
diff --git a/libc/build.rs b/libc/build.rs
index 8452940..efc95b6 100644
--- a/libc/build.rs
+++ b/libc/build.rs
@@ -5,21 +5,27 @@ use std::str;
fn main() {
let rustc_minor_ver =
rustc_minor_version().expect("Failed to get rustc version");
- let rustc_dep_of_std =
- std::env::var("CARGO_FEATURE_RUSTC_DEP_OF_STD").is_ok();
- let align_cargo_feature = std::env::var("CARGO_FEATURE_ALIGN").is_ok();
+ let rustc_dep_of_std = env::var("CARGO_FEATURE_RUSTC_DEP_OF_STD").is_ok();
+ let align_cargo_feature = env::var("CARGO_FEATURE_ALIGN").is_ok();
+ #[allow(unused)]
+ let libc_ci = env::var("LIBC_CI").is_ok();
- if std::env::var("CARGO_FEATURE_USE_STD").is_ok() {
+ if env::var("CARGO_FEATURE_USE_STD").is_ok() {
println!(
"cargo:warning=\"libc's use_std cargo feature is deprecated since libc 0.2.55; \
please consider using the `std` cargo feature instead\""
);
}
- if std::env::var("LIBC_CI").is_ok() {
- if let Some(12) = which_freebsd() {
- println!("cargo:rustc-cfg=freebsd12");
- }
+ // The ABI of libc is backward compatible with FreeBSD 11.
+ //
+ // On CI, we detect the actual FreeBSD version and match its ABI exactly,
+ // running tests to ensure that the ABI is correct.
+ match which_freebsd() {
+ Some(11) if libc_ci => println!("cargo:rustc-cfg=freebsd11"),
+ Some(12) if libc_ci => println!("cargo:rustc-cfg=freebsd12"),
+ Some(13) if libc_ci => println!("cargo:rustc-cfg=freebsd13"),
+ Some(_) | None => println!("cargo:rustc-cfg=freebsd11"),
}
// Rust >= 1.15 supports private module use:
@@ -53,6 +59,11 @@ fn main() {
if rustc_minor_ver >= 33 || rustc_dep_of_std {
println!("cargo:rustc-cfg=libc_packedN");
}
+
+ // #[thread_local] is currently unstable
+ if rustc_dep_of_std {
+ println!("cargo:rustc-cfg=libc_thread_local");
+ }
}
fn rustc_minor_version() -> Option<u32> {
@@ -96,6 +107,7 @@ fn which_freebsd() -> Option<i32> {
match &stdout {
s if s.starts_with("11") => Some(11),
s if s.starts_with("12") => Some(12),
+ s if s.starts_with("13") => Some(13),
_ => None,
}
}
diff --git a/libc/ci/README.md b/libc/ci/README.md
index 28152e5..3123553 100644
--- a/libc/ci/README.md
+++ b/libc/ci/README.md
@@ -8,19 +8,12 @@ this project.
First up, let's talk about the files in this directory:
-* `run-travis.sh` - a shell script run by all Travis builders, this is
- responsible for setting up the rest of the environment such as installing new
- packages, downloading Rust target libraries, etc.
+* `run-docker.sh` - a shell script run by most builders, it will execute
+ `run.sh` inside a Docker container configured for the target.
* `run.sh` - the actual script which runs tests for a particular architecture.
- Called from the `run-travis.sh` script this will run all tests for the target
- specified.
-* `cargo-config` - Cargo configuration of linkers to use copied into place by
- the `run-travis.sh` script before builds are run.
-
-* `dox.sh` - script called from `run-travis.sh` on only the linux 64-bit nightly
- Travis bots to build documentation for this crate.
+* `dox.sh` - build the documentation of the crate and publish it to gh-pages.
* `landing-page-*.html` - used by `dox.sh` to generate a landing page for all
architectures' documentation.
diff --git a/libc/ci/azure-install-rust.yml b/libc/ci/azure-install-rust.yml
new file mode 100644
index 0000000..eba0669
--- /dev/null
+++ b/libc/ci/azure-install-rust.yml
@@ -0,0 +1,78 @@
+steps:
+ - bash: |
+ set -ex
+ toolchain=$TOOLCHAIN
+ if [ "$toolchain" = "" ]; then
+ toolchain=nightly
+ fi
+ if command -v rustup; then
+ rustup update $toolchain
+ rustup default $toolchain
+ else
+ curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $toolchain
+ echo "##vso[task.prependpath]$HOME/.cargo/bin"
+ fi
+ displayName: Install rust (unix)
+ condition: ne( variables['Agent.OS'], 'Windows_NT' )
+ - script: |
+ @echo on
+ if not defined TOOLCHAIN set TOOLCHAIN=nightly
+ rustup update %TOOLCHAIN%-%TARGET%
+ rustup default %TOOLCHAIN%-%TARGET%
+ displayName: Install rust (windows)
+ condition: eq( variables['Agent.OS'], 'Windows_NT' )
+ - script: |
+ set -ex
+ if [ -n "${TARGET}" ]; then
+ rustup target add $TARGET
+ fi
+ condition: ne( variables['Agent.OS'], 'Windows_NT' )
+ displayName: Install target (unix)
+ - script: |
+ @echo on
+ if defined TARGET rustup target add %TARGET%
+ condition: eq( variables['Agent.OS'], 'Windows_NT' )
+ displayName: Install target (windows)
+ - script: |
+ @echo on
+ if "%ARCH%" == "i686" choco install mingw --x86 --force
+ condition: eq( variables['Agent.OS'], 'Windows_NT' )
+ displayName: Install MinGW32 (windows)
+ - bash: |
+ set -ex
+ gcc -print-search-dirs
+ find "C:\ProgramData\Chocolatey" -name "crt2*"
+ find "C:\ProgramData\Chocolatey" -name "dllcrt2*"
+ find "C:\ProgramData\Chocolatey" -name "libmsvcrt*"
+ condition: eq( variables['Agent.OS'], 'Windows_NT' )
+ displayName: Find GCC libraries (windows)
+ - bash: |
+ set -ex
+ if [[ -n ${ARCH_BITS} ]]; then
+ for i in crt2.o dllcrt2.o libmingwex.a libmsvcrt.a ; do
+ cp -f "/C/ProgramData/Chocolatey/lib/mingw/tools/install/mingw${ARCH_BITS}/${ARCH}-w64-mingw32/lib/$i" "`rustc --print sysroot`/lib/rustlib/${TARGET}/lib"
+ done
+ fi
+ condition: eq( variables['Agent.OS'], 'Windows_NT' )
+ displayName: Fix MinGW (windows)
+ - bash: |
+ set -ex
+ rustc -Vv
+ cargo -V
+ rustup -Vv
+ rustup show
+ which rustc
+ which cargo
+ which rustup
+ displayName: Query rust and cargo versions
+ - script: |
+ @echo on
+ where gcc
+ condition: eq( variables['Agent.OS'], 'Windows_NT' )
+ displayName: Query gcc path
+ - bash: |
+ set -ex
+ cargo generate-lockfile
+ cargo generate-lockfile --manifest-path libc-test/Cargo.toml
+ displayName: Generate lockfiles
+
diff --git a/libc/ci/azure.yml b/libc/ci/azure.yml
new file mode 100644
index 0000000..4526361
--- /dev/null
+++ b/libc/ci/azure.yml
@@ -0,0 +1,222 @@
+variables:
+ - group: secrets
+resources:
+ repositories:
+ - repository: rustinfra
+ type: github
+ name: rust-lang/simpleinfra
+ endpoint: gnzlbg
+trigger: ["auto-libc","try"]
+pr: ["master"]
+
+jobs:
+ - job: DockerLinuxTier1
+ pool:
+ vmImage: ubuntu-16.04
+ steps:
+ - template: azure-install-rust.yml
+ - bash: LIBC_CI=1 sh ./ci/run-docker.sh $TARGET
+ displayName: Execute run-docker.sh
+ strategy:
+ matrix:
+ i686-unknown-linux-gnu:
+ TARGET: i686-unknown-linux-gnu
+ x86_64-unknown-linux-gnu:
+ TARGET: x86_64-unknown-linux-gnu
+
+ - job: DockerLinuxTier2
+ dependsOn: DockerLinuxTier1
+ pool:
+ vmImage: ubuntu-16.04
+ steps:
+ - template: azure-install-rust.yml
+ - bash: LIBC_CI=1 sh ./ci/run-docker.sh $TARGET
+ displayName: Execute run-docker.sh
+ strategy:
+ matrix:
+ aarch64-unknown-linux-android:
+ TARGET: aarch64-linux-android
+ aarch64-unknown-linux-gnu:
+ TARGET: aarch64-unknown-linux-gnu
+ aarch64-unknown-linux-musl:
+ TARGET: aarch64-unknown-linux-musl
+ arm-linux-androideabi:
+ TARGET: arm-linux-androideabi
+ arm-unknown-linux-gnueabihf:
+ TARGET: arm-unknown-linux-gnueabihf
+ arm-unknown-linux-musleabihf:
+ TARGET: arm-unknown-linux-musleabihf
+ asmjs-unknown-emscripten:
+ TARGET: asmjs-unknown-emscripten
+ i686-linux-android:
+ TARGET: i686-linux-android
+ i686-unknown-linux-musl:
+ TARGET: i686-unknown-linux-musl
+ mips-unknown-linux-gnu:
+ TARGET: mips-unknown-linux-gnu
+ mips-unknown-linux-musl:
+ TARGET: mips-unknown-linux-musl
+ mips64-unknown-linux-gnuabi64:
+ TARGET: mips64-unknown-linux-gnuabi64
+ mips64el-unknown-linux-gnuabi64:
+ TARGET: mips64el-unknown-linux-gnuabi64
+ mipsel-unknown-linux-musl:
+ TARGET: mipsel-unknown-linux-musl
+ #powerpc-unknown-linux-gnu:
+ # TARGET: powerpc-unknown-linux-gnu
+ powerpc64-unknown-linux-gnu:
+ TARGET: powerpc64-unknown-linux-gnu
+ powerpc64le-unknown-linux-gnu:
+ TARGET: powerpc64le-unknown-linux-gnu
+ #s390x-unknown-linux-gnu:
+ # TARGET: s390x-unknown-linux-gnu
+ #wasm32-wasi
+ # TARGET: wasm32-wasi
+ sparc64-unknown-linux-gnu:
+ TARGET: sparc64-unknown-linux-gnu
+ wasm32-unknown-emscripten:
+ TARGET: wasm32-unknown-emscripten
+ x86_64-linux-android:
+ TARGET: x86_64-linux-android
+ x86_64-unknown-linux-gnux32:
+ TARGET: x86_64-unknown-linux-gnux32
+ x86_64-unknown-linux-musl:
+ TARGET: x86_64-unknown-linux-musl
+
+ - job: DockerOSX64
+ pool:
+ vmImage: macos-10.14
+ steps:
+ - template: azure-install-rust.yml
+ - bash: LIBC_CI=1 sh ./ci/run.sh $TARGET
+ displayName: Execute run.sh
+ strategy:
+ matrix:
+ x86_64-apple-darwin:
+ TARGET: x86_64-apple-darwin
+
+ - job: DockerOSX32
+ pool:
+ vmImage: macos-10.13
+ steps:
+ - template: azure-install-rust.yml
+ - bash: LIBC_CI=1 sh ./ci/run.sh $TARGET
+ displayName: Execute run.sh
+ strategy:
+ matrix:
+ i686-apple-darwin:
+ TARGET: i686-apple-darwin
+
+ - job: Windows
+ pool:
+ vmImage: vs2017-win2016
+ steps:
+ - template: azure-install-rust.yml
+ - bash: LIBC_CI=1 sh ./ci/run.sh $TARGET
+ displayName: Execute run.sh
+ strategy:
+ matrix:
+ x86_64-pc-windows-gnu:
+ TARGET: x86_64-pc-windows-gnu
+ ARCH_BITS: 64
+ ARCH: x86_64
+ x86_64-pc-windows-msvc:
+ TARGET: x86_64-pc-windows-msvc
+ i686-pc-windows-gnu:
+ TARGET: i686-pc-windows-gnu
+ ARCH_BITS: 32
+ ARCH: i686
+ i686-pc-windows-msvc:
+ TARGET: i686-pc-windows-msvc
+
+ - job: StyleAndDocs
+ pool:
+ vmImage: ubuntu-16.04
+ steps:
+ - template: azure-install-rust.yml
+ - script: sh ci/style.sh
+ displayName: Check style
+ - script: sh ci/dox.sh
+ displayName: Generate documentation
+ - template: azure-configs/static-websites.yml@rustinfra
+ parameters:
+ deploy_dir: target/doc
+
+ # FIXME: re-enable these after the next release
+ #- job: SemverLinux
+ # dependsOn: BuildChannelsLinux
+ # continueOnError: true
+ # pool:
+ # vmImage: ubuntu-16.04
+ # steps:
+ # - template: azure-install-rust.yml
+ # - script: sh ci/semver.sh linux
+ # displayName: Check breaking changes
+
+ #- job: SemverOSX
+ # dependsOn: BuildChannelsOSX
+ # continueOnError: true
+ # pool:
+ # vmImage: macos-10.14
+ # steps:
+ # - template: azure-install-rust.yml
+ # - script: sh ci/semver.sh osx
+ # displayName: Check breaking changes
+
+ - job: BuildChannelsLinux
+ dependsOn: StyleAndDocs
+ pool:
+ vmImage: ubuntu-16.04
+ steps:
+ - template: azure-install-rust.yml
+ - script: sh ./ci/build.sh
+ displayName: Execute build.sh
+ strategy:
+ matrix:
+ stable:
+ TOOLCHAIN: stable
+ beta:
+ TOOLCHAIN: beta
+ nightly:
+ TOOLCHAIN: nightly
+ 1.13.0:
+ TOOLCHAIN: 1.13.0
+ 1.19.0:
+ TOOLCHAIN: 1.19.0
+ 1.24.0:
+ TOOLCHAIN: 1.24.0
+ 1.25.0:
+ TOOLCHAIN: 1.25.0
+ 1.30.0:
+ TOOLCHAIN: 1.30.0
+ variables:
+ OS: linux
+
+ - job: BuildChannelsOSX
+ dependsOn: StyleAndDocs
+ pool:
+ vmImage: macos-10.13
+ steps:
+ - template: azure-install-rust.yml
+ - script: sh ./ci/build.sh
+ displayName: Execute build.sh
+ strategy:
+ matrix:
+ stable:
+ TOOLCHAIN: stable
+ beta:
+ TOOLCHAIN: beta
+ nightly:
+ TOOLCHAIN: nightly
+ 1.13.0:
+ TOOLCHAIN: 1.13.0
+ 1.19.0:
+ TOOLCHAIN: 1.19.0
+ 1.24.0:
+ TOOLCHAIN: 1.24.0
+ 1.25.0:
+ TOOLCHAIN: 1.25.0
+ 1.30.0:
+ TOOLCHAIN: 1.30.0
+ variables:
+ OS: osx
diff --git a/libc/ci/build.sh b/libc/ci/build.sh
index 707dd4a..e63b4f7 100644
--- a/libc/ci/build.sh
+++ b/libc/ci/build.sh
@@ -5,13 +5,20 @@
set -ex
-RUST=${TRAVIS_RUST_VERSION}
-OS=${TRAVIS_OS_NAME}
+: "${TOOLCHAIN?The TOOLCHAIN environment variable must be set.}"
+: "${OS?The OS environment variable must be set.}"
+
+RUST=${TOOLCHAIN}
echo "Testing Rust ${RUST} on ${OS}"
+if [ "${TOOLCHAIN}" = "nightly" ] ; then
+ cargo +nightly install cargo-xbuild -Z install-upgrade
+ rustup component add rust-src
+fi
+
test_target() {
- CARGO="${1}"
+ BUILD_CMD="${1}"
TARGET="${2}"
NO_STD="${3}"
@@ -46,21 +53,21 @@ test_target() {
fi
# Test that libc builds without any default features (no libstd)
- "$CARGO" "+${RUST}" build -vv $opt --no-default-features --target "${TARGET}"
+ cargo "+${RUST}" "${BUILD_CMD}" -vv $opt --no-default-features --target "${TARGET}"
# Test that libc builds with default features (e.g. libstd)
# if the target supports libstd
if [ "$NO_STD" != "1" ]; then
- "$CARGO" "+${RUST}" build -vv $opt --target "${TARGET}"
+ cargo "+${RUST}" "${BUILD_CMD}" -vv $opt --target "${TARGET}"
fi
# Test that libc builds with the `extra_traits` feature
- "$CARGO" "+${RUST}" build -vv $opt --no-default-features --target "${TARGET}" \
+ cargo "+${RUST}" "${BUILD_CMD}" -vv $opt --no-default-features --target "${TARGET}" \
--features extra_traits
# Also test that it builds with `extra_traits` and default features:
if [ "$NO_STD" != "1" ]; then
- "$CARGO" "+${RUST}" build -vv $opt --target "${TARGET}" \
+ cargo "+${RUST}" "${BUILD_CMD}" -vv $opt --target "${TARGET}" \
--features extra_traits
fi
}
@@ -115,6 +122,9 @@ i586-unknown-linux-musl \
x86_64-unknown-cloudabi \
"
+# FIXME: temporarirly disable the redox target
+# https://github.com/rust-lang/libc/issues/1457
+# x86_64-unknown-redox
RUST_NIGHTLY_LINUX_TARGETS="\
aarch64-fuchsia \
armv5te-unknown-linux-gnueabi \
@@ -125,7 +135,6 @@ x86_64-fortanix-unknown-sgx \
x86_64-fuchsia \
x86_64-pc-windows-gnu \
x86_64-unknown-linux-gnux32 \
-x86_64-unknown-redox \
"
RUST_OSX_TARGETS="\
@@ -167,11 +176,13 @@ case "${OS}" in
esac
for TARGET in $TARGETS; do
- test_target cargo "$TARGET"
+ test_target build "$TARGET"
done
# FIXME: https://github.com/rust-lang/rust/issues/58564
# sparc-unknown-linux-gnu
+# FIXME: https://github.com/rust-lang/rust/issues/62932
+# thumbv6m-none-eabi
RUST_LINUX_NO_CORE_TARGETS="\
aarch64-pc-windows-msvc \
aarch64-unknown-cloudabi \
@@ -184,6 +195,7 @@ armebv7r-none-eabihf \
armv7-unknown-cloudabi-eabihf \
armv7r-none-eabi \
armv7r-none-eabihf \
+hexagon-unknown-linux-musl \
i586-pc-windows-msvc \
i686-pc-windows-msvc \
i686-unknown-cloudabi \
@@ -199,7 +211,7 @@ powerpc64-unknown-freebsd \
riscv32imac-unknown-none-elf \
riscv32imc-unknown-none-elf \
sparc64-unknown-netbsd \
-thumbv6m-none-eabi \
+
thumbv7em-none-eabi \
thumbv7em-none-eabihf \
thumbv7m-none-eabi \
@@ -212,10 +224,34 @@ x86_64-unknown-haiku \
x86_64-unknown-hermit \
x86_64-unknown-l4re-uclibc \
x86_64-unknown-openbsd \
+armv7-wrs-vxworks \
+aarch64-wrs-vxworks \
+i686-wrs-vxworks \
+x86_64-wrs-vxworks \
+powerpc-wrs-vxworks \
+powerpc-wrs-vxworks-spe \
+powerpc64-wrs-vxworks \
"
if [ "${RUST}" = "nightly" ] && [ "${OS}" = "linux" ]; then
for TARGET in $RUST_LINUX_NO_CORE_TARGETS; do
- test_target xargo "$TARGET" 1
+ test_target xbuild "$TARGET" 1
done
+
+ # Nintendo switch
+ cargo clean
+ mkdir -p target
+ (
+ cd target
+ wget https://github.com/devkitPro/pacman/releases/download/devkitpro-pacman-1.0.1/devkitpro-pacman.deb
+ sudo dpkg -i devkitpro-pacman.deb
+ sudo dkp-pacman -Sy
+ sudo dkp-pacman -Syu
+ sudo dkp-pacman -S -v --noconfirm switch-dev devkitA64
+ )
+ cp ci/switch.json switch.json
+ PATH="$PATH:/opt/devkitpro/devkitA64/bin"
+ PATH="$PATH:/opt/devkitpro/tools/bin"
+ cargo xbuild --target switch.json
fi
+
diff --git a/libc/ci/docker/wasm32-wasi/Dockerfile b/libc/ci/docker/wasm32-wasi/Dockerfile
index d963a44..eb3b5ff 100644
--- a/libc/ci/docker/wasm32-wasi/Dockerfile
+++ b/libc/ci/docker/wasm32-wasi/Dockerfile
@@ -60,7 +60,7 @@ ENV PATH=/root/.cargo/bin:$PATH
RUN apt-get install -y --no-install-recommends python
RUN git clone --recursive https://github.com/CraneStation/wasmtime wasmtime && \
cd wasmtime && \
- git reset --hard 67edb00f29b62864b00179fe4bfa99bc29973285
+ git reset --hard a2647878977726935c3d04c05cabad9607ec7606
RUN cargo build --release --manifest-path wasmtime/Cargo.toml
# And finally in the last image we're going to assemble everything together.
diff --git a/libc/ci/dox.sh b/libc/ci/dox.sh
index ce55081..febe18b 100644
--- a/libc/ci/dox.sh
+++ b/libc/ci/dox.sh
@@ -13,6 +13,14 @@ PLATFORM_SUPPORT=platform-support.md
rm -rf $TARGET_DOC_DIR
mkdir -p $TARGET_DOC_DIR
+if ! rustc --version | grep -E "nightly" ; then
+ echo "Building the documentation requires a nightly Rust toolchain"
+ exit 1
+fi
+
+rustup component add rust-src
+cargo +nightly install cargo-xbuild -Z install-upgrade
+
# List all targets that do currently build successfully:
# shellcheck disable=SC1003
grep '[\d|\w|-]* \\' ci/build.sh > targets
@@ -39,10 +47,13 @@ while read -r target; do
rustup target add "${target}" || true
+ # Enable extra configuration flags:
+ export RUSTDOCFLAGS="--cfg freebsd11"
+
# If cargo doc fails, then try xargo:
if ! cargo doc --target "${target}" \
--no-default-features --features extra_traits ; then
- xargo doc --target "${target}" \
+ cargo xdoc --target "${target}" \
--no-default-features --features extra_traits
fi
@@ -61,10 +72,3 @@ set -x
# Copy the licenses
cp LICENSE-* $TARGET_DOC_DIR/
-
-# If we're on travis, not a PR, and on the right branch, publish!
-if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ "$TRAVIS_BRANCH" = "master" ]; then
- pip install ghp_import --install-option="--prefix=$HOME/.local"
- "${HOME}/.local/bin/ghp-import" $TARGET_DOC_DIR
- git push -qf "https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git" gh-pages
-fi
diff --git a/libc/ci/run-docker.sh b/libc/ci/run-docker.sh
index c656f59..3c0736a 100755
--- a/libc/ci/run-docker.sh
+++ b/libc/ci/run-docker.sh
@@ -5,6 +5,9 @@
set -ex
+echo "${HOME}"
+pwd
+
run() {
echo "Building docker container for target ${1}"
@@ -18,19 +21,20 @@ run() {
fi
docker run \
- --user "$(id -u)":"$(id -g)" \
--rm \
- --init \
- --volume "${HOME}/.cargo":/cargo \
- $kvm \
+ --user "$(id -u)":"$(id -g)" \
+ --env LIBC_CI \
--env CARGO_HOME=/cargo \
+ --env CARGO_TARGET_DIR=/checkout/target \
+ --volume "$(dirname "$(dirname "$(command -v cargo)")")":/cargo \
--volume "$(rustc --print sysroot)":/rust:ro \
--volume "$(pwd)":/checkout:ro \
--volume "$(pwd)"/target:/checkout/target \
- --env CARGO_TARGET_DIR=/checkout/target \
+ $kvm \
+ --init \
--workdir /checkout \
libc \
- ci/run.sh "${1}"
+ sh -c "HOME=/tmp PATH=\$PATH:/rust/bin exec ci/run.sh ${1}"
}
if [ -z "${1}" ]; then
diff --git a/libc/ci/run.sh b/libc/ci/run.sh
index 8c56979..6f2ca11 100755
--- a/libc/ci/run.sh
+++ b/libc/ci/run.sh
@@ -87,8 +87,6 @@ if [ "$TARGET" = "x86_64-unknown-linux-gnux32" ]; then
opt="--release"
fi
-export LIBC_CI=1
-
cargo test -vv $opt --no-default-features --manifest-path libc-test/Cargo.toml \
--target "${TARGET}"
diff --git a/libc/ci/semver.sh b/libc/ci/semver.sh
index ac6be36..3412501 100644
--- a/libc/ci/semver.sh
+++ b/libc/ci/semver.sh
@@ -4,10 +4,17 @@
set -ex
-OS=${TRAVIS_OS_NAME}
+OS=${1}
echo "Testing Semver on ${OS}"
+if ! rustc --version | grep -E "nightly" ; then
+ echo "Building semverver requires a nightly Rust toolchain"
+ exit 1
+fi
+
+cargo +nightly install semverver -Z install-upgrade
+
TARGETS=
case "${OS}" in
*linux*)
diff --git a/libc/ci/style.rs b/libc/ci/style.rs
index 481f57f..70fc0a0 100644
--- a/libc/ci/style.rs
+++ b/libc/ci/style.rs
@@ -117,7 +117,7 @@ fn check_style(file: &str, path: &Path, err: &mut Errors) {
} else {
prev_blank = false;
}
- if line != line.trim_right() {
+ if line != line.trim_end() {
err.error(path, i, "trailing whitespace");
}
if line.contains("\t") {
@@ -139,7 +139,7 @@ fn check_style(file: &str, path: &Path, err: &mut Errors) {
}
}
- let line = line.trim_left();
+ let line = line.trim_start();
let is_pub = line.starts_with("pub ");
let line = if is_pub {&line[4..]} else {line};
diff --git a/libc/ci/style.sh b/libc/ci/style.sh
new file mode 100644
index 0000000..a6a0017
--- /dev/null
+++ b/libc/ci/style.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env sh
+
+set -ex
+
+rustc ci/style.rs && ./style src
+
+if rustup component add rustfmt-preview ; then
+ which rustfmt
+ rustfmt -V
+ cargo fmt --all -- --check
+fi
+
+if shellcheck --version ; then
+ shellcheck -e SC2103 ci/*.sh
+else
+ echo "shellcheck not found"
+ exit 1
+fi
+
diff --git a/libc/libc-test/build.rs b/libc/libc-test/build.rs
index 5087906..146beb0 100644
--- a/libc/libc-test/build.rs
+++ b/libc/libc-test/build.rs
@@ -225,6 +225,12 @@ fn test_apple(target: &str) {
}
});
+ cfg.skip_roundtrip(move |s| match s {
+ // FIXME: TODO
+ "utsname" | "statfs" | "dirent" | "utmpx" => true,
+ _ => false,
+ });
+
cfg.generate("../src/lib.rs", "main.rs");
}
@@ -363,6 +369,11 @@ fn test_openbsd(target: &str) {
(struct_ == "siginfo_t" && field == "si_addr")
});
+ cfg.skip_roundtrip(move |s| match s {
+ "dirent" | "utsname" | "utmp" => true,
+ _ => false,
+ });
+
cfg.generate("../src/lib.rs", "main.rs");
}
@@ -467,6 +478,11 @@ fn test_windows(target: &str) {
}
});
+ cfg.skip_roundtrip(move |s| match s {
+ "dirent" | "statfs" | "utsname" | "utmpx" => true,
+ _ => false,
+ });
+
cfg.generate("../src/lib.rs", "main.rs");
}
@@ -1082,11 +1098,6 @@ fn test_dragonflybsd(target: &str) {
| "PORT_SOURCE_SIGNAL"
| "PTHREAD_STACK_MIN" => true,
- // These change all the time from release to release of linux
- // distros, let's just not bother trying to verify them. They
- // shouldn't be used in code anyway...
- "AF_MAX" | "PF_MAX" => true,
-
_ => false,
}
});
@@ -1426,6 +1437,13 @@ fn test_android(target: &str) {
field == "ssi_arch"))
});
+ let bit64 = target.contains("64");
+ cfg.skip_roundtrip(move |s| match s {
+ "utsname" | "dirent" | "dirent64" => true,
+ "utmp" if bit64 => true,
+ _ => false,
+ });
+
cfg.generate("../src/lib.rs", "main.rs");
test_linux_like_apis(target);
@@ -1437,10 +1455,12 @@ fn test_freebsd(target: &str) {
let freebsd_ver = which_freebsd();
- if let Some(12) = freebsd_ver {
- // If the host is FreeBSD 12, run FreeBSD 12 tests
- cfg.cfg("freebsd12", None);
- }
+ match freebsd_ver {
+ Some(11) => cfg.cfg("freebsd11", None),
+ Some(12) => cfg.cfg("freebsd12", None),
+ Some(13) => cfg.cfg("freebsd13", None),
+ _ => &mut cfg,
+ };
// Required for `getline`:
cfg.define("_WITH_GETLINE", None);
@@ -1568,7 +1588,7 @@ fn test_freebsd(target: &str) {
| "IP_RECVORIGDSTADDR"
| "IPV6_ORIGDSTADDR"
| "IPV6_RECVORIGDSTADDR"
- if Some(12) != freebsd_ver =>
+ if Some(11) == freebsd_ver =>
{
true
}
@@ -1582,8 +1602,7 @@ fn test_freebsd(target: &str) {
// These constants were removed in FreeBSD 11 (svn r262489),
// and they've never had any legitimate use outside of the
// base system anyway.
- "CTL_MAXID" | "KERN_MAXID" | "HW_MAXID" | "NET_MAXID"
- | "USER_MAXID" => true,
+ "CTL_MAXID" | "KERN_MAXID" | "HW_MAXID" | "USER_MAXID" => true,
_ => false,
}
@@ -1628,6 +1647,11 @@ fn test_freebsd(target: &str) {
(struct_ == "sigaction" && field == "sa_sigaction")
});
+ cfg.skip_roundtrip(move |s| match s {
+ "dirent" | "statfs" | "utsname" | "utmpx" => true,
+ _ => false,
+ });
+
cfg.generate("../src/lib.rs", "main.rs");
}
@@ -1832,6 +1856,15 @@ fn test_emscripten(target: &str) {
field == "ssi_arch"))
});
+ cfg.skip_roundtrip(move |s| match s {
+ "pthread_mutexattr_t"
+ | "utsname"
+ | "dirent"
+ | "dirent64"
+ | "sysinfo" => true,
+ _ => false,
+ });
+
// FIXME: test linux like
cfg.generate("../src/lib.rs", "main.rs");
}
@@ -1859,8 +1892,11 @@ fn test_linux(target: &str) {
let x86_32 = target.contains("i686");
let x32 = target.contains("x32");
let mips = target.contains("mips");
- let mips32_musl = mips && !target.contains("64") && musl;
+ let mips32 = mips && !target.contains("64");
+ let mips64 = mips && target.contains("64");
+ let mips32_musl = mips32 && musl;
let sparc64 = target.contains("sparc64");
+ let s390x = target.contains("s390x");
let mut cfg = ctest::TestGenerator::new();
cfg.define("_GNU_SOURCE", None);
@@ -2000,6 +2036,7 @@ fn test_linux(target: &str) {
"linux/rtnetlink.h",
"linux/seccomp.h",
"linux/sockios.h",
+ "linux/vm_sockets.h",
"sys/auxv.h",
}
@@ -2097,6 +2134,12 @@ fn test_linux(target: &str) {
// FIXME: musl version using by mips build jobs 1.0.15 is ancient:
"ifmap" | "ifreq" | "ifconf" if mips32_musl => true,
+ // FIXME: remove once Ubuntu 20.04 LTS is released, somewhere in 2020.
+ // ucontext_t added a new field as of glibc 2.28; our struct definition is
+ // conservative and omits the field, but that means the size doesn't match for newer
+ // glibcs (see https://github.com/rust-lang/libc/issues/1410)
+ "ucontext_t" if gnu => true,
+
_ => false,
}
});
@@ -2246,6 +2289,49 @@ fn test_linux(target: &str) {
field == "ssi_arch"))
});
+ cfg.skip_roundtrip(move |s| match s {
+ // FIXME: TODO
+ "_libc_fpstate" | "user_fpregs_struct" if x86_64 => true,
+ "utsname"
+ | "statx"
+ | "dirent"
+ | "dirent64"
+ | "utmpx"
+ | "user"
+ | "user_fpxregs_struct" => true,
+ "sysinfo" if musl => true,
+ "ucontext_t" if x86_64 && musl => true,
+ "sockaddr_un" | "sembuf" | "ff_constant_effect"
+ if mips32 && (gnu || musl) =>
+ {
+ true
+ }
+ "ipv6_mreq"
+ | "sockaddr_in6"
+ | "sockaddr_ll"
+ | "in_pktinfo"
+ | "arpreq"
+ | "arpreq_old"
+ | "sockaddr_un"
+ | "ff_constant_effect"
+ | "ff_ramp_effect"
+ | "ff_condition_effect"
+ | "Elf32_Ehdr"
+ | "Elf32_Chdr"
+ | "ucred"
+ | "in6_pktinfo"
+ | "sockaddr_nl"
+ | "termios"
+ | "nlmsgerr"
+ if (mips64 || sparc64) && gnu =>
+ {
+ true
+ }
+ "mcontext_t" if s390x => true,
+
+ _ => false,
+ });
+
cfg.generate("../src/lib.rs", "main.rs");
test_linux_like_apis(target);
@@ -2388,6 +2474,7 @@ fn which_freebsd() -> Option<i32> {
match &stdout {
s if s.starts_with("11") => Some(11),
s if s.starts_with("12") => Some(12),
+ s if s.starts_with("13") => Some(13),
_ => None,
}
}
diff --git a/libc/libc-test/test/cmsg.rs b/libc/libc-test/test/cmsg.rs
index 8304163..38a8ce1 100644
--- a/libc/libc-test/test/cmsg.rs
+++ b/libc/libc-test/test/cmsg.rs
@@ -97,5 +97,4 @@ mod t {
}
}
}
-
}
diff --git a/libc/src/fuchsia/aarch64.rs b/libc/src/fuchsia/aarch64.rs
index 654e8d1..259893c 100644
--- a/libc/src/fuchsia/aarch64.rs
+++ b/libc/src/fuchsia/aarch64.rs
@@ -64,284 +64,3 @@ s! {
pub const MINSIGSTKSZ: ::size_t = 6144;
pub const SIGSTKSZ: ::size_t = 12288;
-
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const PF_MAX: ::c_int = 43;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const AF_MAX: ::c_int = PF_MAX;
-
-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_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;
diff --git a/libc/src/fuchsia/mod.rs b/libc/src/fuchsia/mod.rs
index 1d68341..f2f9844 100644
--- a/libc/src/fuchsia/mod.rs
+++ b/libc/src/fuchsia/mod.rs
@@ -432,15 +432,6 @@ s! {
pub int_n_sign_posn: ::c_char,
}
- pub struct sigevent {
- pub sigev_value: ::sigval,
- pub sigev_signo: ::c_int,
- pub sigev_notify: ::c_int,
- pub sigev_notify_function: fn(::sigval),
- pub sigev_notify_attributes: *mut pthread_attr_t,
- pub __pad: [::c_char; 56 - 3 * 8 /* 8 == sizeof(long) */],
- }
-
pub struct rlimit64 {
pub rlim_cur: rlim64_t,
pub rlim_max: rlim64_t,
@@ -962,6 +953,15 @@ s_no_extra_traits! {
pub nl_pid: u32,
pub nl_groups: u32
}
+
+ pub struct sigevent {
+ pub sigev_value: ::sigval,
+ pub sigev_signo: ::c_int,
+ pub sigev_notify: ::c_int,
+ pub sigev_notify_function: fn(::sigval),
+ pub sigev_notify_attributes: *mut pthread_attr_t,
+ pub __pad: [::c_char; 56 - 3 * 8 /* 8 == sizeof(long) */],
+ }
}
cfg_if! {
@@ -1255,6 +1255,39 @@ cfg_if! {
self.nl_groups.hash(state);
}
}
+
+ impl PartialEq for sigevent {
+ fn eq(&self, other: &sigevent) -> bool {
+ self.sigev_value == other.sigev_value
+ && self.sigev_signo == other.sigev_signo
+ && self.sigev_notify == other.sigev_notify
+ && self.sigev_notify_function == other.sigev_notify_function
+ && self.sigev_notify_attributes
+ == other.sigev_notify_attributes
+ }
+ }
+ impl Eq for sigevent {}
+ impl ::fmt::Debug for sigevent {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("sigevent")
+ .field("sigev_value", &self.sigev_value)
+ .field("sigev_signo", &self.sigev_signo)
+ .field("sigev_notify", &self.sigev_notify)
+ .field("sigev_notify_function", &self.sigev_notify_function)
+ .field("sigev_notify_attributes",
+ &self.sigev_notify_attributes)
+ .finish()
+ }
+ }
+ impl ::hash::Hash for sigevent {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.sigev_value.hash(state);
+ self.sigev_signo.hash(state);
+ self.sigev_notify.hash(state);
+ self.sigev_notify_function.hash(state);
+ self.sigev_notify_attributes.hash(state);
+ }
+ }
}
}
@@ -2563,9 +2596,6 @@ pub const PR_CAP_AMBIENT_RAISE: ::c_int = 2;
pub const PR_CAP_AMBIENT_LOWER: ::c_int = 3;
pub const PR_CAP_AMBIENT_CLEAR_ALL: ::c_int = 4;
-pub const GRND_NONBLOCK: ::c_uint = 0x0001;
-pub const GRND_RANDOM: ::c_uint = 0x0002;
-
pub const ITIMER_REAL: ::c_int = 0;
pub const ITIMER_VIRTUAL: ::c_int = 1;
pub const ITIMER_PROF: ::c_int = 2;
diff --git a/libc/src/fuchsia/x86_64.rs b/libc/src/fuchsia/x86_64.rs
index e01f16d..dca3c24 100644
--- a/libc/src/fuchsia/x86_64.rs
+++ b/libc/src/fuchsia/x86_64.rs
@@ -117,340 +117,6 @@ cfg_if! {
}
}
-// Syscall table
-
-pub const SYS_read: ::c_long = 0;
-pub const SYS_write: ::c_long = 1;
-pub const SYS_open: ::c_long = 2;
-pub const SYS_close: ::c_long = 3;
-pub const SYS_stat: ::c_long = 4;
-pub const SYS_fstat: ::c_long = 5;
-pub const SYS_lstat: ::c_long = 6;
-pub const SYS_poll: ::c_long = 7;
-pub const SYS_lseek: ::c_long = 8;
-pub const SYS_mmap: ::c_long = 9;
-pub const SYS_mprotect: ::c_long = 10;
-pub const SYS_munmap: ::c_long = 11;
-pub const SYS_brk: ::c_long = 12;
-pub const SYS_rt_sigaction: ::c_long = 13;
-pub const SYS_rt_sigprocmask: ::c_long = 14;
-pub const SYS_rt_sigreturn: ::c_long = 15;
-pub const SYS_ioctl: ::c_long = 16;
-pub const SYS_pread64: ::c_long = 17;
-pub const SYS_pwrite64: ::c_long = 18;
-pub const SYS_readv: ::c_long = 19;
-pub const SYS_writev: ::c_long = 20;
-pub const SYS_access: ::c_long = 21;
-pub const SYS_pipe: ::c_long = 22;
-pub const SYS_select: ::c_long = 23;
-pub const SYS_sched_yield: ::c_long = 24;
-pub const SYS_mremap: ::c_long = 25;
-pub const SYS_msync: ::c_long = 26;
-pub const SYS_mincore: ::c_long = 27;
-pub const SYS_madvise: ::c_long = 28;
-pub const SYS_shmget: ::c_long = 29;
-pub const SYS_shmat: ::c_long = 30;
-pub const SYS_shmctl: ::c_long = 31;
-pub const SYS_dup: ::c_long = 32;
-pub const SYS_dup2: ::c_long = 33;
-pub const SYS_pause: ::c_long = 34;
-pub const SYS_nanosleep: ::c_long = 35;
-pub const SYS_getitimer: ::c_long = 36;
-pub const SYS_alarm: ::c_long = 37;
-pub const SYS_setitimer: ::c_long = 38;
-pub const SYS_getpid: ::c_long = 39;
-pub const SYS_sendfile: ::c_long = 40;
-pub const SYS_socket: ::c_long = 41;
-pub const SYS_connect: ::c_long = 42;
-pub const SYS_accept: ::c_long = 43;
-pub const SYS_sendto: ::c_long = 44;
-pub const SYS_recvfrom: ::c_long = 45;
-pub const SYS_sendmsg: ::c_long = 46;
-pub const SYS_recvmsg: ::c_long = 47;
-pub const SYS_shutdown: ::c_long = 48;
-pub const SYS_bind: ::c_long = 49;
-pub const SYS_listen: ::c_long = 50;
-pub const SYS_getsockname: ::c_long = 51;
-pub const SYS_getpeername: ::c_long = 52;
-pub const SYS_socketpair: ::c_long = 53;
-pub const SYS_setsockopt: ::c_long = 54;
-pub const SYS_getsockopt: ::c_long = 55;
-pub const SYS_clone: ::c_long = 56;
-pub const SYS_fork: ::c_long = 57;
-pub const SYS_vfork: ::c_long = 58;
-pub const SYS_execve: ::c_long = 59;
-pub const SYS_exit: ::c_long = 60;
-pub const SYS_wait4: ::c_long = 61;
-pub const SYS_kill: ::c_long = 62;
-pub const SYS_uname: ::c_long = 63;
-pub const SYS_semget: ::c_long = 64;
-pub const SYS_semop: ::c_long = 65;
-pub const SYS_semctl: ::c_long = 66;
-pub const SYS_shmdt: ::c_long = 67;
-pub const SYS_msgget: ::c_long = 68;
-pub const SYS_msgsnd: ::c_long = 69;
-pub const SYS_msgrcv: ::c_long = 70;
-pub const SYS_msgctl: ::c_long = 71;
-pub const SYS_fcntl: ::c_long = 72;
-pub const SYS_flock: ::c_long = 73;
-pub const SYS_fsync: ::c_long = 74;
-pub const SYS_fdatasync: ::c_long = 75;
-pub const SYS_truncate: ::c_long = 76;
-pub const SYS_ftruncate: ::c_long = 77;
-pub const SYS_getdents: ::c_long = 78;
-pub const SYS_getcwd: ::c_long = 79;
-pub const SYS_chdir: ::c_long = 80;
-pub const SYS_fchdir: ::c_long = 81;
-pub const SYS_rename: ::c_long = 82;
-pub const SYS_mkdir: ::c_long = 83;
-pub const SYS_rmdir: ::c_long = 84;
-pub const SYS_creat: ::c_long = 85;
-pub const SYS_link: ::c_long = 86;
-pub const SYS_unlink: ::c_long = 87;
-pub const SYS_symlink: ::c_long = 88;
-pub const SYS_readlink: ::c_long = 89;
-pub const SYS_chmod: ::c_long = 90;
-pub const SYS_fchmod: ::c_long = 91;
-pub const SYS_chown: ::c_long = 92;
-pub const SYS_fchown: ::c_long = 93;
-pub const SYS_lchown: ::c_long = 94;
-pub const SYS_umask: ::c_long = 95;
-pub const SYS_gettimeofday: ::c_long = 96;
-pub const SYS_getrlimit: ::c_long = 97;
-pub const SYS_getrusage: ::c_long = 98;
-pub const SYS_sysinfo: ::c_long = 99;
-pub const SYS_times: ::c_long = 100;
-pub const SYS_ptrace: ::c_long = 101;
-pub const SYS_getuid: ::c_long = 102;
-pub const SYS_syslog: ::c_long = 103;
-pub const SYS_getgid: ::c_long = 104;
-pub const SYS_setuid: ::c_long = 105;
-pub const SYS_setgid: ::c_long = 106;
-pub const SYS_geteuid: ::c_long = 107;
-pub const SYS_getegid: ::c_long = 108;
-pub const SYS_setpgid: ::c_long = 109;
-pub const SYS_getppid: ::c_long = 110;
-pub const SYS_getpgrp: ::c_long = 111;
-pub const SYS_setsid: ::c_long = 112;
-pub const SYS_setreuid: ::c_long = 113;
-pub const SYS_setregid: ::c_long = 114;
-pub const SYS_getgroups: ::c_long = 115;
-pub const SYS_setgroups: ::c_long = 116;
-pub const SYS_setresuid: ::c_long = 117;
-pub const SYS_getresuid: ::c_long = 118;
-pub const SYS_setresgid: ::c_long = 119;
-pub const SYS_getresgid: ::c_long = 120;
-pub const SYS_getpgid: ::c_long = 121;
-pub const SYS_setfsuid: ::c_long = 122;
-pub const SYS_setfsgid: ::c_long = 123;
-pub const SYS_getsid: ::c_long = 124;
-pub const SYS_capget: ::c_long = 125;
-pub const SYS_capset: ::c_long = 126;
-pub const SYS_rt_sigpending: ::c_long = 127;
-pub const SYS_rt_sigtimedwait: ::c_long = 128;
-pub const SYS_rt_sigqueueinfo: ::c_long = 129;
-pub const SYS_rt_sigsuspend: ::c_long = 130;
-pub const SYS_sigaltstack: ::c_long = 131;
-pub const SYS_utime: ::c_long = 132;
-pub const SYS_mknod: ::c_long = 133;
-pub const SYS_uselib: ::c_long = 134;
-pub const SYS_personality: ::c_long = 135;
-pub const SYS_ustat: ::c_long = 136;
-pub const SYS_statfs: ::c_long = 137;
-pub const SYS_fstatfs: ::c_long = 138;
-pub const SYS_sysfs: ::c_long = 139;
-pub const SYS_getpriority: ::c_long = 140;
-pub const SYS_setpriority: ::c_long = 141;
-pub const SYS_sched_setparam: ::c_long = 142;
-pub const SYS_sched_getparam: ::c_long = 143;
-pub const SYS_sched_setscheduler: ::c_long = 144;
-pub const SYS_sched_getscheduler: ::c_long = 145;
-pub const SYS_sched_get_priority_max: ::c_long = 146;
-pub const SYS_sched_get_priority_min: ::c_long = 147;
-pub const SYS_sched_rr_get_interval: ::c_long = 148;
-pub const SYS_mlock: ::c_long = 149;
-pub const SYS_munlock: ::c_long = 150;
-pub const SYS_mlockall: ::c_long = 151;
-pub const SYS_munlockall: ::c_long = 152;
-pub const SYS_vhangup: ::c_long = 153;
-pub const SYS_modify_ldt: ::c_long = 154;
-pub const SYS_pivot_root: ::c_long = 155;
-pub const SYS__sysctl: ::c_long = 156;
-pub const SYS_prctl: ::c_long = 157;
-pub const SYS_arch_prctl: ::c_long = 158;
-pub const SYS_adjtimex: ::c_long = 159;
-pub const SYS_setrlimit: ::c_long = 160;
-pub const SYS_chroot: ::c_long = 161;
-pub const SYS_sync: ::c_long = 162;
-pub const SYS_acct: ::c_long = 163;
-pub const SYS_settimeofday: ::c_long = 164;
-pub const SYS_mount: ::c_long = 165;
-pub const SYS_umount2: ::c_long = 166;
-pub const SYS_swapon: ::c_long = 167;
-pub const SYS_swapoff: ::c_long = 168;
-pub const SYS_reboot: ::c_long = 169;
-pub const SYS_sethostname: ::c_long = 170;
-pub const SYS_setdomainname: ::c_long = 171;
-pub const SYS_iopl: ::c_long = 172;
-pub const SYS_ioperm: ::c_long = 173;
-pub const SYS_create_module: ::c_long = 174;
-pub const SYS_init_module: ::c_long = 175;
-pub const SYS_delete_module: ::c_long = 176;
-pub const SYS_get_kernel_syms: ::c_long = 177;
-pub const SYS_query_module: ::c_long = 178;
-pub const SYS_quotactl: ::c_long = 179;
-pub const SYS_nfsservctl: ::c_long = 180;
-pub const SYS_getpmsg: ::c_long = 181;
-pub const SYS_putpmsg: ::c_long = 182;
-pub const SYS_afs_syscall: ::c_long = 183;
-pub const SYS_tuxcall: ::c_long = 184;
-pub const SYS_security: ::c_long = 185;
-pub const SYS_gettid: ::c_long = 186;
-pub const SYS_readahead: ::c_long = 187;
-pub const SYS_setxattr: ::c_long = 188;
-pub const SYS_lsetxattr: ::c_long = 189;
-pub const SYS_fsetxattr: ::c_long = 190;
-pub const SYS_getxattr: ::c_long = 191;
-pub const SYS_lgetxattr: ::c_long = 192;
-pub const SYS_fgetxattr: ::c_long = 193;
-pub const SYS_listxattr: ::c_long = 194;
-pub const SYS_llistxattr: ::c_long = 195;
-pub const SYS_flistxattr: ::c_long = 196;
-pub const SYS_removexattr: ::c_long = 197;
-pub const SYS_lremovexattr: ::c_long = 198;
-pub const SYS_fremovexattr: ::c_long = 199;
-pub const SYS_tkill: ::c_long = 200;
-pub const SYS_time: ::c_long = 201;
-pub const SYS_futex: ::c_long = 202;
-pub const SYS_sched_setaffinity: ::c_long = 203;
-pub const SYS_sched_getaffinity: ::c_long = 204;
-pub const SYS_set_thread_area: ::c_long = 205;
-pub const SYS_io_setup: ::c_long = 206;
-pub const SYS_io_destroy: ::c_long = 207;
-pub const SYS_io_getevents: ::c_long = 208;
-pub const SYS_io_submit: ::c_long = 209;
-pub const SYS_io_cancel: ::c_long = 210;
-pub const SYS_get_thread_area: ::c_long = 211;
-pub const SYS_lookup_dcookie: ::c_long = 212;
-pub const SYS_epoll_create: ::c_long = 213;
-pub const SYS_epoll_ctl_old: ::c_long = 214;
-pub const SYS_epoll_wait_old: ::c_long = 215;
-pub const SYS_remap_file_pages: ::c_long = 216;
-pub const SYS_getdents64: ::c_long = 217;
-pub const SYS_set_tid_address: ::c_long = 218;
-pub const SYS_restart_syscall: ::c_long = 219;
-pub const SYS_semtimedop: ::c_long = 220;
-pub const SYS_fadvise64: ::c_long = 221;
-pub const SYS_timer_create: ::c_long = 222;
-pub const SYS_timer_settime: ::c_long = 223;
-pub const SYS_timer_gettime: ::c_long = 224;
-pub const SYS_timer_getoverrun: ::c_long = 225;
-pub const SYS_timer_delete: ::c_long = 226;
-pub const SYS_clock_settime: ::c_long = 227;
-pub const SYS_clock_gettime: ::c_long = 228;
-pub const SYS_clock_getres: ::c_long = 229;
-pub const SYS_clock_nanosleep: ::c_long = 230;
-pub const SYS_exit_group: ::c_long = 231;
-pub const SYS_epoll_wait: ::c_long = 232;
-pub const SYS_epoll_ctl: ::c_long = 233;
-pub const SYS_tgkill: ::c_long = 234;
-pub const SYS_utimes: ::c_long = 235;
-pub const SYS_vserver: ::c_long = 236;
-pub const SYS_mbind: ::c_long = 237;
-pub const SYS_set_mempolicy: ::c_long = 238;
-pub const SYS_get_mempolicy: ::c_long = 239;
-pub const SYS_mq_open: ::c_long = 240;
-pub const SYS_mq_unlink: ::c_long = 241;
-pub const SYS_mq_timedsend: ::c_long = 242;
-pub const SYS_mq_timedreceive: ::c_long = 243;
-pub const SYS_mq_notify: ::c_long = 244;
-pub const SYS_mq_getsetattr: ::c_long = 245;
-pub const SYS_kexec_load: ::c_long = 246;
-pub const SYS_waitid: ::c_long = 247;
-pub const SYS_add_key: ::c_long = 248;
-pub const SYS_request_key: ::c_long = 249;
-pub const SYS_keyctl: ::c_long = 250;
-pub const SYS_ioprio_set: ::c_long = 251;
-pub const SYS_ioprio_get: ::c_long = 252;
-pub const SYS_inotify_init: ::c_long = 253;
-pub const SYS_inotify_add_watch: ::c_long = 254;
-pub const SYS_inotify_rm_watch: ::c_long = 255;
-pub const SYS_migrate_pages: ::c_long = 256;
-pub const SYS_openat: ::c_long = 257;
-pub const SYS_mkdirat: ::c_long = 258;
-pub const SYS_mknodat: ::c_long = 259;
-pub const SYS_fchownat: ::c_long = 260;
-pub const SYS_futimesat: ::c_long = 261;
-pub const SYS_newfstatat: ::c_long = 262;
-pub const SYS_unlinkat: ::c_long = 263;
-pub const SYS_renameat: ::c_long = 264;
-pub const SYS_linkat: ::c_long = 265;
-pub const SYS_symlinkat: ::c_long = 266;
-pub const SYS_readlinkat: ::c_long = 267;
-pub const SYS_fchmodat: ::c_long = 268;
-pub const SYS_faccessat: ::c_long = 269;
-pub const SYS_pselect6: ::c_long = 270;
-pub const SYS_ppoll: ::c_long = 271;
-pub const SYS_unshare: ::c_long = 272;
-pub const SYS_set_robust_list: ::c_long = 273;
-pub const SYS_get_robust_list: ::c_long = 274;
-pub const SYS_splice: ::c_long = 275;
-pub const SYS_tee: ::c_long = 276;
-pub const SYS_sync_file_range: ::c_long = 277;
-pub const SYS_vmsplice: ::c_long = 278;
-pub const SYS_move_pages: ::c_long = 279;
-pub const SYS_utimensat: ::c_long = 280;
-pub const SYS_epoll_pwait: ::c_long = 281;
-pub const SYS_signalfd: ::c_long = 282;
-pub const SYS_timerfd_create: ::c_long = 283;
-pub const SYS_eventfd: ::c_long = 284;
-pub const SYS_fallocate: ::c_long = 285;
-pub const SYS_timerfd_settime: ::c_long = 286;
-pub const SYS_timerfd_gettime: ::c_long = 287;
-pub const SYS_accept4: ::c_long = 288;
-pub const SYS_signalfd4: ::c_long = 289;
-pub const SYS_eventfd2: ::c_long = 290;
-pub const SYS_epoll_create1: ::c_long = 291;
-pub const SYS_dup3: ::c_long = 292;
-pub const SYS_pipe2: ::c_long = 293;
-pub const SYS_inotify_init1: ::c_long = 294;
-pub const SYS_preadv: ::c_long = 295;
-pub const SYS_pwritev: ::c_long = 296;
-pub const SYS_rt_tgsigqueueinfo: ::c_long = 297;
-pub const SYS_perf_event_open: ::c_long = 298;
-pub const SYS_recvmmsg: ::c_long = 299;
-pub const SYS_fanotify_init: ::c_long = 300;
-pub const SYS_fanotify_mark: ::c_long = 301;
-pub const SYS_prlimit64: ::c_long = 302;
-pub const SYS_name_to_handle_at: ::c_long = 303;
-pub const SYS_open_by_handle_at: ::c_long = 304;
-pub const SYS_clock_adjtime: ::c_long = 305;
-pub const SYS_syncfs: ::c_long = 306;
-pub const SYS_sendmmsg: ::c_long = 307;
-pub const SYS_setns: ::c_long = 308;
-pub const SYS_getcpu: ::c_long = 309;
-pub const SYS_process_vm_readv: ::c_long = 310;
-pub const SYS_process_vm_writev: ::c_long = 311;
-pub const SYS_kcmp: ::c_long = 312;
-pub const SYS_finit_module: ::c_long = 313;
-pub const SYS_sched_setattr: ::c_long = 314;
-pub const SYS_sched_getattr: ::c_long = 315;
-pub const SYS_renameat2: ::c_long = 316;
-pub const SYS_seccomp: ::c_long = 317;
-pub const SYS_getrandom: ::c_long = 318;
-pub const SYS_memfd_create: ::c_long = 319;
-pub const SYS_kexec_file_load: ::c_long = 320;
-pub const SYS_bpf: ::c_long = 321;
-pub const SYS_execveat: ::c_long = 322;
-pub const SYS_userfaultfd: ::c_long = 323;
-pub const SYS_membarrier: ::c_long = 324;
-pub const SYS_mlock2: ::c_long = 325;
-pub const SYS_copy_file_range: ::c_long = 326;
-pub const SYS_preadv2: ::c_long = 327;
-pub const SYS_pwritev2: ::c_long = 328;
-// FIXME syscalls 329-331 have been added in musl 1.16
-// See discussion https://github.com/rust-lang/libc/pull/699
-
// offsets in user_regs_structs, from sys/reg.h
pub const R15: ::c_int = 0;
pub const R14: ::c_int = 1;
@@ -484,19 +150,3 @@ pub const MAP_32BIT: ::c_int = 0x0040;
pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
-
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 42;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const PF_MAX: ::c_int = AF_MAX;
diff --git a/libc/src/lib.rs b/libc/src/lib.rs
index 2dc4270..6c2e6c8 100644
--- a/libc/src/lib.rs
+++ b/libc/src/lib.rs
@@ -21,6 +21,7 @@
feature = "rustc-dep-of-std",
feature(cfg_target_vendor, link_cfg, no_core)
)]
+#![cfg_attr(libc_thread_local, feature(thread_local))]
// Enable extra lints:
#![cfg_attr(feature = "extra_traits", deny(missing_debug_implementations))]
#![deny(missing_copy_implementations, safe_packed_borrows)]
@@ -113,6 +114,12 @@ cfg_if! {
mod switch;
pub use switch::*;
+ } else if #[cfg(target_os = "vxworks")] {
+ mod fixed_width_ints;
+ pub use fixed_width_ints::*;
+
+ mod vxworks;
+ pub use vxworks::*;
} else if #[cfg(unix)] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
diff --git a/libc/src/unix/bsd/apple/b32.rs b/libc/src/unix/bsd/apple/b32.rs
index 859809d..c05de30 100644
--- a/libc/src/unix/bsd/apple/b32.rs
+++ b/libc/src/unix/bsd/apple/b32.rs
@@ -81,6 +81,10 @@ cfg_if! {
}
}
+#[doc(hidden)]
+#[deprecated(since = "0.2.55")]
+pub const NET_RT_MAXID: ::c_int = 10;
+
pub const __PTHREAD_MUTEX_SIZE__: usize = 40;
pub const __PTHREAD_COND_SIZE__: usize = 24;
pub const __PTHREAD_CONDATTR_SIZE__: usize = 4;
diff --git a/libc/src/unix/bsd/apple/b64.rs b/libc/src/unix/bsd/apple/b64.rs
index 7b89fc6..2749260 100644
--- a/libc/src/unix/bsd/apple/b64.rs
+++ b/libc/src/unix/bsd/apple/b64.rs
@@ -86,6 +86,10 @@ cfg_if! {
}
}
+#[doc(hidden)]
+#[deprecated(since = "0.2.55")]
+pub const NET_RT_MAXID: ::c_int = 11;
+
pub const __PTHREAD_MUTEX_SIZE__: usize = 56;
pub const __PTHREAD_COND_SIZE__: usize = 40;
pub const __PTHREAD_CONDATTR_SIZE__: usize = 8;
diff --git a/libc/src/unix/bsd/apple/mod.rs b/libc/src/unix/bsd/apple/mod.rs
index af28dba..24ad12b 100644
--- a/libc/src/unix/bsd/apple/mod.rs
+++ b/libc/src/unix/bsd/apple/mod.rs
@@ -144,6 +144,8 @@ s! {
pub si_uid: ::uid_t,
pub si_status: ::c_int,
pub si_addr: *mut ::c_void,
+ //Requires it to be union for tests
+ //pub si_value: ::sigval,
_pad: [usize; 9],
}
@@ -287,14 +289,6 @@ s! {
pub int_n_sign_posn: ::c_char,
}
- pub struct sigevent {
- pub sigev_notify: ::c_int,
- pub sigev_signo: ::c_int,
- pub sigev_value: ::sigval,
- __unused1: *mut ::c_void, //actually a function pointer
- pub sigev_notify_attributes: *mut ::pthread_attr_t
- }
-
pub struct proc_taskinfo {
pub pti_virtual_size: u64,
pub pti_resident_size: u64,
@@ -612,6 +606,36 @@ s_no_extra_traits!{
pub ut_host: [::c_char; _UTX_HOSTSIZE],
ut_pad: [u32; 16],
}
+
+ pub struct sigevent {
+ pub sigev_notify: ::c_int,
+ pub sigev_signo: ::c_int,
+ pub sigev_value: ::sigval,
+ __unused1: *mut ::c_void, //actually a function pointer
+ pub sigev_notify_attributes: *mut ::pthread_attr_t
+ }
+}
+
+impl siginfo_t {
+ pub unsafe fn si_addr(&self) -> *mut ::c_void {
+ self.si_addr
+ }
+
+ pub unsafe fn si_value(&self) -> ::sigval {
+ #[repr(C)]
+ struct siginfo_timer {
+ _si_signo: ::c_int,
+ _si_errno: ::c_int,
+ _si_code: ::c_int,
+ _si_pid: ::pid_t,
+ _si_uid: ::uid_t,
+ _si_status: ::c_int,
+ _si_addr: *mut ::c_void,
+ si_value: ::sigval,
+ }
+
+ (*(self as *const siginfo_t as *const siginfo_timer)).si_value
+ }
}
cfg_if! {
@@ -1159,6 +1183,39 @@ cfg_if! {
self.ut_pad.hash(state);
}
}
+
+ impl PartialEq for sigevent {
+ fn eq(&self, other: &sigevent) -> bool {
+ self.sigev_notify == other.sigev_notify
+ && self.sigev_signo == other.sigev_signo
+ && self.sigev_value == other.sigev_value
+ && self.sigev_notify_attributes
+ == other.sigev_notify_attributes
+ }
+ }
+
+ impl Eq for sigevent {}
+
+ impl ::fmt::Debug for sigevent {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("sigevent")
+ .field("sigev_notify", &self.sigev_notify)
+ .field("sigev_signo", &self.sigev_signo)
+ .field("sigev_value", &self.sigev_value)
+ .field("sigev_notify_attributes",
+ &self.sigev_notify_attributes)
+ .finish()
+ }
+ }
+
+ impl ::hash::Hash for sigevent {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.sigev_notify.hash(state);
+ self.sigev_signo.hash(state);
+ self.sigev_value.hash(state);
+ self.sigev_notify_attributes.hash(state);
+ }
+ }
}
}
@@ -1704,11 +1761,6 @@ pub const TIOCPTYGRANT: ::c_uint = 0x20007454;
pub const TIOCPTYGNAME: ::c_uint = 0x40807453;
pub const TIOCPTYUNLK: ::c_uint = 0x20007452;
-pub const FIONCLEX: ::c_uint = 0x20006602;
-pub const FIONREAD: ::c_ulong = 0x4004667f;
-pub const FIOASYNC: ::c_ulong = 0x8004667d;
-pub const FIOSETOWN: ::c_ulong = 0x8004667c;
-pub const FIOGETOWN: ::c_ulong = 0x4004667b;
pub const FIODTYPE: ::c_ulong = 0x4004667a;
pub const B0: speed_t = 0;
@@ -2082,13 +2134,6 @@ pub const AF_SYSTEM: ::c_int = 32;
pub const AF_NETBIOS: ::c_int = 33;
pub const AF_PPP: ::c_int = 34;
pub const pseudo_AF_HDRCMPLT: ::c_int = 35;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 40;
pub const AF_SYS_CONTROL: ::c_int = 2;
pub const SYSPROTO_EVENT: ::c_int = 1;
@@ -2129,30 +2174,10 @@ pub const PF_NATM: ::c_int = AF_NATM;
pub const PF_SYSTEM: ::c_int = AF_SYSTEM;
pub const PF_NETBIOS: ::c_int = AF_NETBIOS;
pub const PF_PPP: ::c_int = AF_PPP;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const PF_MAX: ::c_int = AF_MAX;
-
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const NET_MAXID: ::c_int = AF_MAX;
pub const NET_RT_DUMP: ::c_int = 1;
pub const NET_RT_FLAGS: ::c_int = 2;
pub const NET_RT_IFLIST: ::c_int = 3;
-#[doc(hidden)]
-#[deprecated(since = "0.2.55")]
-pub const NET_RT_MAXID: ::c_int = 10;
pub const SOMAXCONN: ::c_int = 128;
diff --git a/libc/src/unix/bsd/freebsdlike/dragonfly/errno.rs b/libc/src/unix/bsd/freebsdlike/dragonfly/errno.rs
new file mode 100644
index 0000000..e18036a
--- /dev/null
+++ b/libc/src/unix/bsd/freebsdlike/dragonfly/errno.rs
@@ -0,0 +1,12 @@
+// DragonFlyBSD's __error function is declared with "static inline", so it must
+// be implemented in the libc crate, as a pointer to a static thread_local.
+f! {
+ pub fn __error() -> *mut ::c_int {
+ &mut errno
+ }
+}
+
+extern {
+ #[thread_local]
+ pub static mut errno: ::c_int;
+}
diff --git a/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs b/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs
index 26faffe..fc94fd3 100644
--- a/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs
+++ b/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs
@@ -70,19 +70,6 @@ s! {
pub mq_curmsgs: ::c_long,
}
- pub struct sigevent {
- pub sigev_notify: ::c_int,
- // The union is 8-byte in size, so it is aligned at a 8-byte offset.
- #[cfg(target_pointer_width = "64")]
- __unused1: ::c_int,
- pub sigev_signo: ::c_int, //actually a union
- // pad the union
- #[cfg(target_pointer_width = "64")]
- __unused2: ::c_int,
- pub sigev_value: ::sigval,
- __unused3: *mut ::c_void //actually a function pointer
- }
-
pub struct statvfs {
pub f_bsize: ::c_ulong,
pub f_frsize: ::c_ulong,
@@ -234,6 +221,20 @@ s_no_extra_traits! {
pub f_asyncreads: ::c_long,
pub f_mntfromname: [::c_char; 90],
}
+
+ pub struct sigevent {
+ pub sigev_notify: ::c_int,
+ // The union is 8-byte in size, so it is aligned at a 8-byte offset.
+ #[cfg(target_pointer_width = "64")]
+ __unused1: ::c_int,
+ pub sigev_signo: ::c_int, //actually a union
+ // pad the union
+ #[cfg(target_pointer_width = "64")]
+ __unused2: ::c_int,
+ pub sigev_value: ::sigval,
+ __unused3: *mut ::c_void //actually a function pointer
+ }
+
}
cfg_if! {
@@ -408,6 +409,31 @@ cfg_if! {
self.f_mntfromname.hash(state);
}
}
+
+ impl PartialEq for sigevent {
+ fn eq(&self, other: &sigevent) -> bool {
+ self.sigev_notify == other.sigev_notify
+ && self.sigev_signo == other.sigev_signo
+ && self.sigev_value == other.sigev_value
+ }
+ }
+ impl Eq for sigevent {}
+ impl ::fmt::Debug for sigevent {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("sigevent")
+ .field("sigev_notify", &self.sigev_notify)
+ .field("sigev_signo", &self.sigev_signo)
+ .field("sigev_value", &self.sigev_value)
+ .finish()
+ }
+ }
+ impl ::hash::Hash for sigevent {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.sigev_notify.hash(state);
+ self.sigev_signo.hash(state);
+ self.sigev_value.hash(state);
+ }
+ }
}
}
@@ -891,23 +917,8 @@ pub const TCP_FASTKEEP: ::c_int = 128;
pub const AF_BLUETOOTH: ::c_int = 33;
pub const AF_MPLS: ::c_int = 34;
pub const AF_IEEE80211: ::c_int = 35;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 36;
pub const PF_BLUETOOTH: ::c_int = AF_BLUETOOTH;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const PF_MAX: ::c_int = AF_MAX;
pub const NET_RT_DUMP: ::c_int = 1;
pub const NET_RT_FLAGS: ::c_int = 2;
@@ -916,15 +927,6 @@ pub const NET_RT_MAXID: ::c_int = 4;
pub const SOMAXOPT_SIZE: ::c_int = 65536;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const NET_MAXID: ::c_int = AF_MAX;
-
pub const MSG_UNUSED09: ::c_int = 0x00000200;
pub const MSG_NOSIGNAL: ::c_int = 0x00000400;
pub const MSG_SYNC: ::c_int = 0x00000800;
@@ -1058,3 +1060,10 @@ extern {
pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int;
pub fn uname(buf: *mut ::utsname) -> ::c_int;
}
+
+cfg_if! {
+ if #[cfg(libc_thread_local)] {
+ mod errno;
+ pub use self::errno::*;
+ }
+}
diff --git a/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs b/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
index 7d7dc2c..b71b284 100644
--- a/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+++ b/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
@@ -189,6 +189,8 @@ cfg_if! {
}
}
+pub const ELAST: ::c_int = 96;
+
extern {
// Return type ::c_int was removed in FreeBSD 12
pub fn setgrent() -> ::c_int;
diff --git a/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs b/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
index ab1b8d9..464744d 100644
--- a/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+++ b/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
@@ -190,6 +190,15 @@ cfg_if! {
}
}
+cfg_if! {
+ if #[cfg(not(freebsd13))] {
+ pub const ELAST: ::c_int = 96;
+ } else {
+ pub const EINTEGRITY: ::c_int = 97;
+ pub const ELAST: ::c_int = 97;
+ }
+}
+
extern {
pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int)
diff --git a/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs b/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs
index e594551..fea680d 100644
--- a/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs
+++ b/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs
@@ -46,18 +46,6 @@ s! {
pub ip6: *mut ::in6_addr,
}
- pub struct sigevent {
- pub sigev_notify: ::c_int,
- pub sigev_signo: ::c_int,
- pub sigev_value: ::sigval,
- //The rest of the structure is actually a union. We expose only
- //sigev_notify_thread_id because it's the most useful union member.
- pub sigev_notify_thread_id: ::lwpid_t,
- #[cfg(target_pointer_width = "64")]
- __unused1: ::c_int,
- __unused2: [::c_long; 7]
- }
-
pub struct statvfs {
pub f_bavail: ::fsblkcnt_t,
pub f_bfree: ::fsblkcnt_t,
@@ -151,6 +139,18 @@ s_no_extra_traits! {
pub mq_curmsgs: ::c_long,
__reserved: [::c_long; 4]
}
+
+ pub struct sigevent {
+ pub sigev_notify: ::c_int,
+ pub sigev_signo: ::c_int,
+ pub sigev_value: ::sigval,
+ //The rest of the structure is actually a union. We expose only
+ //sigev_notify_thread_id because it's the most useful union member.
+ pub sigev_notify_thread_id: ::lwpid_t,
+ #[cfg(target_pointer_width = "64")]
+ __unused1: ::c_int,
+ __unused2: [::c_long; 7]
+ }
}
cfg_if! {
@@ -274,6 +274,36 @@ cfg_if! {
self.mq_curmsgs.hash(state);
}
}
+
+ impl PartialEq for sigevent {
+ fn eq(&self, other: &sigevent) -> bool {
+ self.sigev_notify == other.sigev_notify
+ && self.sigev_signo == other.sigev_signo
+ && self.sigev_value == other.sigev_value
+ && self.sigev_notify_thread_id
+ == other.sigev_notify_thread_id
+ }
+ }
+ impl Eq for sigevent {}
+ impl ::fmt::Debug for sigevent {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("sigevent")
+ .field("sigev_notify", &self.sigev_notify)
+ .field("sigev_signo", &self.sigev_signo)
+ .field("sigev_value", &self.sigev_value)
+ .field("sigev_notify_thread_id",
+ &self.sigev_notify_thread_id)
+ .finish()
+ }
+ }
+ impl ::hash::Hash for sigevent {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.sigev_notify.hash(state);
+ self.sigev_signo.hash(state);
+ self.sigev_value.hash(state);
+ self.sigev_notify_thread_id.hash(state);
+ }
+ }
}
}
@@ -303,7 +333,6 @@ pub const ENOTCAPABLE: ::c_int = 93;
pub const ECAPMODE: ::c_int = 94;
pub const ENOTRECOVERABLE: ::c_int = 95;
pub const EOWNERDEAD: ::c_int = 96;
-pub const ELAST: ::c_int = 96;
pub const RLIMIT_NPTS: ::c_int = 11;
pub const RLIMIT_SWAP: ::c_int = 12;
pub const RLIMIT_KQUEUES: ::c_int = 13;
@@ -540,14 +569,6 @@ pub const TIOCSIG: ::c_uint = 0x2004745f;
pub const TIOCM_DCD: ::c_int = 0x40;
pub const H4DISC: ::c_int = 0x7;
-pub const FIONCLEX: ::c_ulong = 0x20006602;
-pub const FIONREAD: ::c_ulong = 0x4004667f;
-pub const FIOASYNC: ::c_ulong = 0x8004667d;
-pub const FIOSETOWN: ::c_ulong = 0x8004667c;
-pub const FIOGETOWN: ::c_ulong = 0x4004667b;
-pub const FIODTYPE: ::c_ulong = 0x4004667a;
-pub const FIOGETLBA: ::c_ulong = 0x40046679;
-pub const FIODGNAME: ::c_ulong = 0x80106678;
pub const FIONWRITE: ::c_ulong = 0x40046677;
pub const FIONSPACE: ::c_ulong = 0x40046676;
pub const FIOSEEKDATA: ::c_ulong = 0xc0086661;
@@ -624,13 +645,6 @@ pub const AF_BLUETOOTH: ::c_int = 36;
pub const AF_IEEE80211: ::c_int = 37;
pub const AF_INET_SDP: ::c_int = 40;
pub const AF_INET6_SDP: ::c_int = 42;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 42;
// https://github.com/freebsd/freebsd/blob/master/sys/net/if.h#L140
pub const IFF_UP: ::c_int = 0x1; // (n) interface is up
@@ -937,14 +951,6 @@ pub const PF_BLUETOOTH: ::c_int = AF_BLUETOOTH;
pub const PF_IEEE80211: ::c_int = AF_IEEE80211;
pub const PF_INET_SDP: ::c_int = AF_INET_SDP;
pub const PF_INET6_SDP: ::c_int = AF_INET6_SDP;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const PF_MAX: ::c_int = AF_MAX;
pub const NET_RT_DUMP: ::c_int = 1;
pub const NET_RT_FLAGS: ::c_int = 2;
@@ -981,10 +987,6 @@ pub const SHM_ANON: *mut ::c_char = 1 as *mut ::c_char;
// compatibility only, and are scheduled to be removed in libc 1.0.0.
#[doc(hidden)]
#[deprecated(since="0.2.54",note="Removed in FreeBSD 11")]
-#[allow(deprecated)]
-pub const NET_MAXID: ::c_int = AF_MAX;
-#[doc(hidden)]
-#[deprecated(since="0.2.54",note="Removed in FreeBSD 11")]
pub const CTL_MAXID: ::c_int = 10;
#[doc(hidden)]
#[deprecated(since="0.2.54",note="Removed in FreeBSD 11")]
@@ -1329,9 +1331,14 @@ cfg_if! {
if #[cfg(freebsd12)] {
mod freebsd12;
pub use self::freebsd12::*;
- } else {
+ } else if #[cfg(freebsd13)] {
+ mod freebsd12;
+ pub use self::freebsd12::*;
+ } else if #[cfg(freebsd11)] {
mod freebsd11;
pub use self::freebsd11::*;
+ } else {
+ // Unknown freebsd version
}
}
diff --git a/libc/src/unix/bsd/freebsdlike/mod.rs b/libc/src/unix/bsd/freebsdlike/mod.rs
index 64168eb..f937d77 100644
--- a/libc/src/unix/bsd/freebsdlike/mod.rs
+++ b/libc/src/unix/bsd/freebsdlike/mod.rs
@@ -21,6 +21,16 @@ impl ::Clone for timezone {
fn clone(&self) -> timezone { *self }
}
+impl siginfo_t {
+ pub unsafe fn si_addr(&self) -> *mut ::c_void {
+ self.si_addr
+ }
+
+ pub unsafe fn si_value(&self) -> ::sigval {
+ self.si_value
+ }
+}
+
s! {
pub struct in_addr {
pub s_addr: ::in_addr_t,
@@ -68,7 +78,9 @@ s! {
pub si_uid: ::uid_t,
pub si_status: ::c_int,
pub si_addr: *mut ::c_void,
- _pad: [::c_int; 12],
+ pub si_value: ::sigval,
+ _pad1: ::c_long,
+ _pad2: [::c_int; 7],
}
pub struct sigaction {
@@ -997,6 +1009,10 @@ pub const SLIPDISC: ::c_int = 0x4;
pub const PPPDISC: ::c_int = 0x5;
pub const NETGRAPHDISC: ::c_int = 0x6;
+pub const FIODTYPE: ::c_ulong = 0x4004667a;
+pub const FIOGETLBA: ::c_ulong = 0x40046679;
+pub const FIODGNAME: ::c_ulong = 0x80106678;
+
pub const B0: speed_t = 0;
pub const B50: speed_t = 50;
pub const B75: speed_t = 75;
@@ -1136,7 +1152,7 @@ extern {
pub fn getutxline(ut: *const utmpx) -> *mut utmpx;
pub fn initgroups(name: *const ::c_char, basegid: ::gid_t) -> ::c_int;
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "kevent@FBSD_1.0"
)]
pub fn kevent(kq: ::c_int,
@@ -1155,7 +1171,7 @@ extern {
pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char,
mode: ::mode_t) -> ::c_int;
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "mknodat@FBSD_1.1"
)]
pub fn mknodat(dirfd: ::c_int, pathname: *const ::c_char,
diff --git a/libc/src/unix/bsd/mod.rs b/libc/src/unix/bsd/mod.rs
index 8bc6c7c..ee64411 100644
--- a/libc/src/unix/bsd/mod.rs
+++ b/libc/src/unix/bsd/mod.rs
@@ -233,7 +233,12 @@ pub const LC_TIME: ::c_int = 5;
pub const LC_MESSAGES: ::c_int = 6;
pub const FIOCLEX: ::c_ulong = 0x20006601;
+pub const FIONCLEX: ::c_ulong = 0x20006602;
+pub const FIONREAD: ::c_ulong = 0x4004667f;
pub const FIONBIO: ::c_ulong = 0x8004667e;
+pub const FIOASYNC: ::c_ulong = 0x8004667d;
+pub const FIOSETOWN: ::c_ulong = 0x8004667c;
+pub const FIOGETOWN: ::c_ulong = 0x4004667b;
pub const PATH_MAX: ::c_int = 1024;
@@ -531,7 +536,7 @@ extern {
#[cfg_attr(target_os = "macos", link_name = "glob$INODE64")]
#[cfg_attr(target_os = "netbsd", link_name = "__glob30")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "glob@FBSD_1.0"
)]
pub fn glob(pattern: *const ::c_char,
@@ -541,7 +546,7 @@ extern {
pglob: *mut ::glob_t) -> ::c_int;
#[cfg_attr(target_os = "netbsd", link_name = "__globfree30")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "globfree@FBSD_1.0"
)]
pub fn globfree(pglob: *mut ::glob_t);
diff --git a/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs b/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs
index 9d710eb..893b157 100644
--- a/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs
+++ b/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs
@@ -9,6 +9,22 @@ pub type mqd_t = ::c_int;
type __pthread_spin_t = __cpu_simple_lock_nv_t;
pub type vm_size_t = ::uintptr_t;
+impl siginfo_t {
+ pub unsafe fn si_value(&self) -> ::sigval {
+ #[repr(C)]
+ struct siginfo_timer {
+ _si_signo: ::c_int,
+ _si_errno: ::c_int,
+ _si_code: ::c_int,
+ __pad1: ::c_int,
+ _pid: ::pid_t,
+ _uid: ::uid_t,
+ value: ::sigval,
+ }
+ (*(self as *const siginfo_t as *const siginfo_timer)).value
+ }
+}
+
s! {
pub struct aiocb {
pub aio_offset: ::off_t,
@@ -46,14 +62,6 @@ s! {
pub mq_curmsgs: ::c_long,
}
- pub struct sigevent {
- pub sigev_notify: ::c_int,
- pub sigev_signo: ::c_int,
- pub sigev_value: ::sigval,
- __unused1: *mut ::c_void, //actually a function pointer
- pub sigev_notify_attributes: *mut ::c_void
- }
-
pub struct sigset_t {
__bits: [u32; 4],
}
@@ -356,6 +364,14 @@ s_no_extra_traits! {
__ss_pad2: i64,
__ss_pad3: [u8; 112],
}
+
+ pub struct sigevent {
+ pub sigev_notify: ::c_int,
+ pub sigev_signo: ::c_int,
+ pub sigev_value: ::sigval,
+ __unused1: *mut ::c_void, //actually a function pointer
+ pub sigev_notify_attributes: *mut ::c_void
+ }
}
cfg_if! {
@@ -658,6 +674,36 @@ cfg_if! {
self.__ss_pad3.hash(state);
}
}
+
+ impl PartialEq for sigevent {
+ fn eq(&self, other: &sigevent) -> bool {
+ self.sigev_notify == other.sigev_notify
+ && self.sigev_signo == other.sigev_signo
+ && self.sigev_value == other.sigev_value
+ && self.sigev_notify_attributes
+ == other.sigev_notify_attributes
+ }
+ }
+ impl Eq for sigevent {}
+ impl ::fmt::Debug for sigevent {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("sigevent")
+ .field("sigev_notify", &self.sigev_notify)
+ .field("sigev_signo", &self.sigev_signo)
+ .field("sigev_value", &self.sigev_value)
+ .field("sigev_notify_attributes",
+ &self.sigev_notify_attributes)
+ .finish()
+ }
+ }
+ impl ::hash::Hash for sigevent {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.sigev_notify.hash(state);
+ self.sigev_signo.hash(state);
+ self.sigev_value.hash(state);
+ self.sigev_notify_attributes.hash(state);
+ }
+ }
}
}
@@ -853,22 +899,6 @@ pub const AF_BLUETOOTH: ::c_int = 31;
pub const AF_IEEE80211: ::c_int = 32;
pub const AF_MPLS: ::c_int = 33;
pub const AF_ROUTE: ::c_int = 34;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 36;
-
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const NET_MAXID: ::c_int = AF_MAX;
pub const NET_RT_DUMP: ::c_int = 1;
pub const NET_RT_FLAGS: ::c_int = 2;
pub const NET_RT_OOOIFLIST: ::c_int = 3;
@@ -884,15 +914,6 @@ pub const PF_BLUETOOTH: ::c_int = AF_BLUETOOTH;
pub const PF_MPLS: ::c_int = AF_MPLS;
pub const PF_ROUTE: ::c_int = AF_ROUTE;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const PF_MAX: ::c_int = AF_MAX;
-
pub const MSG_NBIO: ::c_int = 0x1000;
pub const MSG_WAITFORONE: ::c_int = 0x2000;
pub const MSG_NOTIFICATION: ::c_int = 0x4000;
@@ -1347,14 +1368,9 @@ pub const CHWFLOW: ::tcflag_t = ::MDMBUF | ::CRTSCTS | ::CDTRCTS;
pub const SOCK_CLOEXEC: ::c_int = 0x10000000;
pub const SOCK_NONBLOCK: ::c_int = 0x20000000;
-pub const FIONCLEX: ::c_ulong = 0x20006602;
// Uncomment on next NetBSD release
// pub const FIOSEEKDATA: ::c_ulong = 0xc0086661;
// pub const FIOSEEKHOLE: ::c_ulong = 0xc0086662;
-pub const FIONREAD: ::c_ulong = 0x4004667f;
-pub const FIOASYNC: ::c_ulong = 0x8004667d;
-pub const FIOSETOWN: ::c_ulong = 0x8004667c;
-pub const FIOGETOWN: ::c_ulong = 0x4004667b;
pub const OFIOGETBMAP: ::c_ulong = 0xc004667a;
pub const FIOGETBMAP: ::c_ulong = 0xc008667a;
pub const FIONWRITE: ::c_ulong = 0x40046679;
diff --git a/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs b/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs
index 09739cb..a397d58 100644
--- a/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs
+++ b/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs
@@ -308,6 +308,21 @@ s! {
}
}
+impl siginfo_t {
+ pub unsafe fn si_value(&self) -> ::sigval {
+ #[repr(C)]
+ struct siginfo_timer {
+ _si_signo: ::c_int,
+ _si_errno: ::c_int,
+ _si_code: ::c_int,
+ _pid: ::pid_t,
+ _uid: ::uid_t,
+ value: ::sigval,
+ }
+ (*(self as *const siginfo_t as *const siginfo_timer)).value
+ }
+}
+
s_no_extra_traits! {
pub struct dirent {
pub d_fileno: ::ino_t,
@@ -834,22 +849,6 @@ pub const AF_BLUETOOTH: ::c_int = 32;
pub const AF_MPLS: ::c_int = 33;
pub const pseudo_AF_PFLOW: ::c_int = 34;
pub const pseudo_AF_PIPEX: ::c_int = 35;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 36;
-
-#[doc(hidden)]
-#[allow(deprecated)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const NET_MAXID: ::c_int = AF_MAX;
pub const NET_RT_DUMP: ::c_int = 1;
pub const NET_RT_FLAGS: ::c_int = 2;
pub const NET_RT_IFLIST: ::c_int = 3;
@@ -872,14 +871,6 @@ pub const PF_BLUETOOTH: ::c_int = AF_BLUETOOTH;
pub const PF_MPLS: ::c_int = AF_MPLS;
pub const PF_PFLOW: ::c_int = pseudo_AF_PFLOW;
pub const PF_PIPEX: ::c_int = pseudo_AF_PIPEX;
-#[doc(hidden)]
-#[allow(deprecated)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const PF_MAX: ::c_int = AF_MAX;
pub const SCM_TIMESTAMP: ::c_int = 0x04;
@@ -1192,7 +1183,8 @@ pub const KERN_CONSBUF: ::c_int = 83;
pub const KERN_AUDIO: ::c_int = 84;
pub const KERN_CPUSTATS: ::c_int = 85;
pub const KERN_PFSTATUS: ::c_int = 86;
-pub const KERN_MAXID: ::c_int = 87;
+pub const KERN_TIMEOUT_STATS: ::c_int = 87;
+pub const KERN_MAXID: ::c_int = 88;
pub const KERN_PROC_ALL: ::c_int = 0;
pub const KERN_PROC_PID: ::c_int = 1;
diff --git a/libc/src/unix/haiku/mod.rs b/libc/src/unix/haiku/mod.rs
index be9a6cf..c8cf8ad 100644
--- a/libc/src/unix/haiku/mod.rs
+++ b/libc/src/unix/haiku/mod.rs
@@ -287,14 +287,6 @@ s! {
sa_userdata: *mut ::c_void,
}
- pub struct sigevent {
- pub sigev_notify: ::c_int,
- pub sigev_signo: ::c_int,
- pub sigev_value: ::sigval,
- __unused1: *mut ::c_void, // actually a function pointer
- pub sigev_notify_attributes: *mut ::pthread_attr_t,
- }
-
pub struct sem_t {
pub se_type: i32,
pub se_named_id: i32, // this is actually a union
@@ -329,6 +321,14 @@ s_no_extra_traits! {
pub d_reclen: ::c_ushort,
pub d_name: [::c_char; 1024], // Max length is _POSIX_PATH_MAX
}
+
+ pub struct sigevent {
+ pub sigev_notify: ::c_int,
+ pub sigev_signo: ::c_int,
+ pub sigev_value: ::sigval,
+ __unused1: *mut ::c_void, // actually a function pointer
+ pub sigev_notify_attributes: *mut ::pthread_attr_t,
+ }
}
cfg_if! {
@@ -438,6 +438,36 @@ cfg_if! {
self.d_name.hash(state);
}
}
+
+ impl PartialEq for sigevent {
+ fn eq(&self, other: &sigevent) -> bool {
+ self.sigev_notify == other.sigev_notify
+ && self.sigev_signo == other.sigev_signo
+ && self.sigev_value == other.sigev_value
+ && self.sigev_notify_attributes
+ == other.sigev_notify_attributes
+ }
+ }
+ impl Eq for sigevent {}
+ impl ::fmt::Debug for sigevent {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("sigevent")
+ .field("sigev_notify", &self.sigev_notify)
+ .field("sigev_signo", &self.sigev_signo)
+ .field("sigev_value", &self.sigev_value)
+ .field("sigev_notify_attributes",
+ &self.sigev_notify_attributes)
+ .finish()
+ }
+ }
+ impl ::hash::Hash for sigevent {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.sigev_notify.hash(state);
+ self.sigev_signo.hash(state);
+ self.sigev_value.hash(state);
+ self.sigev_notify_attributes.hash(state);
+ }
+ }
}
}
@@ -770,13 +800,6 @@ pub const AF_NOTIFY: ::c_int = 8;
pub const AF_LOCAL: ::c_int = 9;
pub const AF_UNIX: ::c_int = AF_LOCAL;
pub const AF_BLUETOOTH: ::c_int = 10;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 11;
pub const IP_OPTIONS: ::c_int = 1;
pub const IP_HDRINCL: ::c_int = 2;
@@ -1153,6 +1176,31 @@ pub const TCIFLUSH: ::c_int = 0x01;
pub const TCOFLUSH: ::c_int = 0x02;
pub const TCIOFLUSH: ::c_int = 0x03;
+pub const TCGETA: ::c_int = 0x8000;
+pub const TCSETA: ::c_int = TCGETA + 1;
+pub const TCSETAF: ::c_int = TCGETA + 2;
+pub const TCSETAW: ::c_int = TCGETA + 3;
+pub const TCWAITEVENT: ::c_int = TCGETA + 4;
+pub const TCSBRK: ::c_int = TCGETA + 5;
+pub const TCFLSH: ::c_int = TCGETA + 6;
+pub const TCXONC: ::c_int = TCGETA + 7;
+pub const TCQUERYCONNECTED: ::c_int = TCGETA + 8;
+pub const TCGETBITS: ::c_int = TCGETA + 9;
+pub const TCSETDTR: ::c_int = TCGETA + 10;
+pub const TCSETRTS: ::c_int = TCGETA + 11;
+pub const TIOCGWINSZ: ::c_int = TCGETA + 12;
+pub const TIOCSWINSZ: ::c_int = TCGETA + 13;
+pub const TCVTIME: ::c_int = TCGETA + 14;
+pub const TIOCGPGRP: ::c_int = TCGETA + 15;
+pub const TIOCSPGRP: ::c_int = TCGETA + 16;
+pub const TIOCSCTTY: ::c_int = TCGETA + 17;
+pub const TIOCMGET: ::c_int = TCGETA + 18;
+pub const TIOCMSET: ::c_int = TCGETA + 19;
+pub const TIOCSBRK: ::c_int = TCGETA + 20;
+pub const TIOCCBRK: ::c_int = TCGETA + 21;
+pub const TIOCMBIS: ::c_int = TCGETA + 22;
+pub const TIOCMBIC: ::c_int = TCGETA + 23;
+
f! {
pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () {
let fd = fd as usize;
@@ -1219,6 +1267,7 @@ extern {
pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;
pub fn strerror_r(errnum: ::c_int, buf: *mut c_char,
buflen: ::size_t) -> ::c_int;
+ pub fn _errnop() -> *mut ::c_int;
pub fn abs(i: ::c_int) -> ::c_int;
pub fn atof(s: *const ::c_char) -> ::c_double;
diff --git a/libc/src/unix/notbsd/android/b32/arm.rs b/libc/src/unix/linux_like/android/b32/arm.rs
index 1320b16..1320b16 100644
--- a/libc/src/unix/notbsd/android/b32/arm.rs
+++ b/libc/src/unix/linux_like/android/b32/arm.rs
diff --git a/libc/src/unix/notbsd/android/b32/mod.rs b/libc/src/unix/linux_like/android/b32/mod.rs
index e8fd20e..e8fd20e 100644
--- a/libc/src/unix/notbsd/android/b32/mod.rs
+++ b/libc/src/unix/linux_like/android/b32/mod.rs
diff --git a/libc/src/unix/notbsd/android/b32/x86.rs b/libc/src/unix/linux_like/android/b32/x86.rs
index a56fa00..a56fa00 100644
--- a/libc/src/unix/notbsd/android/b32/x86.rs
+++ b/libc/src/unix/linux_like/android/b32/x86.rs
diff --git a/libc/src/unix/notbsd/android/b64/aarch64.rs b/libc/src/unix/linux_like/android/b64/aarch64.rs
index cb1c81b..cb1c81b 100644
--- a/libc/src/unix/notbsd/android/b64/aarch64.rs
+++ b/libc/src/unix/linux_like/android/b64/aarch64.rs
diff --git a/libc/src/unix/notbsd/android/b64/mod.rs b/libc/src/unix/linux_like/android/b64/mod.rs
index d9759bd..d9759bd 100644
--- a/libc/src/unix/notbsd/android/b64/mod.rs
+++ b/libc/src/unix/linux_like/android/b64/mod.rs
diff --git a/libc/src/unix/notbsd/android/b64/x86_64.rs b/libc/src/unix/linux_like/android/b64/x86_64.rs
index 2ab6080..2ab6080 100644
--- a/libc/src/unix/notbsd/android/b64/x86_64.rs
+++ b/libc/src/unix/linux_like/android/b64/x86_64.rs
diff --git a/libc/src/unix/notbsd/android/mod.rs b/libc/src/unix/linux_like/android/mod.rs
index f4fb83d..ab6e265 100644
--- a/libc/src/unix/notbsd/android/mod.rs
+++ b/libc/src/unix/linux_like/android/mod.rs
@@ -785,6 +785,7 @@ pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 2;
pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_NORMAL;
pub const FIOCLEX: ::c_int = 0x5451;
+pub const FIONCLEX: ::c_int = 0x5450;
pub const SIGCHLD: ::c_int = 17;
pub const SIGBUS: ::c_int = 7;
@@ -951,22 +952,6 @@ pub const SOL_ATALK: ::c_int = 258;
pub const SOL_NETROM: ::c_int = 259;
pub const SOL_ROSE: ::c_int = 260;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 43;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const PF_MAX: ::c_int = AF_MAX;
-
/* DCCP socket options */
pub const DCCP_SOCKOPT_PACKET_SIZE: ::c_int = 1;
pub const DCCP_SOCKOPT_SERVICE: ::c_int = 2;
@@ -2207,3 +2192,18 @@ cfg_if! {
// Unknown target_pointer_width
}
}
+
+impl siginfo_t {
+ pub unsafe fn si_value(&self) -> ::sigval {
+ #[repr(C)]
+ struct siginfo_timer {
+ _si_signo: ::c_int,
+ _si_errno: ::c_int,
+ _si_code: ::c_int,
+ _si_tid: ::c_int,
+ _si_overrun: ::c_int,
+ si_sigval: ::sigval,
+ }
+ (*(self as *const siginfo_t as *const siginfo_timer)).si_sigval
+ }
+}
diff --git a/libc/src/unix/notbsd/emscripten/align.rs b/libc/src/unix/linux_like/emscripten/align.rs
index 26a49b2..26a49b2 100644
--- a/libc/src/unix/notbsd/emscripten/align.rs
+++ b/libc/src/unix/linux_like/emscripten/align.rs
diff --git a/libc/src/unix/notbsd/emscripten/mod.rs b/libc/src/unix/linux_like/emscripten/mod.rs
index ba13d8e..67631fc 100644
--- a/libc/src/unix/notbsd/emscripten/mod.rs
+++ b/libc/src/unix/linux_like/emscripten/mod.rs
@@ -921,25 +921,10 @@ pub const AF_IB: ::c_int = 27;
pub const AF_MPLS: ::c_int = 28;
pub const AF_NFC: ::c_int = 39;
pub const AF_VSOCK: ::c_int = 40;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 42;
pub const PF_IB: ::c_int = AF_IB;
pub const PF_MPLS: ::c_int = AF_MPLS;
pub const PF_NFC: ::c_int = AF_NFC;
pub const PF_VSOCK: ::c_int = AF_VSOCK;
-#[doc(hidden)]
-#[allow(deprecated)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const PF_MAX: ::c_int = AF_MAX;
// System V IPC
pub const IPC_PRIVATE: ::key_t = 0;
@@ -1295,7 +1280,7 @@ pub const RTLD_GLOBAL: ::c_int = 0x100;
pub const RTLD_NOLOAD: ::c_int = 0x4;
// TODO(#247) Temporarily musl-specific (available since musl 0.9.12 / Linux
-// kernel 3.10). See also notbsd/mod.rs
+// kernel 3.10). See also linux_like/mod.rs
pub const CLOCK_SGI_CYCLE: ::clockid_t = 10;
pub const CLOCK_TAI: ::clockid_t = 11;
diff --git a/libc/src/unix/notbsd/emscripten/no_align.rs b/libc/src/unix/linux_like/emscripten/no_align.rs
index ece4dff..ece4dff 100644
--- a/libc/src/unix/notbsd/emscripten/no_align.rs
+++ b/libc/src/unix/linux_like/emscripten/no_align.rs
diff --git a/libc/src/unix/notbsd/linux/align.rs b/libc/src/unix/linux_like/linux/align.rs
index 0ff4649..be8ac06 100644
--- a/libc/src/unix/notbsd/linux/align.rs
+++ b/libc/src/unix/linux_like/linux/align.rs
@@ -60,6 +60,7 @@ macro_rules! expand_align {
#[cfg_attr(all(target_pointer_width = "32",
any(target_arch = "mips",
target_arch = "arm",
+ target_arch = "hexagon",
target_arch = "powerpc",
target_arch = "x86_64",
target_arch = "x86")),
@@ -67,6 +68,7 @@ macro_rules! expand_align {
#[cfg_attr(any(target_pointer_width = "64",
not(any(target_arch = "mips",
target_arch = "arm",
+ target_arch = "hexagon",
target_arch = "powerpc",
target_arch = "x86_64",
target_arch = "x86"))),
@@ -79,6 +81,7 @@ macro_rules! expand_align {
#[cfg_attr(all(target_pointer_width = "32",
any(target_arch = "mips",
target_arch = "arm",
+ target_arch = "hexagon",
target_arch = "powerpc",
target_arch = "x86_64",
target_arch = "x86")),
@@ -86,6 +89,7 @@ macro_rules! expand_align {
#[cfg_attr(any(target_pointer_width = "64",
not(any(target_arch = "mips",
target_arch = "arm",
+ target_arch = "hexagon",
target_arch = "powerpc",
target_arch = "x86_64",
target_arch = "x86"))),
diff --git a/libc/src/unix/notbsd/linux/mips/align.rs b/libc/src/unix/linux_like/linux/gnu/align.rs
index 4a0e074..4a0e074 100644
--- a/libc/src/unix/notbsd/linux/mips/align.rs
+++ b/libc/src/unix/linux_like/linux/gnu/align.rs
diff --git a/libc/src/unix/notbsd/linux/other/b32/arm.rs b/libc/src/unix/linux_like/linux/gnu/b32/arm.rs
index a2d190d..e186c24 100644
--- a/libc/src/unix/notbsd/linux/other/b32/arm.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b32/arm.rs
@@ -2,6 +2,37 @@ pub type c_char = u8;
pub type wchar_t = u32;
s! {
+ pub struct sigaction {
+ pub sa_sigaction: ::sighandler_t,
+ pub sa_mask: ::sigset_t,
+ pub sa_flags: ::c_int,
+ pub sa_restorer: ::Option<extern fn()>,
+ }
+
+ pub struct statfs {
+ pub f_type: ::__fsword_t,
+ pub f_bsize: ::__fsword_t,
+ pub f_blocks: ::fsblkcnt_t,
+ pub f_bfree: ::fsblkcnt_t,
+ pub f_bavail: ::fsblkcnt_t,
+
+ pub f_files: ::fsfilcnt_t,
+ pub f_ffree: ::fsfilcnt_t,
+ pub f_fsid: ::fsid_t,
+
+ pub f_namelen: ::__fsword_t,
+ pub f_frsize: ::__fsword_t,
+ f_spare: [::__fsword_t; 5],
+ }
+
+ pub struct flock {
+ pub l_type: ::c_short,
+ pub l_whence: ::c_short,
+ pub l_start: ::off_t,
+ pub l_len: ::off_t,
+ pub l_pid: ::pid_t,
+ }
+
pub struct ipc_perm {
pub __key: ::key_t,
pub uid: ::uid_t,
@@ -112,18 +143,169 @@ s! {
pub c_ispeed: ::speed_t,
pub c_ospeed: ::speed_t,
}
+
+ pub struct siginfo_t {
+ pub si_signo: ::c_int,
+ pub si_errno: ::c_int,
+ pub si_code: ::c_int,
+ #[doc(hidden)]
+ #[deprecated(
+ since="0.2.54",
+ note="Please leave a comment on \
+ https://github.com/rust-lang/libc/pull/1316 if you're using \
+ this field"
+ )]
+ pub _pad: [::c_int; 29],
+ _align: [usize; 0],
+ }
+
+ pub struct stack_t {
+ pub ss_sp: *mut ::c_void,
+ pub ss_flags: ::c_int,
+ pub ss_size: ::size_t
+ }
}
+pub const RLIM_INFINITY: ::rlim_t = !0;
+pub const VEOF: usize = 4;
+pub const RTLD_DEEPBIND: ::c_int = 0x8;
+pub const RTLD_GLOBAL: ::c_int = 0x100;
+pub const RTLD_NOLOAD: ::c_int = 0x4;
pub const O_DIRECT: ::c_int = 0x10000;
pub const O_DIRECTORY: ::c_int = 0x4000;
pub const O_NOFOLLOW: ::c_int = 0x8000;
pub const O_LARGEFILE: ::c_int = 0o400000;
+pub const O_APPEND: ::c_int = 1024;
+pub const O_CREAT: ::c_int = 64;
+pub const O_EXCL: ::c_int = 128;
+pub const O_NOCTTY: ::c_int = 256;
+pub const O_NONBLOCK: ::c_int = 2048;
+pub const O_SYNC: ::c_int = 1052672;
+pub const O_RSYNC: ::c_int = 1052672;
+pub const O_DSYNC: ::c_int = 4096;
+pub const O_FSYNC: ::c_int = 0x101000;
+pub const O_ASYNC: ::c_int = 0x2000;
+pub const O_NDELAY: ::c_int = 0x800;
+pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
+pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
+pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
+pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
+pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
+pub const MADV_SOFT_OFFLINE: ::c_int = 101;
pub const MAP_LOCKED: ::c_int = 0x02000;
pub const MAP_NORESERVE: ::c_int = 0x04000;
+pub const MAP_ANON: ::c_int = 0x0020;
+pub const MAP_ANONYMOUS: ::c_int = 0x0020;
+pub const MAP_DENYWRITE: ::c_int = 0x0800;
+pub const MAP_EXECUTABLE: ::c_int = 0x01000;
+pub const MAP_POPULATE: ::c_int = 0x08000;
+pub const MAP_NONBLOCK: ::c_int = 0x010000;
+pub const MAP_STACK: ::c_int = 0x020000;
+pub const MAP_HUGETLB: ::c_int = 0x040000;
+pub const MAP_GROWSDOWN: ::c_int = 0x0100;
+
+pub const SOL_SOCKET: ::c_int = 1;
pub const EDEADLOCK: ::c_int = 35;
+pub const EUCLEAN: ::c_int = 117;
+pub const ENOTNAM: ::c_int = 118;
+pub const ENAVAIL: ::c_int = 119;
+pub const EISNAM: ::c_int = 120;
+pub const EREMOTEIO: ::c_int = 121;
+pub const EDEADLK: ::c_int = 35;
+pub const ENAMETOOLONG: ::c_int = 36;
+pub const ENOLCK: ::c_int = 37;
+pub const ENOSYS: ::c_int = 38;
+pub const ENOTEMPTY: ::c_int = 39;
+pub const ELOOP: ::c_int = 40;
+pub const ENOMSG: ::c_int = 42;
+pub const EIDRM: ::c_int = 43;
+pub const ECHRNG: ::c_int = 44;
+pub const EL2NSYNC: ::c_int = 45;
+pub const EL3HLT: ::c_int = 46;
+pub const EL3RST: ::c_int = 47;
+pub const ELNRNG: ::c_int = 48;
+pub const EUNATCH: ::c_int = 49;
+pub const ENOCSI: ::c_int = 50;
+pub const EL2HLT: ::c_int = 51;
+pub const EBADE: ::c_int = 52;
+pub const EBADR: ::c_int = 53;
+pub const EXFULL: ::c_int = 54;
+pub const ENOANO: ::c_int = 55;
+pub const EBADRQC: ::c_int = 56;
+pub const EBADSLT: ::c_int = 57;
+pub const EMULTIHOP: ::c_int = 72;
+pub const EOVERFLOW: ::c_int = 75;
+pub const ENOTUNIQ: ::c_int = 76;
+pub const EBADFD: ::c_int = 77;
+pub const EBADMSG: ::c_int = 74;
+pub const EREMCHG: ::c_int = 78;
+pub const ELIBACC: ::c_int = 79;
+pub const ELIBBAD: ::c_int = 80;
+pub const ELIBSCN: ::c_int = 81;
+pub const ELIBMAX: ::c_int = 82;
+pub const ELIBEXEC: ::c_int = 83;
+pub const EILSEQ: ::c_int = 84;
+pub const ERESTART: ::c_int = 85;
+pub const ESTRPIPE: ::c_int = 86;
+pub const EUSERS: ::c_int = 87;
+pub const ENOTSOCK: ::c_int = 88;
+pub const EDESTADDRREQ: ::c_int = 89;
+pub const EMSGSIZE: ::c_int = 90;
+pub const EPROTOTYPE: ::c_int = 91;
+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 EPFNOSUPPORT: ::c_int = 96;
+pub const EAFNOSUPPORT: ::c_int = 97;
+pub const EADDRINUSE: ::c_int = 98;
+pub const EADDRNOTAVAIL: ::c_int = 99;
+pub const ENETDOWN: ::c_int = 100;
+pub const ENETUNREACH: ::c_int = 101;
+pub const ENETRESET: ::c_int = 102;
+pub const ECONNABORTED: ::c_int = 103;
+pub const ECONNRESET: ::c_int = 104;
+pub const ENOBUFS: ::c_int = 105;
+pub const EISCONN: ::c_int = 106;
+pub const ENOTCONN: ::c_int = 107;
+pub const ESHUTDOWN: ::c_int = 108;
+pub const ETOOMANYREFS: ::c_int = 109;
+pub const ETIMEDOUT: ::c_int = 110;
+pub const ECONNREFUSED: ::c_int = 111;
+pub const EHOSTDOWN: ::c_int = 112;
+pub const EHOSTUNREACH: ::c_int = 113;
+pub const EALREADY: ::c_int = 114;
+pub const EINPROGRESS: ::c_int = 115;
+pub const ESTALE: ::c_int = 116;
+pub const EDQUOT: ::c_int = 122;
+pub const ENOMEDIUM: ::c_int = 123;
+pub const EMEDIUMTYPE: ::c_int = 124;
+pub const ECANCELED: ::c_int = 125;
+pub const ENOKEY: ::c_int = 126;
+pub const EKEYEXPIRED: ::c_int = 127;
+pub const EKEYREVOKED: ::c_int = 128;
+pub const EKEYREJECTED: ::c_int = 129;
+pub const EOWNERDEAD: ::c_int = 130;
+pub const ENOTRECOVERABLE: ::c_int = 131;
+pub const EHWPOISON: ::c_int = 133;
+pub const ERFKILL: ::c_int = 132;
+pub const SO_REUSEADDR: ::c_int = 2;
+pub const SO_TYPE: ::c_int = 3;
+pub const SO_ERROR: ::c_int = 4;
+pub const SO_DONTROUTE: ::c_int = 5;
+pub const SO_BROADCAST: ::c_int = 6;
+pub const SO_SNDBUF: ::c_int = 7;
+pub const SO_RCVBUF: ::c_int = 8;
+pub const SO_KEEPALIVE: ::c_int = 9;
+pub const SO_OOBINLINE: ::c_int = 10;
+pub const SO_LINGER: ::c_int = 13;
+pub const SO_REUSEPORT: ::c_int = 15;
+pub const SO_ACCEPTCONN: ::c_int = 30;
+pub const SO_PROTOCOL: ::c_int = 38;
+pub const SO_DOMAIN: ::c_int = 39;
pub const SO_PASSCRED: ::c_int = 16;
pub const SO_PEERCRED: ::c_int = 17;
pub const SO_RCVLOWAT: ::c_int = 18;
@@ -133,12 +315,57 @@ pub const SO_SNDTIMEO: ::c_int = 21;
pub const SO_SNDBUFFORCE: ::c_int = 32;
pub const SO_RCVBUFFORCE: ::c_int = 33;
+pub const SA_SIGINFO: ::c_int = 0x00000004;
+pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
+
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SOCK_DGRAM: ::c_int = 2;
+
pub const FIOCLEX: ::c_ulong = 0x5451;
+pub const FIONCLEX: ::c_ulong = 0x5450;
pub const FIONBIO: ::c_ulong = 0x5421;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const POLLWRNORM: ::c_short = 0x100;
+pub const POLLWRBAND: ::c_short = 0x200;
+
+pub const F_GETLK: ::c_int = 5;
+pub const F_GETOWN: ::c_int = 9;
+pub const F_SETOWN: ::c_int = 8;
+
+pub const EFD_NONBLOCK: ::c_int = 0x800;
+pub const SFD_NONBLOCK: ::c_int = 0x0800;
+
+pub const SIGCHLD: ::c_int = 17;
+pub const SIGBUS: ::c_int = 7;
+pub const SIGUSR1: ::c_int = 10;
+pub const SIGUSR2: ::c_int = 12;
+pub const SIGCONT: ::c_int = 18;
+pub const SIGSTOP: ::c_int = 19;
+pub const SIGTSTP: ::c_int = 20;
+pub const SIGURG: ::c_int = 23;
+pub const SIGIO: ::c_int = 29;
+pub const SIGSYS: ::c_int = 31;
+pub const SIGSTKFLT: ::c_int = 16;
+#[deprecated(
+ since = "0.2.55",
+ note = "Use SIGSYS instead"
+)]
+pub const SIGUNUSED: ::c_int = 31;
+pub const SIGPOLL: ::c_int = 29;
+pub const SIGPWR: ::c_int = 30;
+pub const SIG_SETMASK: ::c_int = 2;
+pub const SIG_BLOCK: ::c_int = 0x000000;
+pub const SIG_UNBLOCK: ::c_int = 0x01;
+pub const SIGTTIN: ::c_int = 21;
+pub const SIGTTOU: ::c_int = 22;
+pub const SIGXCPU: ::c_int = 24;
+pub const SIGXFSZ: ::c_int = 25;
+pub const SIGVTALRM: ::c_int = 26;
+pub const SIGPROF: ::c_int = 27;
+pub const SIGWINCH: ::c_int = 28;
pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
pub const CBAUD: ::tcflag_t = 0o0010017;
@@ -256,6 +483,31 @@ pub const TIOCGRS485: ::c_int = 0x542E;
pub const TIOCSRS485: ::c_int = 0x542F;
pub const FIONREAD: ::c_ulong = 0x541B;
+pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
+pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
+pub const TIOCEXCL: ::c_ulong = 0x540C;
+pub const TIOCNXCL: ::c_ulong = 0x540D;
+pub const TIOCSCTTY: ::c_ulong = 0x540E;
+pub const TIOCSTI: ::c_ulong = 0x5412;
+pub const TIOCMGET: ::c_ulong = 0x5415;
+pub const TIOCMBIS: ::c_ulong = 0x5416;
+pub const TIOCMBIC: ::c_ulong = 0x5417;
+pub const TIOCMSET: ::c_ulong = 0x5418;
+pub const TIOCCONS: ::c_ulong = 0x541D;
+
+pub const TCSANOW: ::c_int = 0;
+pub const TCSADRAIN: ::c_int = 1;
+pub const TCSAFLUSH: ::c_int = 2;
+
+pub const TIOCLINUX: ::c_ulong = 0x541C;
+pub const TIOCGSERIAL: ::c_ulong = 0x541E;
+pub const TIOCM_ST: ::c_int = 0x008;
+pub const TIOCM_SR: ::c_int = 0x010;
+pub const TIOCM_CTS: ::c_int = 0x020;
+pub const TIOCM_CAR: ::c_int = 0x040;
+pub const TIOCM_RNG: ::c_int = 0x080;
+pub const TIOCM_DSR: ::c_int = 0x100;
+
// Syscall table
pub const SYS_restart_syscall: ::c_long = 0;
pub const SYS_exit: ::c_long = 1;
diff --git a/libc/src/unix/notbsd/linux/mips/mips32.rs b/libc/src/unix/linux_like/linux/gnu/b32/mips.rs
index d9d5589..f21b8c4 100644
--- a/libc/src/unix/notbsd/linux/mips/mips32.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b32/mips.rs
@@ -1,60 +1,7 @@
-use pthread_mutex_t;
-
pub type c_char = i8;
-pub type c_long = i32;
-pub type c_ulong = u32;
-pub type clock_t = i32;
-pub type time_t = i32;
-pub type suseconds_t = i32;
pub type wchar_t = i32;
-pub type off_t = i32;
-pub type ino_t = u32;
-pub type blkcnt_t = i32;
-pub type blksize_t = i32;
-pub type nlink_t = u32;
-pub type __u64 = ::c_ulonglong;
s! {
- pub struct aiocb {
- pub aio_fildes: ::c_int,
- pub aio_lio_opcode: ::c_int,
- pub aio_reqprio: ::c_int,
- pub aio_buf: *mut ::c_void,
- pub aio_nbytes: ::size_t,
- pub aio_sigevent: ::sigevent,
- __next_prio: *mut aiocb,
- __abs_prio: ::c_int,
- __policy: ::c_int,
- __error_code: ::c_int,
- __return_value: ::ssize_t,
- pub aio_offset: off_t,
- __unused1: [::c_char; 4],
- __glibc_reserved: [::c_char; 32]
- }
-
- pub struct stat {
- pub st_dev: ::c_ulong,
- st_pad1: [::c_long; 3],
- pub st_ino: ::ino_t,
- pub st_mode: ::mode_t,
- pub st_nlink: ::nlink_t,
- pub st_uid: ::uid_t,
- pub st_gid: ::gid_t,
- pub st_rdev: ::c_ulong,
- pub st_pad2: [::c_long; 2],
- pub st_size: ::off_t,
- st_pad3: ::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,
- pub st_blksize: ::blksize_t,
- pub st_blocks: ::blkcnt_t,
- st_pad5: [::c_long; 14],
- }
-
pub struct stat64 {
pub st_dev: ::c_ulong,
st_pad1: [::c_long; 3],
@@ -78,6 +25,21 @@ s! {
st_pad5: [::c_long; 14],
}
+ pub struct statfs {
+ pub f_type: ::c_long,
+ pub f_bsize: ::c_long,
+ pub f_frsize: ::c_long,
+ pub f_blocks: ::fsblkcnt_t,
+ pub f_bfree: ::fsblkcnt_t,
+ pub f_files: ::fsblkcnt_t,
+ pub f_ffree: ::fsblkcnt_t,
+ pub f_bavail: ::fsblkcnt_t,
+ pub f_fsid: ::fsid_t,
+
+ pub f_namelen: ::c_long,
+ f_spare: [::c_long; 6],
+ }
+
pub struct statfs64 {
pub f_type: ::c_long,
pub f_bsize: ::c_long,
@@ -93,22 +55,6 @@ s! {
pub f_spare: [::c_long; 5],
}
- pub struct statvfs {
- pub f_bsize: ::c_ulong,
- pub f_frsize: ::c_ulong,
- pub f_blocks: ::fsblkcnt_t,
- pub f_bfree: ::fsblkcnt_t,
- pub f_bavail: ::fsblkcnt_t,
- pub f_files: ::fsfilcnt_t,
- pub f_ffree: ::fsfilcnt_t,
- pub f_favail: ::fsfilcnt_t,
- pub f_fsid: ::c_ulong,
- __f_unused: ::c_int,
- pub f_flag: ::c_ulong,
- pub f_namemax: ::c_ulong,
- __f_spare: [::c_int; 6],
- }
-
pub struct statvfs64 {
pub f_bsize: ::c_ulong,
pub f_frsize: ::c_ulong,
@@ -125,14 +71,10 @@ s! {
__f_spare: [::c_int; 6],
}
- pub struct pthread_attr_t {
- __size: [u32; 9]
- }
-
pub struct sigaction {
pub sa_flags: ::c_int,
pub sa_sigaction: ::sighandler_t,
- pub sa_mask: sigset_t,
+ pub sa_mask: ::sigset_t,
pub sa_restorer: ::Option<extern fn()>,
_resv: [::c_int; 1],
}
@@ -143,10 +85,6 @@ s! {
pub ss_flags: ::c_int,
}
- pub struct sigset_t {
- __val: [::c_ulong; 32],
- }
-
pub struct siginfo_t {
pub si_signo: ::c_int,
pub si_code: ::c_int,
@@ -206,46 +144,6 @@ s! {
__glibc_reserved5: ::c_ulong,
}
- pub struct statfs {
- pub f_type: ::c_long,
- pub f_bsize: ::c_long,
- pub f_frsize: ::c_long,
- pub f_blocks: ::fsblkcnt_t,
- pub f_bfree: ::fsblkcnt_t,
- pub f_files: ::fsblkcnt_t,
- pub f_ffree: ::fsblkcnt_t,
- pub f_bavail: ::fsblkcnt_t,
- pub f_fsid: ::fsid_t,
-
- pub f_namelen: ::c_long,
- f_spare: [::c_long; 6],
- }
-
- pub struct msghdr {
- pub msg_name: *mut ::c_void,
- pub msg_namelen: ::socklen_t,
- pub msg_iov: *mut ::iovec,
- pub msg_iovlen: ::size_t,
- pub msg_control: *mut ::c_void,
- pub msg_controllen: ::size_t,
- pub msg_flags: ::c_int,
- }
-
- pub struct cmsghdr {
- pub cmsg_len: ::size_t,
- pub cmsg_level: ::c_int,
- pub cmsg_type: ::c_int,
- }
-
- pub struct termios {
- pub c_iflag: ::tcflag_t,
- pub c_oflag: ::tcflag_t,
- pub c_cflag: ::tcflag_t,
- pub c_lflag: ::tcflag_t,
- pub c_line: ::cc_t,
- pub c_cc: [::cc_t; ::NCCS],
- }
-
pub struct flock {
pub l_type: ::c_short,
pub l_whence: ::c_short,
@@ -256,85 +154,20 @@ s! {
pad: [::c_long; 4],
}
- pub struct sysinfo {
- pub uptime: ::c_long,
- pub loads: [::c_ulong; 3],
- pub totalram: ::c_ulong,
- pub freeram: ::c_ulong,
- pub sharedram: ::c_ulong,
- pub bufferram: ::c_ulong,
- pub totalswap: ::c_ulong,
- pub freeswap: ::c_ulong,
- pub procs: ::c_ushort,
- pub pad: ::c_ushort,
- pub totalhigh: ::c_ulong,
- pub freehigh: ::c_ulong,
- pub mem_unit: ::c_uint,
- pub _f: [::c_char; 8],
+ pub struct termios2 {
+ pub c_iflag: ::tcflag_t,
+ pub c_oflag: ::tcflag_t,
+ pub c_cflag: ::tcflag_t,
+ pub c_lflag: ::tcflag_t,
+ pub c_line: ::cc_t,
+ pub c_cc: [::cc_t; 23],
+ pub c_ispeed: ::speed_t,
+ pub c_ospeed: ::speed_t,
}
}
-pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
-pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 24;
-pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 32;
-pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
-pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: usize = 8;
-
-align_const! {
- #[cfg(target_endian = "little")]
- pub const PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP: ::pthread_mutex_t =
- pthread_mutex_t {
- size: [
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,
- ],
- };
- #[cfg(target_endian = "little")]
- pub const PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP: ::pthread_mutex_t =
- pthread_mutex_t {
- size: [
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,
- ],
- };
- #[cfg(target_endian = "little")]
- pub const PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP: ::pthread_mutex_t =
- pthread_mutex_t {
- size: [
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,
- ],
- };
- #[cfg(target_endian = "big")]
- pub const PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP: ::pthread_mutex_t =
- pthread_mutex_t {
- size: [
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0,
- ],
- };
- #[cfg(target_endian = "big")]
- pub const PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP: ::pthread_mutex_t =
- pthread_mutex_t {
- size: [
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
- 0, 0, 0,
- ],
- };
- #[cfg(target_endian = "big")]
- pub const PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP: ::pthread_mutex_t =
- pthread_mutex_t {
- size: [
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
- 0, 0, 0,
- ],
- };
-}
-
pub const O_LARGEFILE: ::c_int = 0x2000;
-pub const RLIM_INFINITY: ::rlim_t = 0x7fffffff;
-
pub const SYS_syscall: ::c_long = 4000 + 0;
pub const SYS_exit: ::c_long = 4000 + 1;
pub const SYS_fork: ::c_long = 4000 + 2;
@@ -693,3 +526,368 @@ pub const SYS_pwritev2: ::c_long = 4000 + 362;
pub const SYS_pkey_mprotect: ::c_long = 4000 + 363;
pub const SYS_pkey_alloc: ::c_long = 4000 + 364;
pub const SYS_pkey_free: ::c_long = 4000 + 365;
+
+pub const O_DIRECT: ::c_int = 0x8000;
+pub const O_DIRECTORY: ::c_int = 0x10000;
+pub const O_NOFOLLOW: ::c_int = 0x20000;
+
+pub const RLIM_INFINITY: ::rlim_t = 0x7fffffff;
+pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 5;
+pub const RLIMIT_AS: ::__rlimit_resource_t = 6;
+pub const RLIMIT_RSS: ::__rlimit_resource_t = 7;
+pub const RLIMIT_NPROC: ::__rlimit_resource_t = 8;
+pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 9;
+
+pub const O_APPEND: ::c_int = 8;
+pub const O_CREAT: ::c_int = 256;
+pub const O_EXCL: ::c_int = 1024;
+pub const O_NOCTTY: ::c_int = 2048;
+pub const O_NONBLOCK: ::c_int = 128;
+pub const O_SYNC: ::c_int = 0x4010;
+pub const O_RSYNC: ::c_int = 0x4010;
+pub const O_DSYNC: ::c_int = 0x10;
+pub const O_FSYNC: ::c_int = 0x4010;
+pub const O_ASYNC: ::c_int = 0x1000;
+pub const O_NDELAY: ::c_int = 0x80;
+
+pub const EDEADLK: ::c_int = 45;
+pub const ENAMETOOLONG: ::c_int = 78;
+pub const ENOLCK: ::c_int = 46;
+pub const ENOSYS: ::c_int = 89;
+pub const ENOTEMPTY: ::c_int = 93;
+pub const ELOOP: ::c_int = 90;
+pub const ENOMSG: ::c_int = 35;
+pub const EIDRM: ::c_int = 36;
+pub const ECHRNG: ::c_int = 37;
+pub const EL2NSYNC: ::c_int = 38;
+pub const EL3HLT: ::c_int = 39;
+pub const EL3RST: ::c_int = 40;
+pub const ELNRNG: ::c_int = 41;
+pub const EUNATCH: ::c_int = 42;
+pub const ENOCSI: ::c_int = 43;
+pub const EL2HLT: ::c_int = 44;
+pub const EBADE: ::c_int = 50;
+pub const EBADR: ::c_int = 51;
+pub const EXFULL: ::c_int = 52;
+pub const ENOANO: ::c_int = 53;
+pub const EBADRQC: ::c_int = 54;
+pub const EBADSLT: ::c_int = 55;
+pub const EDEADLOCK: ::c_int = 56;
+pub const EMULTIHOP: ::c_int = 74;
+pub const EOVERFLOW: ::c_int = 79;
+pub const ENOTUNIQ: ::c_int = 80;
+pub const EBADFD: ::c_int = 81;
+pub const EBADMSG: ::c_int = 77;
+pub const EREMCHG: ::c_int = 82;
+pub const ELIBACC: ::c_int = 83;
+pub const ELIBBAD: ::c_int = 84;
+pub const ELIBSCN: ::c_int = 85;
+pub const ELIBMAX: ::c_int = 86;
+pub const ELIBEXEC: ::c_int = 87;
+pub const EILSEQ: ::c_int = 88;
+pub const ERESTART: ::c_int = 91;
+pub const ESTRPIPE: ::c_int = 92;
+pub const EUSERS: ::c_int = 94;
+pub const ENOTSOCK: ::c_int = 95;
+pub const EDESTADDRREQ: ::c_int = 96;
+pub const EMSGSIZE: ::c_int = 97;
+pub const EPROTOTYPE: ::c_int = 98;
+pub const ENOPROTOOPT: ::c_int = 99;
+pub const EPROTONOSUPPORT: ::c_int = 120;
+pub const ESOCKTNOSUPPORT: ::c_int = 121;
+pub const EOPNOTSUPP: ::c_int = 122;
+pub const EPFNOSUPPORT: ::c_int = 123;
+pub const EAFNOSUPPORT: ::c_int = 124;
+pub const EADDRINUSE: ::c_int = 125;
+pub const EADDRNOTAVAIL: ::c_int = 126;
+pub const ENETDOWN: ::c_int = 127;
+pub const ENETUNREACH: ::c_int = 128;
+pub const ENETRESET: ::c_int = 129;
+pub const ECONNABORTED: ::c_int = 130;
+pub const ECONNRESET: ::c_int = 131;
+pub const ENOBUFS: ::c_int = 132;
+pub const EISCONN: ::c_int = 133;
+pub const ENOTCONN: ::c_int = 134;
+pub const ESHUTDOWN: ::c_int = 143;
+pub const ETOOMANYREFS: ::c_int = 144;
+pub const ETIMEDOUT: ::c_int = 145;
+pub const ECONNREFUSED: ::c_int = 146;
+pub const EHOSTDOWN: ::c_int = 147;
+pub const EHOSTUNREACH: ::c_int = 148;
+pub const EALREADY: ::c_int = 149;
+pub const EINPROGRESS: ::c_int = 150;
+pub const ESTALE: ::c_int = 151;
+pub const EUCLEAN: ::c_int = 135;
+pub const ENOTNAM: ::c_int = 137;
+pub const ENAVAIL: ::c_int = 138;
+pub const EISNAM: ::c_int = 139;
+pub const EREMOTEIO: ::c_int = 140;
+pub const EDQUOT: ::c_int = 1133;
+pub const ENOMEDIUM: ::c_int = 159;
+pub const EMEDIUMTYPE: ::c_int = 160;
+pub const ECANCELED: ::c_int = 158;
+pub const ENOKEY: ::c_int = 161;
+pub const EKEYEXPIRED: ::c_int = 162;
+pub const EKEYREVOKED: ::c_int = 163;
+pub const EKEYREJECTED: ::c_int = 164;
+pub const EOWNERDEAD: ::c_int = 165;
+pub const ENOTRECOVERABLE: ::c_int = 166;
+pub const ERFKILL: ::c_int = 167;
+
+pub const MAP_NORESERVE: ::c_int = 0x400;
+pub const MAP_ANON: ::c_int = 0x800;
+pub const MAP_ANONYMOUS: ::c_int = 0x800;
+pub const MAP_GROWSDOWN: ::c_int = 0x1000;
+pub const MAP_DENYWRITE: ::c_int = 0x2000;
+pub const MAP_EXECUTABLE: ::c_int = 0x4000;
+pub const MAP_LOCKED: ::c_int = 0x8000;
+pub const MAP_POPULATE: ::c_int = 0x10000;
+pub const MAP_NONBLOCK: ::c_int = 0x20000;
+pub const MAP_STACK: ::c_int = 0x40000;
+
+pub const SOCK_STREAM: ::c_int = 2;
+pub const SOCK_DGRAM: ::c_int = 1;
+
+pub const SOL_SOCKET: ::c_int = 0xffff;
+
+pub const SO_REUSEADDR: ::c_int = 0x0004;
+pub const SO_KEEPALIVE: ::c_int = 0x0008;
+pub const SO_DONTROUTE: ::c_int = 0x0010;
+pub const SO_BROADCAST: ::c_int = 0x0020;
+pub const SO_LINGER: ::c_int = 0x0080;
+pub const SO_OOBINLINE: ::c_int = 0x0100;
+pub const SO_REUSEPORT: ::c_int = 0x0200;
+pub const SO_TYPE: ::c_int = 0x1008;
+pub const SO_STYLE: ::c_int = SO_TYPE;
+pub const SO_ERROR: ::c_int = 0x1007;
+pub const SO_SNDBUF: ::c_int = 0x1001;
+pub const SO_RCVBUF: ::c_int = 0x1002;
+pub const SO_SNDLOWAT: ::c_int = 0x1003;
+pub const SO_RCVLOWAT: ::c_int = 0x1004;
+pub const SO_SNDTIMEO: ::c_int = 0x1005;
+pub const SO_RCVTIMEO: ::c_int = 0x1006;
+pub const SO_ACCEPTCONN: ::c_int = 0x1009;
+pub const SO_PROTOCOL: ::c_int = 0x1028;
+pub const SO_DOMAIN: ::c_int = 0x1029;
+pub const SO_NO_CHECK: ::c_int = 11;
+pub const SO_PASSCRED: ::c_int = 17;
+pub const SO_PEERCRED: ::c_int = 18;
+pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
+pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
+pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
+pub const SO_ATTACH_FILTER: ::c_int = 26;
+pub const SO_DETACH_FILTER: ::c_int = 27;
+pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER;
+pub const SO_PEERNAME: ::c_int = 28;
+pub const SO_PEERSEC: ::c_int = 30;
+pub const SO_SNDBUFFORCE: ::c_int = 31;
+pub const SO_RCVBUFFORCE: ::c_int = 33;
+pub const SO_PASSSEC: ::c_int = 34;
+pub const SO_TIMESTAMPNS: ::c_int = 35;
+pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS;
+
+pub const SO_WIFI_STATUS: ::c_int = 41;
+pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS;
+pub const SO_NOFCS: ::c_int = 43;
+pub const SO_LOCK_FILTER: ::c_int = 44;
+pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
+pub const SO_MAX_PACING_RATE: ::c_int = 47;
+pub const SO_BPF_EXTENSIONS: ::c_int = 48;
+pub const SO_INCOMING_CPU: ::c_int = 49;
+pub const SO_ATTACH_BPF: ::c_int = 50;
+pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER;
+
+pub const FIOCLEX: ::c_ulong = 0x6601;
+pub const FIONCLEX: ::c_ulong = 0x6602;
+pub const FIONBIO: ::c_ulong = 0x667e;
+
+pub const SA_SIGINFO: ::c_int = 0x00000008;
+pub const SA_NOCLDWAIT: ::c_int = 0x00010000;
+
+pub const SIGCHLD: ::c_int = 18;
+pub const SIGBUS: ::c_int = 10;
+pub const SIGTTIN: ::c_int = 26;
+pub const SIGTTOU: ::c_int = 27;
+pub const SIGXCPU: ::c_int = 30;
+pub const SIGXFSZ: ::c_int = 31;
+pub const SIGVTALRM: ::c_int = 28;
+pub const SIGPROF: ::c_int = 29;
+pub const SIGWINCH: ::c_int = 20;
+pub const SIGUSR1: ::c_int = 16;
+pub const SIGUSR2: ::c_int = 17;
+pub const SIGCONT: ::c_int = 25;
+pub const SIGSTOP: ::c_int = 23;
+pub const SIGTSTP: ::c_int = 24;
+pub const SIGURG: ::c_int = 21;
+pub const SIGIO: ::c_int = 22;
+pub const SIGSYS: ::c_int = 12;
+pub const SIGPOLL: ::c_int = 22;
+pub const SIGPWR: ::c_int = 19;
+pub const SIG_SETMASK: ::c_int = 3;
+pub const SIG_BLOCK: ::c_int = 0x1;
+pub const SIG_UNBLOCK: ::c_int = 0x2;
+
+pub const POLLWRNORM: ::c_short = 0x004;
+pub const POLLWRBAND: ::c_short = 0x100;
+
+pub const VEOF: usize = 16;
+pub const VEOL: usize = 17;
+pub const VEOL2: usize = 6;
+pub const VMIN: usize = 4;
+pub const IEXTEN: ::tcflag_t = 0x00000100;
+pub const TOSTOP: ::tcflag_t = 0x00008000;
+pub const FLUSHO: ::tcflag_t = 0x00002000;
+pub const EXTPROC: ::tcflag_t = 0o200000;
+pub const TCSANOW: ::c_int = 0x540e;
+pub const TCSADRAIN: ::c_int = 0x540f;
+pub const TCSAFLUSH: ::c_int = 0x5410;
+
+pub const PTRACE_GETFPXREGS: ::c_uint = 18;
+pub const PTRACE_SETFPXREGS: ::c_uint = 19;
+
+pub const MAP_HUGETLB: ::c_int = 0x080000;
+
+pub const EFD_NONBLOCK: ::c_int = 0x80;
+
+pub const F_GETLK: ::c_int = 14;
+pub const F_GETOWN: ::c_int = 23;
+pub const F_SETOWN: ::c_int = 24;
+
+pub const SFD_NONBLOCK: ::c_int = 0x80;
+
+pub const TCGETS: ::c_ulong = 0x540d;
+pub const TCSETS: ::c_ulong = 0x540e;
+pub const TCSETSW: ::c_ulong = 0x540f;
+pub const TCSETSF: ::c_ulong = 0x5410;
+pub const TCGETA: ::c_ulong = 0x5401;
+pub const TCSETA: ::c_ulong = 0x5402;
+pub const TCSETAW: ::c_ulong = 0x5403;
+pub const TCSETAF: ::c_ulong = 0x5404;
+pub const TCSBRK: ::c_ulong = 0x5405;
+pub const TCXONC: ::c_ulong = 0x5406;
+pub const TCFLSH: ::c_ulong = 0x5407;
+pub const TIOCGSOFTCAR: ::c_ulong = 0x5481;
+pub const TIOCSSOFTCAR: ::c_ulong = 0x5482;
+pub const TIOCINQ: ::c_ulong = 0x467f;
+pub const TIOCLINUX: ::c_ulong = 0x5483;
+pub const TIOCGSERIAL: ::c_ulong = 0x5484;
+pub const TIOCEXCL: ::c_ulong = 0x740d;
+pub const TIOCNXCL: ::c_ulong = 0x740e;
+pub const TIOCSCTTY: ::c_ulong = 0x5480;
+pub const TIOCGPGRP: ::c_ulong = 0x40047477;
+pub const TIOCSPGRP: ::c_ulong = 0x80047476;
+pub const TIOCOUTQ: ::c_ulong = 0x7472;
+pub const TIOCSTI: ::c_ulong = 0x5472;
+pub const TIOCGWINSZ: ::c_ulong = 0x40087468;
+pub const TIOCSWINSZ: ::c_ulong = 0x80087467;
+pub const TIOCMGET: ::c_ulong = 0x741d;
+pub const TIOCMBIS: ::c_ulong = 0x741b;
+pub const TIOCMBIC: ::c_ulong = 0x741c;
+pub const TIOCMSET: ::c_ulong = 0x741a;
+pub const FIONREAD: ::c_ulong = 0x467f;
+pub const TIOCCONS: ::c_ulong = 0x80047478;
+
+pub const RTLD_DEEPBIND: ::c_int = 0x10;
+pub const RTLD_GLOBAL: ::c_int = 0x4;
+pub const RTLD_NOLOAD: ::c_int = 0x8;
+
+pub const MCL_CURRENT: ::c_int = 0x0001;
+pub const MCL_FUTURE: ::c_int = 0x0002;
+
+pub const SIGSTKSZ: ::size_t = 8192;
+pub const MINSIGSTKSZ: ::size_t = 2048;
+pub const CBAUD: ::tcflag_t = 0o0010017;
+pub const TAB1: ::tcflag_t = 0x00000800;
+pub const TAB2: ::tcflag_t = 0x00001000;
+pub const TAB3: ::tcflag_t = 0x00001800;
+pub const CR1: ::tcflag_t = 0x00000200;
+pub const CR2: ::tcflag_t = 0x00000400;
+pub const CR3: ::tcflag_t = 0x00000600;
+pub const FF1: ::tcflag_t = 0x00008000;
+pub const BS1: ::tcflag_t = 0x00002000;
+pub const VT1: ::tcflag_t = 0x00004000;
+pub const VWERASE: usize = 14;
+pub const VREPRINT: usize = 12;
+pub const VSUSP: usize = 10;
+pub const VSTART: usize = 8;
+pub const VSTOP: usize = 9;
+pub const VDISCARD: usize = 13;
+pub const VTIME: usize = 5;
+pub const IXON: ::tcflag_t = 0x00000400;
+pub const IXOFF: ::tcflag_t = 0x00001000;
+pub const ONLCR: ::tcflag_t = 0x4;
+pub const CSIZE: ::tcflag_t = 0x00000030;
+pub const CS6: ::tcflag_t = 0x00000010;
+pub const CS7: ::tcflag_t = 0x00000020;
+pub const CS8: ::tcflag_t = 0x00000030;
+pub const CSTOPB: ::tcflag_t = 0x00000040;
+pub const CREAD: ::tcflag_t = 0x00000080;
+pub const PARENB: ::tcflag_t = 0x00000100;
+pub const PARODD: ::tcflag_t = 0x00000200;
+pub const HUPCL: ::tcflag_t = 0x00000400;
+pub const CLOCAL: ::tcflag_t = 0x00000800;
+pub const ECHOKE: ::tcflag_t = 0x00000800;
+pub const ECHOE: ::tcflag_t = 0x00000010;
+pub const ECHOK: ::tcflag_t = 0x00000020;
+pub const ECHONL: ::tcflag_t = 0x00000040;
+pub const ECHOPRT: ::tcflag_t = 0x00000400;
+pub const ECHOCTL: ::tcflag_t = 0x00000200;
+pub const ISIG: ::tcflag_t = 0x00000001;
+pub const ICANON: ::tcflag_t = 0x00000002;
+pub const PENDIN: ::tcflag_t = 0x00004000;
+pub const NOFLSH: ::tcflag_t = 0x00000080;
+pub const CIBAUD: ::tcflag_t = 0o02003600000;
+pub const CBAUDEX: ::tcflag_t = 0o010000;
+pub const VSWTC: usize = 7;
+pub const OLCUC: ::tcflag_t = 0o000002;
+pub const NLDLY: ::tcflag_t = 0o000400;
+pub const CRDLY: ::tcflag_t = 0o003000;
+pub const TABDLY: ::tcflag_t = 0o014000;
+pub const BSDLY: ::tcflag_t = 0o020000;
+pub const FFDLY: ::tcflag_t = 0o100000;
+pub const VTDLY: ::tcflag_t = 0o040000;
+pub const XTABS: ::tcflag_t = 0o014000;
+
+pub const B0: ::speed_t = 0o000000;
+pub const B50: ::speed_t = 0o000001;
+pub const B75: ::speed_t = 0o000002;
+pub const B110: ::speed_t = 0o000003;
+pub const B134: ::speed_t = 0o000004;
+pub const B150: ::speed_t = 0o000005;
+pub const B200: ::speed_t = 0o000006;
+pub const B300: ::speed_t = 0o000007;
+pub const B600: ::speed_t = 0o000010;
+pub const B1200: ::speed_t = 0o000011;
+pub const B1800: ::speed_t = 0o000012;
+pub const B2400: ::speed_t = 0o000013;
+pub const B4800: ::speed_t = 0o000014;
+pub const B9600: ::speed_t = 0o000015;
+pub const B19200: ::speed_t = 0o000016;
+pub const B38400: ::speed_t = 0o000017;
+pub const EXTA: ::speed_t = B19200;
+pub const EXTB: ::speed_t = B38400;
+pub const BOTHER: ::speed_t = 0o010000;
+pub const B57600: ::speed_t = 0o010001;
+pub const B115200: ::speed_t = 0o010002;
+pub const B230400: ::speed_t = 0o010003;
+pub const B460800: ::speed_t = 0o010004;
+pub const B500000: ::speed_t = 0o010005;
+pub const B576000: ::speed_t = 0o010006;
+pub const B921600: ::speed_t = 0o010007;
+pub const B1000000: ::speed_t = 0o010010;
+pub const B1152000: ::speed_t = 0o010011;
+pub const B1500000: ::speed_t = 0o010012;
+pub const B2000000: ::speed_t = 0o010013;
+pub const B2500000: ::speed_t = 0o010014;
+pub const B3000000: ::speed_t = 0o010015;
+pub const B3500000: ::speed_t = 0o010016;
+pub const B4000000: ::speed_t = 0o010017;
+
+pub const TIOCM_ST: ::c_int = 0x010;
+pub const TIOCM_SR: ::c_int = 0x020;
+pub const TIOCM_CTS: ::c_int = 0x040;
+pub const TIOCM_CAR: ::c_int = 0x100;
+pub const TIOCM_RNG: ::c_int = 0x200;
+pub const TIOCM_DSR: ::c_int = 0x400;
+
+pub const EHWPOISON: ::c_int = 168;
diff --git a/libc/src/unix/notbsd/linux/other/b32/mod.rs b/libc/src/unix/linux_like/linux/gnu/b32/mod.rs
index 32e510e..2e584f2 100644
--- a/libc/src/unix/notbsd/linux/other/b32/mod.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b32/mod.rs
@@ -10,7 +10,6 @@ pub type suseconds_t = i32;
pub type ino_t = u32;
pub type off_t = i32;
pub type blkcnt_t = i32;
-pub type __fsword_t = i32;
pub type fsblkcnt_t = ::c_ulong;
pub type fsfilcnt_t = ::c_ulong;
@@ -21,20 +20,38 @@ pub type msglen_t = ::c_ulong;
pub type blksize_t = i32;
pub type nlink_t = u32;
pub type __u64 = ::c_ulonglong;
+pub type __fsword_t = i32;
s! {
pub struct stat {
+ #[cfg(not(target_arch = "mips"))]
pub st_dev: ::dev_t,
+ #[cfg(target_arch = "mips")]
+ pub st_dev: ::c_ulong,
+
+ #[cfg(not(target_arch = "mips"))]
__pad1: ::c_short,
+ #[cfg(target_arch = "mips")]
+ st_pad1: [::c_long; 3],
pub st_ino: ::ino_t,
pub st_mode: ::mode_t,
pub st_nlink: ::nlink_t,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
+ #[cfg(not(target_arch = "mips"))]
pub st_rdev: ::dev_t,
+ #[cfg(target_arch = "mips")]
+ pub st_rdev: ::c_ulong,
+ #[cfg(not(target_arch = "mips"))]
__pad2: ::c_short,
+ #[cfg(target_arch = "mips")]
+ st_pad2: [::c_long; 2],
pub st_size: ::off_t,
+ #[cfg(target_arch = "mips")]
+ st_pad3: ::c_long,
+ #[cfg(not(target_arch = "mips"))]
pub st_blksize: ::blksize_t,
+ #[cfg(not(target_arch = "mips"))]
pub st_blocks: ::blkcnt_t,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
@@ -42,8 +59,16 @@ s! {
pub st_mtime_nsec: ::c_long,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
+ #[cfg(not(target_arch = "mips"))]
__unused4: ::c_long,
+ #[cfg(not(target_arch = "mips"))]
__unused5: ::c_long,
+ #[cfg(target_arch = "mips")]
+ pub st_blksize: ::blksize_t,
+ #[cfg(target_arch = "mips")]
+ pub st_blocks: ::blkcnt_t,
+ #[cfg(target_arch = "mips")]
+ st_pad5: [::c_long; 14],
}
pub struct statvfs {
@@ -80,6 +105,10 @@ s! {
pub totalswap: ::c_ulong,
pub freeswap: ::c_ulong,
pub procs: ::c_ushort,
+ #[deprecated(
+ since = "0.2.58",
+ note = "This padding field might become private in the future"
+ )]
pub pad: ::c_ushort,
pub totalhigh: ::c_ulong,
pub freehigh: ::c_ulong,
@@ -88,170 +117,25 @@ s! {
}
}
-pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
-pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
-
-pub const RLIMIT_NOFILE: ::c_int = 7;
-pub const RLIMIT_NPROC: ::c_int = 6;
-
-pub const O_APPEND: ::c_int = 1024;
-pub const O_CREAT: ::c_int = 64;
-pub const O_EXCL: ::c_int = 128;
-pub const O_NOCTTY: ::c_int = 256;
-pub const O_NONBLOCK: ::c_int = 2048;
-pub const O_SYNC: ::c_int = 1052672;
-pub const O_RSYNC: ::c_int = 1052672;
-pub const O_DSYNC: ::c_int = 4096;
-pub const O_FSYNC: ::c_int = 0x101000;
pub const O_NOATIME: ::c_int = 0o1000000;
pub const O_PATH: ::c_int = 0o10000000;
pub const O_TMPFILE: ::c_int = 0o20000000 | O_DIRECTORY;
-pub const MAP_GROWSDOWN: ::c_int = 0x0100;
-
-pub const EDEADLK: ::c_int = 35;
-pub const ENAMETOOLONG: ::c_int = 36;
-pub const ENOLCK: ::c_int = 37;
-pub const ENOSYS: ::c_int = 38;
-pub const ENOTEMPTY: ::c_int = 39;
-pub const ELOOP: ::c_int = 40;
-pub const ENOMSG: ::c_int = 42;
-pub const EIDRM: ::c_int = 43;
-pub const ECHRNG: ::c_int = 44;
-pub const EL2NSYNC: ::c_int = 45;
-pub const EL3HLT: ::c_int = 46;
-pub const EL3RST: ::c_int = 47;
-pub const ELNRNG: ::c_int = 48;
-pub const EUNATCH: ::c_int = 49;
-pub const ENOCSI: ::c_int = 50;
-pub const EL2HLT: ::c_int = 51;
-pub const EBADE: ::c_int = 52;
-pub const EBADR: ::c_int = 53;
-pub const EXFULL: ::c_int = 54;
-pub const ENOANO: ::c_int = 55;
-pub const EBADRQC: ::c_int = 56;
-pub const EBADSLT: ::c_int = 57;
-pub const EMULTIHOP: ::c_int = 72;
-pub const EOVERFLOW: ::c_int = 75;
-pub const ENOTUNIQ: ::c_int = 76;
-pub const EBADFD: ::c_int = 77;
-pub const EBADMSG: ::c_int = 74;
-pub const EREMCHG: ::c_int = 78;
-pub const ELIBACC: ::c_int = 79;
-pub const ELIBBAD: ::c_int = 80;
-pub const ELIBSCN: ::c_int = 81;
-pub const ELIBMAX: ::c_int = 82;
-pub const ELIBEXEC: ::c_int = 83;
-pub const EILSEQ: ::c_int = 84;
-pub const ERESTART: ::c_int = 85;
-pub const ESTRPIPE: ::c_int = 86;
-pub const EUSERS: ::c_int = 87;
-pub const ENOTSOCK: ::c_int = 88;
-pub const EDESTADDRREQ: ::c_int = 89;
-pub const EMSGSIZE: ::c_int = 90;
-pub const EPROTOTYPE: ::c_int = 91;
-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 EPFNOSUPPORT: ::c_int = 96;
-pub const EAFNOSUPPORT: ::c_int = 97;
-pub const EADDRINUSE: ::c_int = 98;
-pub const EADDRNOTAVAIL: ::c_int = 99;
-pub const ENETDOWN: ::c_int = 100;
-pub const ENETUNREACH: ::c_int = 101;
-pub const ENETRESET: ::c_int = 102;
-pub const ECONNABORTED: ::c_int = 103;
-pub const ECONNRESET: ::c_int = 104;
-pub const ENOBUFS: ::c_int = 105;
-pub const EISCONN: ::c_int = 106;
-pub const ENOTCONN: ::c_int = 107;
-pub const ESHUTDOWN: ::c_int = 108;
-pub const ETOOMANYREFS: ::c_int = 109;
-pub const ETIMEDOUT: ::c_int = 110;
-pub const ECONNREFUSED: ::c_int = 111;
-pub const EHOSTDOWN: ::c_int = 112;
-pub const EHOSTUNREACH: ::c_int = 113;
-pub const EALREADY: ::c_int = 114;
-pub const EINPROGRESS: ::c_int = 115;
-pub const ESTALE: ::c_int = 116;
-pub const EDQUOT: ::c_int = 122;
-pub const ENOMEDIUM: ::c_int = 123;
-pub const EMEDIUMTYPE: ::c_int = 124;
-pub const ECANCELED: ::c_int = 125;
-pub const ENOKEY: ::c_int = 126;
-pub const EKEYEXPIRED: ::c_int = 127;
-pub const EKEYREVOKED: ::c_int = 128;
-pub const EKEYREJECTED: ::c_int = 129;
-pub const EOWNERDEAD: ::c_int = 130;
-pub const ENOTRECOVERABLE: ::c_int = 131;
-pub const EHWPOISON: ::c_int = 133;
-pub const ERFKILL: ::c_int = 132;
-
-pub const SOL_SOCKET: ::c_int = 1;
-
-pub const SO_REUSEADDR: ::c_int = 2;
-pub const SO_TYPE: ::c_int = 3;
-pub const SO_ERROR: ::c_int = 4;
-pub const SO_DONTROUTE: ::c_int = 5;
-pub const SO_BROADCAST: ::c_int = 6;
-pub const SO_SNDBUF: ::c_int = 7;
-pub const SO_RCVBUF: ::c_int = 8;
-pub const SO_KEEPALIVE: ::c_int = 9;
-pub const SO_OOBINLINE: ::c_int = 10;
pub const SO_PRIORITY: ::c_int = 12;
-pub const SO_LINGER: ::c_int = 13;
pub const SO_BSDCOMPAT: ::c_int = 14;
-pub const SO_REUSEPORT: ::c_int = 15;
pub const SO_BINDTODEVICE: ::c_int = 25;
pub const SO_TIMESTAMP: ::c_int = 29;
-pub const SO_ACCEPTCONN: ::c_int = 30;
pub const SO_MARK: ::c_int = 36;
-pub const SO_PROTOCOL: ::c_int = 38;
-pub const SO_DOMAIN: ::c_int = 39;
pub const SO_RXQ_OVFL: ::c_int = 40;
pub const SO_PEEK_OFF: ::c_int = 42;
pub const SO_BUSY_POLL: ::c_int = 46;
pub const SA_ONSTACK: ::c_int = 0x08000000;
-pub const SA_SIGINFO: ::c_int = 0x00000004;
-pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
-
-pub const SIGCHLD: ::c_int = 17;
-pub const SIGBUS: ::c_int = 7;
-pub const SIGUSR1: ::c_int = 10;
-pub const SIGUSR2: ::c_int = 12;
-pub const SIGCONT: ::c_int = 18;
-pub const SIGSTOP: ::c_int = 19;
-pub const SIGTSTP: ::c_int = 20;
-pub const SIGURG: ::c_int = 23;
-pub const SIGIO: ::c_int = 29;
-pub const SIGSYS: ::c_int = 31;
-pub const SIGSTKFLT: ::c_int = 16;
-#[deprecated(
- since = "0.2.55",
- note = "Use SIGSYS instead"
-)]
-pub const SIGUNUSED: ::c_int = 31;
-pub const SIGPOLL: ::c_int = 29;
-pub const SIGPWR: ::c_int = 30;
-pub const SIG_SETMASK: ::c_int = 2;
-pub const SIG_BLOCK: ::c_int = 0x000000;
-pub const SIG_UNBLOCK: ::c_int = 0x01;
-
-pub const POLLWRNORM: ::c_short = 0x100;
-pub const POLLWRBAND: ::c_short = 0x200;
-
-pub const O_ASYNC: ::c_int = 0x2000;
-pub const O_NDELAY: ::c_int = 0x800;
pub const PTRACE_DETACH: ::c_uint = 17;
+pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+pub const POSIX_FADV_NOREUSE: ::c_int = 5;
-pub const EFD_NONBLOCK: ::c_int = 0x800;
-
-pub const F_GETLK: ::c_int = 5;
-pub const F_GETOWN: ::c_int = 9;
-pub const F_SETOWN: ::c_int = 8;
pub const F_SETLK: ::c_int = 6;
pub const F_SETLKW: ::c_int = 7;
@@ -259,18 +143,6 @@ pub const F_RDLCK: ::c_int = 0;
pub const F_WRLCK: ::c_int = 1;
pub const F_UNLCK: ::c_int = 2;
-pub const SFD_NONBLOCK: ::c_int = 0x0800;
-
-pub const TIOCEXCL: ::c_ulong = 0x540C;
-pub const TIOCNXCL: ::c_ulong = 0x540D;
-pub const TIOCSCTTY: ::c_ulong = 0x540E;
-pub const TIOCSTI: ::c_ulong = 0x5412;
-pub const TIOCMGET: ::c_ulong = 0x5415;
-pub const TIOCMBIS: ::c_ulong = 0x5416;
-pub const TIOCMBIC: ::c_ulong = 0x5417;
-pub const TIOCMSET: ::c_ulong = 0x5418;
-pub const TIOCCONS: ::c_ulong = 0x541D;
-
pub const SFD_CLOEXEC: ::c_int = 0x080000;
pub const NCCS: usize = 32;
@@ -383,6 +255,9 @@ cfg_if! {
} else if #[cfg(target_arch = "arm")] {
mod arm;
pub use self::arm::*;
+ } else if #[cfg(target_arch = "mips")] {
+ mod mips;
+ pub use self::mips::*;
} else if #[cfg(target_arch = "powerpc")] {
mod powerpc;
pub use self::powerpc::*;
diff --git a/libc/src/unix/notbsd/linux/other/b32/powerpc.rs b/libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs
index a64f075..8f57b72 100644
--- a/libc/src/unix/notbsd/linux/other/b32/powerpc.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs
@@ -2,6 +2,37 @@ pub type c_char = u8;
pub type wchar_t = i32;
s! {
+ pub struct sigaction {
+ pub sa_sigaction: ::sighandler_t,
+ pub sa_mask: ::sigset_t,
+ pub sa_flags: ::c_int,
+ pub sa_restorer: ::Option<extern fn()>,
+ }
+
+ pub struct statfs {
+ pub f_type: ::__fsword_t,
+ pub f_bsize: ::__fsword_t,
+ pub f_blocks: ::fsblkcnt_t,
+ pub f_bfree: ::fsblkcnt_t,
+ pub f_bavail: ::fsblkcnt_t,
+
+ pub f_files: ::fsfilcnt_t,
+ pub f_ffree: ::fsfilcnt_t,
+ pub f_fsid: ::fsid_t,
+
+ pub f_namelen: ::__fsword_t,
+ pub f_frsize: ::__fsword_t,
+ f_spare: [::__fsword_t; 5],
+ }
+
+ pub struct flock {
+ pub l_type: ::c_short,
+ pub l_whence: ::c_short,
+ pub l_start: ::off_t,
+ pub l_len: ::off_t,
+ pub l_pid: ::pid_t,
+ }
+
pub struct ipc_perm {
__key: ::key_t,
pub uid: ::uid_t,
@@ -101,18 +132,181 @@ s! {
__glibc_reserved4: ::c_ulong,
__glibc_reserved5: ::c_ulong,
}
+
+ pub struct siginfo_t {
+ pub si_signo: ::c_int,
+ pub si_errno: ::c_int,
+ pub si_code: ::c_int,
+ #[doc(hidden)]
+ #[deprecated(
+ since="0.2.54",
+ note="Please leave a comment on \
+ https://github.com/rust-lang/libc/pull/1316 if you're using \
+ this field"
+ )]
+ pub _pad: [::c_int; 29],
+ _align: [usize; 0],
+ }
+
+ pub struct stack_t {
+ pub ss_sp: *mut ::c_void,
+ pub ss_flags: ::c_int,
+ pub ss_size: ::size_t
+ }
}
+pub const RLIM_INFINITY: ::rlim_t = !0;
+pub const VEOF: usize = 4;
+pub const RTLD_DEEPBIND: ::c_int = 0x8;
+pub const RTLD_GLOBAL: ::c_int = 0x100;
+pub const RTLD_NOLOAD: ::c_int = 0x4;
pub const O_DIRECT: ::c_int = 0x20000;
pub const O_DIRECTORY: ::c_int = 0x4000;
pub const O_NOFOLLOW: ::c_int = 0x8000;
pub const O_LARGEFILE: ::c_int = 0o200000;
+pub const O_APPEND: ::c_int = 1024;
+pub const O_CREAT: ::c_int = 64;
+pub const O_EXCL: ::c_int = 128;
+pub const O_NOCTTY: ::c_int = 256;
+pub const O_NONBLOCK: ::c_int = 2048;
+pub const O_SYNC: ::c_int = 1052672;
+pub const O_RSYNC: ::c_int = 1052672;
+pub const O_DSYNC: ::c_int = 4096;
+pub const O_FSYNC: ::c_int = 0x101000;
+pub const O_ASYNC: ::c_int = 0x2000;
+pub const O_NDELAY: ::c_int = 0x800;
+pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
+pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
+pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
+pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
+pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
+pub const TCSANOW: ::c_int = 0;
+pub const TCSADRAIN: ::c_int = 1;
+pub const TCSAFLUSH: ::c_int = 2;
+
+pub const TIOCLINUX: ::c_ulong = 0x541C;
+pub const TIOCGSERIAL: ::c_ulong = 0x541E;
+pub const TIOCM_ST: ::c_int = 0x008;
+pub const TIOCM_SR: ::c_int = 0x010;
+pub const TIOCM_CTS: ::c_int = 0x020;
+pub const TIOCM_CAR: ::c_int = 0x040;
+pub const TIOCM_RNG: ::c_int = 0x080;
+pub const TIOCM_DSR: ::c_int = 0x100;
+pub const MADV_SOFT_OFFLINE: ::c_int = 101;
pub const MAP_LOCKED: ::c_int = 0x00080;
pub const MAP_NORESERVE: ::c_int = 0x00040;
+pub const MAP_ANON: ::c_int = 0x0020;
+pub const MAP_ANONYMOUS: ::c_int = 0x0020;
+pub const MAP_DENYWRITE: ::c_int = 0x0800;
+pub const MAP_EXECUTABLE: ::c_int = 0x01000;
+pub const MAP_POPULATE: ::c_int = 0x08000;
+pub const MAP_NONBLOCK: ::c_int = 0x010000;
+pub const MAP_STACK: ::c_int = 0x020000;
+pub const MAP_HUGETLB: ::c_int = 0x040000;
+pub const MAP_GROWSDOWN: ::c_int = 0x0100;
+
+pub const SOL_SOCKET: ::c_int = 1;
pub const EDEADLOCK: ::c_int = 58;
+pub const EUCLEAN: ::c_int = 117;
+pub const ENOTNAM: ::c_int = 118;
+pub const ENAVAIL: ::c_int = 119;
+pub const EISNAM: ::c_int = 120;
+pub const EREMOTEIO: ::c_int = 121;
+pub const EDEADLK: ::c_int = 35;
+pub const ENAMETOOLONG: ::c_int = 36;
+pub const ENOLCK: ::c_int = 37;
+pub const ENOSYS: ::c_int = 38;
+pub const ENOTEMPTY: ::c_int = 39;
+pub const ELOOP: ::c_int = 40;
+pub const ENOMSG: ::c_int = 42;
+pub const EIDRM: ::c_int = 43;
+pub const ECHRNG: ::c_int = 44;
+pub const EL2NSYNC: ::c_int = 45;
+pub const EL3HLT: ::c_int = 46;
+pub const EL3RST: ::c_int = 47;
+pub const ELNRNG: ::c_int = 48;
+pub const EUNATCH: ::c_int = 49;
+pub const ENOCSI: ::c_int = 50;
+pub const EL2HLT: ::c_int = 51;
+pub const EBADE: ::c_int = 52;
+pub const EBADR: ::c_int = 53;
+pub const EXFULL: ::c_int = 54;
+pub const ENOANO: ::c_int = 55;
+pub const EBADRQC: ::c_int = 56;
+pub const EBADSLT: ::c_int = 57;
+pub const EMULTIHOP: ::c_int = 72;
+pub const EOVERFLOW: ::c_int = 75;
+pub const ENOTUNIQ: ::c_int = 76;
+pub const EBADFD: ::c_int = 77;
+pub const EBADMSG: ::c_int = 74;
+pub const EREMCHG: ::c_int = 78;
+pub const ELIBACC: ::c_int = 79;
+pub const ELIBBAD: ::c_int = 80;
+pub const ELIBSCN: ::c_int = 81;
+pub const ELIBMAX: ::c_int = 82;
+pub const ELIBEXEC: ::c_int = 83;
+pub const EILSEQ: ::c_int = 84;
+pub const ERESTART: ::c_int = 85;
+pub const ESTRPIPE: ::c_int = 86;
+pub const EUSERS: ::c_int = 87;
+pub const ENOTSOCK: ::c_int = 88;
+pub const EDESTADDRREQ: ::c_int = 89;
+pub const EMSGSIZE: ::c_int = 90;
+pub const EPROTOTYPE: ::c_int = 91;
+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 EPFNOSUPPORT: ::c_int = 96;
+pub const EAFNOSUPPORT: ::c_int = 97;
+pub const EADDRINUSE: ::c_int = 98;
+pub const EADDRNOTAVAIL: ::c_int = 99;
+pub const ENETDOWN: ::c_int = 100;
+pub const ENETUNREACH: ::c_int = 101;
+pub const ENETRESET: ::c_int = 102;
+pub const ECONNABORTED: ::c_int = 103;
+pub const ECONNRESET: ::c_int = 104;
+pub const ENOBUFS: ::c_int = 105;
+pub const EISCONN: ::c_int = 106;
+pub const ENOTCONN: ::c_int = 107;
+pub const ESHUTDOWN: ::c_int = 108;
+pub const ETOOMANYREFS: ::c_int = 109;
+pub const ETIMEDOUT: ::c_int = 110;
+pub const ECONNREFUSED: ::c_int = 111;
+pub const EHOSTDOWN: ::c_int = 112;
+pub const EHOSTUNREACH: ::c_int = 113;
+pub const EALREADY: ::c_int = 114;
+pub const EINPROGRESS: ::c_int = 115;
+pub const ESTALE: ::c_int = 116;
+pub const EDQUOT: ::c_int = 122;
+pub const ENOMEDIUM: ::c_int = 123;
+pub const EMEDIUMTYPE: ::c_int = 124;
+pub const ECANCELED: ::c_int = 125;
+pub const ENOKEY: ::c_int = 126;
+pub const EKEYEXPIRED: ::c_int = 127;
+pub const EKEYREVOKED: ::c_int = 128;
+pub const EKEYREJECTED: ::c_int = 129;
+pub const EOWNERDEAD: ::c_int = 130;
+pub const ENOTRECOVERABLE: ::c_int = 131;
+pub const EHWPOISON: ::c_int = 133;
+pub const ERFKILL: ::c_int = 132;
+pub const SO_REUSEADDR: ::c_int = 2;
+pub const SO_TYPE: ::c_int = 3;
+pub const SO_ERROR: ::c_int = 4;
+pub const SO_DONTROUTE: ::c_int = 5;
+pub const SO_BROADCAST: ::c_int = 6;
+pub const SO_SNDBUF: ::c_int = 7;
+pub const SO_RCVBUF: ::c_int = 8;
+pub const SO_KEEPALIVE: ::c_int = 9;
+pub const SO_OOBINLINE: ::c_int = 10;
+pub const SO_LINGER: ::c_int = 13;
+pub const SO_REUSEPORT: ::c_int = 15;
+pub const SO_ACCEPTCONN: ::c_int = 30;
+pub const SO_PROTOCOL: ::c_int = 38;
+pub const SO_DOMAIN: ::c_int = 39;
pub const SO_SNDBUFFORCE: ::c_int = 32;
pub const SO_RCVBUFFORCE: ::c_int = 33;
pub const SO_NO_CHECK: ::c_int = 11;
@@ -123,12 +317,69 @@ pub const SO_SNDTIMEO: ::c_int = 19;
pub const SO_PASSCRED: ::c_int = 20;
pub const SO_PEERCRED: ::c_int = 21;
+pub const SA_SIGINFO: ::c_int = 0x00000004;
+pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
+
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SOCK_DGRAM: ::c_int = 2;
+
pub const FIOCLEX: ::c_ulong = 0x20006601;
+pub const FIONCLEX: ::c_ulong = 0x20006602;
pub const FIONBIO: ::c_ulong = 0x8004667e;
pub const MCL_CURRENT: ::c_int = 0x2000;
pub const MCL_FUTURE: ::c_int = 0x4000;
+pub const POLLWRNORM: ::c_short = 0x100;
+pub const POLLWRBAND: ::c_short = 0x200;
+
+pub const F_GETLK: ::c_int = 5;
+pub const F_GETOWN: ::c_int = 9;
+pub const F_SETOWN: ::c_int = 8;
+
+pub const EFD_NONBLOCK: ::c_int = 0x800;
+pub const SFD_NONBLOCK: ::c_int = 0x0800;
+
+pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
+pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
+pub const TIOCEXCL: ::c_ulong = 0x540C;
+pub const TIOCNXCL: ::c_ulong = 0x540D;
+pub const TIOCSCTTY: ::c_ulong = 0x540E;
+pub const TIOCSTI: ::c_ulong = 0x5412;
+pub const TIOCMGET: ::c_ulong = 0x5415;
+pub const TIOCMBIS: ::c_ulong = 0x5416;
+pub const TIOCMBIC: ::c_ulong = 0x5417;
+pub const TIOCMSET: ::c_ulong = 0x5418;
+pub const TIOCCONS: ::c_ulong = 0x541D;
+
+pub const SIGCHLD: ::c_int = 17;
+pub const SIGBUS: ::c_int = 7;
+pub const SIGUSR1: ::c_int = 10;
+pub const SIGUSR2: ::c_int = 12;
+pub const SIGCONT: ::c_int = 18;
+pub const SIGSTOP: ::c_int = 19;
+pub const SIGTSTP: ::c_int = 20;
+pub const SIGURG: ::c_int = 23;
+pub const SIGIO: ::c_int = 29;
+pub const SIGSYS: ::c_int = 31;
+pub const SIGSTKFLT: ::c_int = 16;
+#[deprecated(
+ since = "0.2.55",
+ note = "Use SIGSYS instead"
+)]
+pub const SIGUNUSED: ::c_int = 31;
+pub const SIGPOLL: ::c_int = 29;
+pub const SIGPWR: ::c_int = 30;
+pub const SIG_SETMASK: ::c_int = 2;
+pub const SIG_BLOCK: ::c_int = 0x000000;
+pub const SIG_UNBLOCK: ::c_int = 0x01;
+pub const SIGTTIN: ::c_int = 21;
+pub const SIGTTOU: ::c_int = 22;
+pub const SIGXCPU: ::c_int = 24;
+pub const SIGXFSZ: ::c_int = 25;
+pub const SIGVTALRM: ::c_int = 26;
+pub const SIGPROF: ::c_int = 27;
+pub const SIGWINCH: ::c_int = 28;
pub const SIGSTKSZ: ::size_t = 0x4000;
pub const MINSIGSTKSZ: ::size_t = 4096;
pub const CBAUD: ::tcflag_t = 0xff;
diff --git a/libc/src/unix/notbsd/linux/other/b32/x86.rs b/libc/src/unix/linux_like/linux/gnu/b32/x86.rs
index 00f1f1a..654a18d 100644
--- a/libc/src/unix/notbsd/linux/other/b32/x86.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b32/x86.rs
@@ -3,6 +3,37 @@ pub type wchar_t = i32;
pub type greg_t = i32;
s! {
+ pub struct sigaction {
+ pub sa_sigaction: ::sighandler_t,
+ pub sa_mask: ::sigset_t,
+ pub sa_flags: ::c_int,
+ pub sa_restorer: ::Option<extern fn()>,
+ }
+
+ pub struct statfs {
+ pub f_type: ::__fsword_t,
+ pub f_bsize: ::__fsword_t,
+ pub f_blocks: ::fsblkcnt_t,
+ pub f_bfree: ::fsblkcnt_t,
+ pub f_bavail: ::fsblkcnt_t,
+
+ pub f_files: ::fsfilcnt_t,
+ pub f_ffree: ::fsfilcnt_t,
+ pub f_fsid: ::fsid_t,
+
+ pub f_namelen: ::__fsword_t,
+ pub f_frsize: ::__fsword_t,
+ f_spare: [::__fsword_t; 5],
+ }
+
+ pub struct flock {
+ pub l_type: ::c_short,
+ pub l_whence: ::c_short,
+ pub l_start: ::off_t,
+ pub l_len: ::off_t,
+ pub l_pid: ::pid_t,
+ }
+
pub struct _libc_fpreg {
pub significand: [u16; 4],
pub exponent: u16,
@@ -186,6 +217,27 @@ s! {
pub c_ispeed: ::speed_t,
pub c_ospeed: ::speed_t,
}
+
+ pub struct siginfo_t {
+ pub si_signo: ::c_int,
+ pub si_errno: ::c_int,
+ pub si_code: ::c_int,
+ #[doc(hidden)]
+ #[deprecated(
+ since="0.2.54",
+ note="Please leave a comment on \
+ https://github.com/rust-lang/libc/pull/1316 if you're using \
+ this field"
+ )]
+ pub _pad: [::c_int; 29],
+ _align: [usize; 0],
+ }
+
+ pub struct stack_t {
+ pub ss_sp: *mut ::c_void,
+ pub ss_flags: ::c_int,
+ pub ss_size: ::size_t
+ }
}
s_no_extra_traits!{
@@ -315,17 +367,147 @@ cfg_if! {
}
}
+pub const RLIM_INFINITY: ::rlim_t = !0;
+pub const VEOF: usize = 4;
+pub const RTLD_DEEPBIND: ::c_int = 0x8;
+pub const RTLD_GLOBAL: ::c_int = 0x100;
+pub const RTLD_NOLOAD: ::c_int = 0x4;
pub const O_DIRECT: ::c_int = 0x4000;
pub const O_DIRECTORY: ::c_int = 0x10000;
pub const O_NOFOLLOW: ::c_int = 0x20000;
pub const O_LARGEFILE: ::c_int = 0o0100000;
+pub const O_APPEND: ::c_int = 1024;
+pub const O_CREAT: ::c_int = 64;
+pub const O_EXCL: ::c_int = 128;
+pub const O_NOCTTY: ::c_int = 256;
+pub const O_NONBLOCK: ::c_int = 2048;
+pub const O_SYNC: ::c_int = 1052672;
+pub const O_RSYNC: ::c_int = 1052672;
+pub const O_DSYNC: ::c_int = 4096;
+pub const O_FSYNC: ::c_int = 0x101000;
+pub const O_ASYNC: ::c_int = 0x2000;
+pub const O_NDELAY: ::c_int = 0x800;
+pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
+pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
+pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
+pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
+pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
+pub const SOL_SOCKET: ::c_int = 1;
+
+pub const MADV_SOFT_OFFLINE: ::c_int = 101;
pub const MAP_LOCKED: ::c_int = 0x02000;
pub const MAP_NORESERVE: ::c_int = 0x04000;
pub const MAP_32BIT: ::c_int = 0x0040;
+pub const MAP_ANON: ::c_int = 0x0020;
+pub const MAP_ANONYMOUS: ::c_int = 0x0020;
+pub const MAP_DENYWRITE: ::c_int = 0x0800;
+pub const MAP_EXECUTABLE: ::c_int = 0x01000;
+pub const MAP_POPULATE: ::c_int = 0x08000;
+pub const MAP_NONBLOCK: ::c_int = 0x010000;
+pub const MAP_STACK: ::c_int = 0x020000;
+pub const MAP_HUGETLB: ::c_int = 0x040000;
+pub const MAP_GROWSDOWN: ::c_int = 0x0100;
pub const EDEADLOCK: ::c_int = 35;
+pub const EUCLEAN: ::c_int = 117;
+pub const ENOTNAM: ::c_int = 118;
+pub const ENAVAIL: ::c_int = 119;
+pub const EISNAM: ::c_int = 120;
+pub const EREMOTEIO: ::c_int = 121;
+pub const EDEADLK: ::c_int = 35;
+pub const ENAMETOOLONG: ::c_int = 36;
+pub const ENOLCK: ::c_int = 37;
+pub const ENOSYS: ::c_int = 38;
+pub const ENOTEMPTY: ::c_int = 39;
+pub const ELOOP: ::c_int = 40;
+pub const ENOMSG: ::c_int = 42;
+pub const EIDRM: ::c_int = 43;
+pub const ECHRNG: ::c_int = 44;
+pub const EL2NSYNC: ::c_int = 45;
+pub const EL3HLT: ::c_int = 46;
+pub const EL3RST: ::c_int = 47;
+pub const ELNRNG: ::c_int = 48;
+pub const EUNATCH: ::c_int = 49;
+pub const ENOCSI: ::c_int = 50;
+pub const EL2HLT: ::c_int = 51;
+pub const EBADE: ::c_int = 52;
+pub const EBADR: ::c_int = 53;
+pub const EXFULL: ::c_int = 54;
+pub const ENOANO: ::c_int = 55;
+pub const EBADRQC: ::c_int = 56;
+pub const EBADSLT: ::c_int = 57;
+pub const EMULTIHOP: ::c_int = 72;
+pub const EOVERFLOW: ::c_int = 75;
+pub const ENOTUNIQ: ::c_int = 76;
+pub const EBADFD: ::c_int = 77;
+pub const EBADMSG: ::c_int = 74;
+pub const EREMCHG: ::c_int = 78;
+pub const ELIBACC: ::c_int = 79;
+pub const ELIBBAD: ::c_int = 80;
+pub const ELIBSCN: ::c_int = 81;
+pub const ELIBMAX: ::c_int = 82;
+pub const ELIBEXEC: ::c_int = 83;
+pub const EILSEQ: ::c_int = 84;
+pub const ERESTART: ::c_int = 85;
+pub const ESTRPIPE: ::c_int = 86;
+pub const EUSERS: ::c_int = 87;
+pub const ENOTSOCK: ::c_int = 88;
+pub const EDESTADDRREQ: ::c_int = 89;
+pub const EMSGSIZE: ::c_int = 90;
+pub const EPROTOTYPE: ::c_int = 91;
+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 EPFNOSUPPORT: ::c_int = 96;
+pub const EAFNOSUPPORT: ::c_int = 97;
+pub const EADDRINUSE: ::c_int = 98;
+pub const EADDRNOTAVAIL: ::c_int = 99;
+pub const ENETDOWN: ::c_int = 100;
+pub const ENETUNREACH: ::c_int = 101;
+pub const ENETRESET: ::c_int = 102;
+pub const ECONNABORTED: ::c_int = 103;
+pub const ECONNRESET: ::c_int = 104;
+pub const ENOBUFS: ::c_int = 105;
+pub const EISCONN: ::c_int = 106;
+pub const ENOTCONN: ::c_int = 107;
+pub const ESHUTDOWN: ::c_int = 108;
+pub const ETOOMANYREFS: ::c_int = 109;
+pub const ETIMEDOUT: ::c_int = 110;
+pub const ECONNREFUSED: ::c_int = 111;
+pub const EHOSTDOWN: ::c_int = 112;
+pub const EHOSTUNREACH: ::c_int = 113;
+pub const EALREADY: ::c_int = 114;
+pub const EINPROGRESS: ::c_int = 115;
+pub const ESTALE: ::c_int = 116;
+pub const EDQUOT: ::c_int = 122;
+pub const ENOMEDIUM: ::c_int = 123;
+pub const EMEDIUMTYPE: ::c_int = 124;
+pub const ECANCELED: ::c_int = 125;
+pub const ENOKEY: ::c_int = 126;
+pub const EKEYEXPIRED: ::c_int = 127;
+pub const EKEYREVOKED: ::c_int = 128;
+pub const EKEYREJECTED: ::c_int = 129;
+pub const EOWNERDEAD: ::c_int = 130;
+pub const ENOTRECOVERABLE: ::c_int = 131;
+pub const EHWPOISON: ::c_int = 133;
+pub const ERFKILL: ::c_int = 132;
+pub const SO_REUSEADDR: ::c_int = 2;
+pub const SO_TYPE: ::c_int = 3;
+pub const SO_ERROR: ::c_int = 4;
+pub const SO_DONTROUTE: ::c_int = 5;
+pub const SO_BROADCAST: ::c_int = 6;
+pub const SO_SNDBUF: ::c_int = 7;
+pub const SO_RCVBUF: ::c_int = 8;
+pub const SO_KEEPALIVE: ::c_int = 9;
+pub const SO_OOBINLINE: ::c_int = 10;
+pub const SO_LINGER: ::c_int = 13;
+pub const SO_REUSEPORT: ::c_int = 15;
+pub const SO_ACCEPTCONN: ::c_int = 30;
+pub const SO_PROTOCOL: ::c_int = 38;
+pub const SO_DOMAIN: ::c_int = 39;
pub const SO_SNDBUFFORCE: ::c_int = 32;
pub const SO_RCVBUFFORCE: ::c_int = 33;
pub const SO_NO_CHECK: ::c_int = 11;
@@ -336,7 +518,18 @@ pub const SO_SNDLOWAT: ::c_int = 19;
pub const SO_RCVTIMEO: ::c_int = 20;
pub const SO_SNDTIMEO: ::c_int = 21;
+pub const SA_SIGINFO: ::c_int = 0x00000004;
+pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
+
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SOCK_DGRAM: ::c_int = 2;
+
+pub const F_GETLK: ::c_int = 5;
+pub const F_GETOWN: ::c_int = 9;
+pub const F_SETOWN: ::c_int = 8;
+
pub const FIOCLEX: ::c_ulong = 0x5451;
+pub const FIONCLEX: ::c_ulong = 0x5450;
pub const FIONBIO: ::c_ulong = 0x5421;
pub const PTRACE_GETFPXREGS: ::c_uint = 18;
@@ -345,6 +538,40 @@ pub const PTRACE_SETFPXREGS: ::c_uint = 19;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const POLLWRNORM: ::c_short = 0x100;
+pub const POLLWRBAND: ::c_short = 0x200;
+
+pub const EFD_NONBLOCK: ::c_int = 0x800;
+pub const SFD_NONBLOCK: ::c_int = 0x0800;
+
+pub const SIGCHLD: ::c_int = 17;
+pub const SIGBUS: ::c_int = 7;
+pub const SIGUSR1: ::c_int = 10;
+pub const SIGUSR2: ::c_int = 12;
+pub const SIGCONT: ::c_int = 18;
+pub const SIGSTOP: ::c_int = 19;
+pub const SIGTSTP: ::c_int = 20;
+pub const SIGURG: ::c_int = 23;
+pub const SIGIO: ::c_int = 29;
+pub const SIGSYS: ::c_int = 31;
+pub const SIGSTKFLT: ::c_int = 16;
+#[deprecated(
+ since = "0.2.55",
+ note = "Use SIGSYS instead"
+)]
+pub const SIGUNUSED: ::c_int = 31;
+pub const SIGPOLL: ::c_int = 29;
+pub const SIGPWR: ::c_int = 30;
+pub const SIG_SETMASK: ::c_int = 2;
+pub const SIG_BLOCK: ::c_int = 0x000000;
+pub const SIG_UNBLOCK: ::c_int = 0x01;
+pub const SIGTTIN: ::c_int = 21;
+pub const SIGTTOU: ::c_int = 22;
+pub const SIGXCPU: ::c_int = 24;
+pub const SIGXFSZ: ::c_int = 25;
+pub const SIGVTALRM: ::c_int = 26;
+pub const SIGPROF: ::c_int = 27;
+pub const SIGWINCH: ::c_int = 28;
pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
pub const CBAUD: ::tcflag_t = 0o0010017;
@@ -399,6 +626,18 @@ pub const FFDLY: ::tcflag_t = 0o100000;
pub const VTDLY: ::tcflag_t = 0o040000;
pub const XTABS: ::tcflag_t = 0o014000;
+pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
+pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
+pub const TIOCEXCL: ::c_ulong = 0x540C;
+pub const TIOCNXCL: ::c_ulong = 0x540D;
+pub const TIOCSCTTY: ::c_ulong = 0x540E;
+pub const TIOCSTI: ::c_ulong = 0x5412;
+pub const TIOCMGET: ::c_ulong = 0x5415;
+pub const TIOCMBIS: ::c_ulong = 0x5416;
+pub const TIOCMBIC: ::c_ulong = 0x5417;
+pub const TIOCMSET: ::c_ulong = 0x5418;
+pub const TIOCCONS: ::c_ulong = 0x541D;
+
pub const B0: ::speed_t = 0o000000;
pub const B50: ::speed_t = 0o000001;
pub const B75: ::speed_t = 0o000002;
@@ -462,6 +701,19 @@ pub const TIOCGRS485: ::c_int = 0x542E;
pub const TIOCSRS485: ::c_int = 0x542F;
pub const FIONREAD: ::c_ulong = 0x541B;
+pub const TCSANOW: ::c_int = 0;
+pub const TCSADRAIN: ::c_int = 1;
+pub const TCSAFLUSH: ::c_int = 2;
+
+pub const TIOCLINUX: ::c_ulong = 0x541C;
+pub const TIOCGSERIAL: ::c_ulong = 0x541E;
+pub const TIOCM_ST: ::c_int = 0x008;
+pub const TIOCM_SR: ::c_int = 0x010;
+pub const TIOCM_CTS: ::c_int = 0x020;
+pub const TIOCM_CAR: ::c_int = 0x040;
+pub const TIOCM_RNG: ::c_int = 0x080;
+pub const TIOCM_DSR: ::c_int = 0x100;
+
// Syscall table
pub const SYS_restart_syscall: ::c_long = 0;
pub const SYS_exit: ::c_long = 1;
diff --git a/libc/src/unix/notbsd/linux/other/b64/aarch64.rs b/libc/src/unix/linux_like/linux/gnu/b64/aarch64.rs
index 090f893..3e1bff5 100644
--- a/libc/src/unix/notbsd/linux/other/b64/aarch64.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b64/aarch64.rs
@@ -12,6 +12,39 @@ pub type suseconds_t = i64;
pub type __u64 = ::c_ulonglong;
s! {
+ pub struct sigaction {
+ pub sa_sigaction: ::sighandler_t,
+ pub sa_mask: ::sigset_t,
+ #[cfg(target_arch = "sparc64")]
+ __reserved0: ::c_int,
+ pub sa_flags: ::c_int,
+ pub sa_restorer: ::Option<extern fn()>,
+ }
+
+ pub struct statfs {
+ pub f_type: ::__fsword_t,
+ pub f_bsize: ::__fsword_t,
+ pub f_blocks: ::fsblkcnt_t,
+ pub f_bfree: ::fsblkcnt_t,
+ pub f_bavail: ::fsblkcnt_t,
+
+ pub f_files: ::fsfilcnt_t,
+ pub f_ffree: ::fsfilcnt_t,
+ pub f_fsid: ::fsid_t,
+
+ pub f_namelen: ::__fsword_t,
+ pub f_frsize: ::__fsword_t,
+ f_spare: [::__fsword_t; 5],
+ }
+
+ pub struct flock {
+ pub l_type: ::c_short,
+ pub l_whence: ::c_short,
+ pub l_start: ::off_t,
+ pub l_len: ::off_t,
+ pub l_pid: ::pid_t,
+ }
+
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
@@ -141,17 +174,46 @@ s! {
pub c_ispeed: ::speed_t,
pub c_ospeed: ::speed_t,
}
+
+ pub struct siginfo_t {
+ pub si_signo: ::c_int,
+ pub si_errno: ::c_int,
+ pub si_code: ::c_int,
+ #[doc(hidden)]
+ #[deprecated(
+ since="0.2.54",
+ note="Please leave a comment on \
+ https://github.com/rust-lang/libc/pull/1316 if you're using \
+ this field"
+ )]
+ pub _pad: [::c_int; 29],
+ _align: [usize; 0],
+ }
+
+ pub struct stack_t {
+ pub ss_sp: *mut ::c_void,
+ pub ss_flags: ::c_int,
+ pub ss_size: ::size_t
+ }
}
+pub const VEOF: usize = 4;
pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
+pub const RTLD_DEEPBIND: ::c_int = 0x8;
+pub const RTLD_GLOBAL: ::c_int = 0x100;
+pub const RTLD_NOLOAD: ::c_int = 0x4;
+
pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
pub const TIOCGRS485: ::c_int = 0x542E;
pub const TIOCSRS485: ::c_int = 0x542F;
-pub const RLIMIT_NOFILE: ::c_int = 7;
-pub const RLIMIT_NPROC: ::c_int = 6;
+pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
+pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
+pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
+pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
+pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
pub const O_APPEND: ::c_int = 1024;
pub const O_CREAT: ::c_int = 64;
@@ -166,8 +228,14 @@ pub const O_NOATIME: ::c_int = 0o1000000;
pub const O_PATH: ::c_int = 0o10000000;
pub const O_TMPFILE: ::c_int = 0o20000000 | O_DIRECTORY;
+pub const MADV_SOFT_OFFLINE: ::c_int = 101;
pub const MAP_GROWSDOWN: ::c_int = 0x0100;
+pub const EUCLEAN: ::c_int = 117;
+pub const ENOTNAM: ::c_int = 118;
+pub const ENAVAIL: ::c_int = 119;
+pub const EISNAM: ::c_int = 120;
+pub const EREMOTEIO: ::c_int = 121;
pub const EDEADLK: ::c_int = 35;
pub const ENAMETOOLONG: ::c_int = 36;
pub const ENOLCK: ::c_int = 37;
@@ -247,6 +315,9 @@ pub const ENOTRECOVERABLE: ::c_int = 131;
pub const EHWPOISON: ::c_int = 133;
pub const ERFKILL: ::c_int = 132;
+pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+pub const POSIX_FADV_NOREUSE: ::c_int = 5;
+
pub const SOL_SOCKET: ::c_int = 1;
pub const SO_REUSEADDR: ::c_int = 2;
@@ -302,10 +373,20 @@ pub const SO_INCOMING_CPU: ::c_int = 49;
pub const SO_ATTACH_BPF: ::c_int = 50;
pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER;
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SOCK_DGRAM: ::c_int = 2;
+
pub const SA_ONSTACK: ::c_int = 0x08000000;
pub const SA_SIGINFO: ::c_int = 0x00000004;
pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
+pub const SIGTTIN: ::c_int = 21;
+pub const SIGTTOU: ::c_int = 22;
+pub const SIGXCPU: ::c_int = 24;
+pub const SIGXFSZ: ::c_int = 25;
+pub const SIGVTALRM: ::c_int = 26;
+pub const SIGPROF: ::c_int = 27;
+pub const SIGWINCH: ::c_int = 28;
pub const SIGCHLD: ::c_int = 17;
pub const SIGBUS: ::c_int = 7;
pub const SIGUSR1: ::c_int = 10;
@@ -360,6 +441,13 @@ pub const TIOCMBIC: ::c_ulong = 0x5417;
pub const TIOCMSET: ::c_ulong = 0x5418;
pub const TIOCCONS: ::c_ulong = 0x541D;
+pub const TIOCM_ST: ::c_int = 0x008;
+pub const TIOCM_SR: ::c_int = 0x010;
+pub const TIOCM_CTS: ::c_int = 0x020;
+pub const TIOCM_CAR: ::c_int = 0x040;
+pub const TIOCM_RNG: ::c_int = 0x080;
+pub const TIOCM_DSR: ::c_int = 0x100;
+
pub const SFD_CLOEXEC: ::c_int = 0x080000;
pub const NCCS: usize = 32;
@@ -429,10 +517,19 @@ pub const O_NOFOLLOW: ::c_int = 0x8000;
pub const MAP_LOCKED: ::c_int = 0x02000;
pub const MAP_NORESERVE: ::c_int = 0x04000;
+pub const MAP_ANON: ::c_int = 0x0020;
+pub const MAP_ANONYMOUS: ::c_int = 0x0020;
+pub const MAP_DENYWRITE: ::c_int = 0x0800;
+pub const MAP_EXECUTABLE: ::c_int = 0x01000;
+pub const MAP_POPULATE: ::c_int = 0x08000;
+pub const MAP_NONBLOCK: ::c_int = 0x010000;
+pub const MAP_STACK: ::c_int = 0x020000;
+pub const MAP_HUGETLB: ::c_int = 0x040000;
pub const EDEADLOCK: ::c_int = 35;
pub const FIOCLEX: ::c_ulong = 0x5451;
+pub const FIONCLEX: ::c_ulong = 0x5450;
pub const FIONBIO: ::c_ulong = 0x5421;
pub const MCL_CURRENT: ::c_int = 0x0001;
@@ -553,6 +650,13 @@ pub const TIOCGWINSZ: ::c_ulong = 0x5413;
pub const TIOCSWINSZ: ::c_ulong = 0x5414;
pub const FIONREAD: ::c_ulong = 0x541B;
+pub const TCSANOW: ::c_int = 0;
+pub const TCSADRAIN: ::c_int = 1;
+pub const TCSAFLUSH: ::c_int = 2;
+
+pub const TIOCLINUX: ::c_ulong = 0x541C;
+pub const TIOCGSERIAL: ::c_ulong = 0x541E;
+
// Syscall table
pub const SYS_io_setup: ::c_long = 0;
pub const SYS_io_destroy: ::c_long = 1;
diff --git a/libc/src/unix/notbsd/linux/mips/mips64.rs b/libc/src/unix/linux_like/linux/gnu/b64/mips64.rs
index f480e50..baaa330 100644
--- a/libc/src/unix/notbsd/linux/mips/mips64.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b64/mips64.rs
@@ -1,36 +1,15 @@
use pthread_mutex_t;
-pub type blkcnt_t = i64;
pub type blksize_t = i64;
pub type c_char = i8;
pub type c_long = i64;
pub type c_ulong = u64;
-pub type ino_t = u64;
pub type nlink_t = u64;
-pub type off_t = i64;
pub type suseconds_t = i64;
-pub type time_t = i64;
pub type wchar_t = i32;
-pub type clock_t = i64;
pub type __u64 = ::c_ulong;
s! {
- pub struct aiocb {
- pub aio_fildes: ::c_int,
- pub aio_lio_opcode: ::c_int,
- pub aio_reqprio: ::c_int,
- pub aio_buf: *mut ::c_void,
- pub aio_nbytes: ::size_t,
- pub aio_sigevent: ::sigevent,
- __next_prio: *mut aiocb,
- __abs_prio: ::c_int,
- __policy: ::c_int,
- __error_code: ::c_int,
- __return_value: ::ssize_t,
- pub aio_offset: off_t,
- __glibc_reserved: [::c_char; 32]
- }
-
pub struct stat {
pub st_dev: ::c_ulong,
st_pad1: [::c_long; 2],
@@ -55,6 +34,29 @@ s! {
st_pad5: [::c_long; 7],
}
+ pub struct statfs {
+ pub f_type: ::c_long,
+ pub f_bsize: ::c_long,
+ pub f_frsize: ::c_long,
+ pub f_blocks: ::fsblkcnt_t,
+ pub f_bfree: ::fsblkcnt_t,
+ pub f_files: ::fsblkcnt_t,
+ pub f_ffree: ::fsblkcnt_t,
+ pub f_bavail: ::fsblkcnt_t,
+ pub f_fsid: ::fsid_t,
+
+ pub f_namelen: ::c_long,
+ f_spare: [::c_long; 6],
+ }
+
+ pub struct flock {
+ pub l_type: ::c_short,
+ pub l_whence: ::c_short,
+ pub l_start: ::off_t,
+ pub l_len: ::off_t,
+ pub l_pid: ::pid_t,
+ }
+
pub struct stat64 {
pub st_dev: ::c_ulong,
st_pad1: [::c_long; 2],
@@ -130,7 +132,7 @@ s! {
pub struct sigaction {
pub sa_flags: ::c_int,
pub sa_sigaction: ::sighandler_t,
- pub sa_mask: sigset_t,
+ pub sa_mask: ::sigset_t,
pub sa_restorer: ::Option<extern fn()>,
}
@@ -140,10 +142,6 @@ s! {
pub ss_flags: ::c_int,
}
- pub struct sigset_t {
- __size: [::c_ulong; 16],
- }
-
pub struct siginfo_t {
pub si_signo: ::c_int,
pub si_code: ::c_int,
@@ -178,83 +176,15 @@ s! {
__unused5: ::c_ulong
}
- pub struct msqid_ds {
- pub msg_perm: ::ipc_perm,
- pub msg_stime: ::time_t,
- pub msg_rtime: ::time_t,
- pub msg_ctime: ::time_t,
- __msg_cbytes: ::c_ulong,
- pub msg_qnum: ::msgqnum_t,
- pub msg_qbytes: ::msglen_t,
- pub msg_lspid: ::pid_t,
- pub msg_lrpid: ::pid_t,
- __glibc_reserved4: ::c_ulong,
- __glibc_reserved5: ::c_ulong,
- }
-
- pub struct statfs {
- pub f_type: ::c_long,
- pub f_bsize: ::c_long,
- pub f_frsize: ::c_long,
- pub f_blocks: ::fsblkcnt_t,
- pub f_bfree: ::fsblkcnt_t,
- pub f_files: ::fsblkcnt_t,
- pub f_ffree: ::fsblkcnt_t,
- pub f_bavail: ::fsblkcnt_t,
- pub f_fsid: ::fsid_t,
-
- pub f_namelen: ::c_long,
- f_spare: [::c_long; 6],
- }
-
- pub struct msghdr {
- pub msg_name: *mut ::c_void,
- pub msg_namelen: ::socklen_t,
- pub msg_iov: *mut ::iovec,
- pub msg_iovlen: ::size_t,
- pub msg_control: *mut ::c_void,
- pub msg_controllen: ::size_t,
- pub msg_flags: ::c_int,
- }
-
- pub struct cmsghdr {
- pub cmsg_len: ::size_t,
- pub cmsg_level: ::c_int,
- pub cmsg_type: ::c_int,
- }
-
- pub struct termios {
+ pub struct termios2 {
pub c_iflag: ::tcflag_t,
pub c_oflag: ::tcflag_t,
pub c_cflag: ::tcflag_t,
pub c_lflag: ::tcflag_t,
pub c_line: ::cc_t,
- pub c_cc: [::cc_t; ::NCCS],
- }
-
- pub struct flock {
- pub l_type: ::c_short,
- pub l_whence: ::c_short,
- pub l_start: ::off_t,
- pub l_len: ::off_t,
- pub l_pid: ::pid_t,
- }
-
- pub struct sysinfo {
- pub uptime: ::c_long,
- pub loads: [::c_ulong; 3],
- pub totalram: ::c_ulong,
- pub freeram: ::c_ulong,
- pub sharedram: ::c_ulong,
- pub bufferram: ::c_ulong,
- pub totalswap: ::c_ulong,
- pub freeswap: ::c_ulong,
- pub procs: ::c_ushort,
- pub pad: ::c_ushort,
- pub totalhigh: ::c_ulong,
- pub freehigh: ::c_ulong,
- pub mem_unit: ::c_uint,
- pub _f: [::c_char; 0],
+ pub c_cc: [::cc_t; 23],
+ pub c_ispeed: ::speed_t,
+ pub c_ospeed: ::speed_t,
}
}
@@ -262,7 +192,6 @@ pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
-pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: usize = 8;
align_const! {
#[cfg(target_endian = "little")]
@@ -315,10 +244,6 @@ align_const! {
};
}
-pub const O_LARGEFILE: ::c_int = 0;
-
-pub const RLIM_INFINITY: ::rlim_t = 0xffff_ffff_ffff_ffff;
-
pub const SYS_read: ::c_long = 5000 + 0;
pub const SYS_write: ::c_long = 5000 + 1;
pub const SYS_open: ::c_long = 5000 + 2;
@@ -643,3 +568,433 @@ pub const SYS_pwritev2: ::c_long = 5000 + 322;
pub const SYS_pkey_mprotect: ::c_long = 5000 + 323;
pub const SYS_pkey_alloc: ::c_long = 5000 + 324;
pub const SYS_pkey_free: ::c_long = 5000 + 325;
+
+pub const SFD_CLOEXEC: ::c_int = 0x080000;
+
+pub const NCCS: usize = 32;
+
+pub const O_TRUNC: ::c_int = 512;
+
+pub const O_NOATIME: ::c_int = 0o1000000;
+pub const O_CLOEXEC: ::c_int = 0x80000;
+pub const O_PATH: ::c_int = 0o10000000;
+pub const O_TMPFILE: ::c_int = 0o20000000 | O_DIRECTORY;
+
+pub const EBFONT: ::c_int = 59;
+pub const ENOSTR: ::c_int = 60;
+pub const ENODATA: ::c_int = 61;
+pub const ETIME: ::c_int = 62;
+pub const ENOSR: ::c_int = 63;
+pub const ENONET: ::c_int = 64;
+pub const ENOPKG: ::c_int = 65;
+pub const EREMOTE: ::c_int = 66;
+pub const ENOLINK: ::c_int = 67;
+pub const EADV: ::c_int = 68;
+pub const ESRMNT: ::c_int = 69;
+pub const ECOMM: ::c_int = 70;
+pub const EPROTO: ::c_int = 71;
+pub const EDOTDOT: ::c_int = 73;
+
+pub const SA_NODEFER: ::c_int = 0x40000000;
+pub const SA_RESETHAND: ::c_int = 0x80000000;
+pub const SA_RESTART: ::c_int = 0x10000000;
+pub const SA_NOCLDSTOP: ::c_int = 0x00000001;
+
+pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+pub const POSIX_FADV_NOREUSE: ::c_int = 5;
+
+pub const EPOLL_CLOEXEC: ::c_int = 0x80000;
+
+pub const EFD_CLOEXEC: ::c_int = 0x80000;
+
+pub const O_DIRECT: ::c_int = 0x8000;
+pub const O_DIRECTORY: ::c_int = 0x10000;
+pub const O_NOFOLLOW: ::c_int = 0x20000;
+
+pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 5;
+pub const RLIMIT_AS: ::__rlimit_resource_t = 6;
+pub const RLIMIT_RSS: ::__rlimit_resource_t = 7;
+pub const RLIMIT_NPROC: ::__rlimit_resource_t = 8;
+pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 9;
+
+pub const O_APPEND: ::c_int = 8;
+pub const O_CREAT: ::c_int = 256;
+pub const O_EXCL: ::c_int = 1024;
+pub const O_NOCTTY: ::c_int = 2048;
+pub const O_NONBLOCK: ::c_int = 128;
+pub const O_SYNC: ::c_int = 0x4010;
+pub const O_RSYNC: ::c_int = 0x4010;
+pub const O_DSYNC: ::c_int = 0x10;
+pub const O_FSYNC: ::c_int = 0x4010;
+pub const O_ASYNC: ::c_int = 0x1000;
+pub const O_NDELAY: ::c_int = 0x80;
+
+pub const EDEADLK: ::c_int = 45;
+pub const ENAMETOOLONG: ::c_int = 78;
+pub const ENOLCK: ::c_int = 46;
+pub const ENOSYS: ::c_int = 89;
+pub const ENOTEMPTY: ::c_int = 93;
+pub const ELOOP: ::c_int = 90;
+pub const ENOMSG: ::c_int = 35;
+pub const EIDRM: ::c_int = 36;
+pub const ECHRNG: ::c_int = 37;
+pub const EL2NSYNC: ::c_int = 38;
+pub const EL3HLT: ::c_int = 39;
+pub const EL3RST: ::c_int = 40;
+pub const ELNRNG: ::c_int = 41;
+pub const EUNATCH: ::c_int = 42;
+pub const ENOCSI: ::c_int = 43;
+pub const EL2HLT: ::c_int = 44;
+pub const EBADE: ::c_int = 50;
+pub const EBADR: ::c_int = 51;
+pub const EXFULL: ::c_int = 52;
+pub const ENOANO: ::c_int = 53;
+pub const EBADRQC: ::c_int = 54;
+pub const EBADSLT: ::c_int = 55;
+pub const EDEADLOCK: ::c_int = 56;
+pub const EMULTIHOP: ::c_int = 74;
+pub const EOVERFLOW: ::c_int = 79;
+pub const ENOTUNIQ: ::c_int = 80;
+pub const EBADFD: ::c_int = 81;
+pub const EBADMSG: ::c_int = 77;
+pub const EREMCHG: ::c_int = 82;
+pub const ELIBACC: ::c_int = 83;
+pub const ELIBBAD: ::c_int = 84;
+pub const ELIBSCN: ::c_int = 85;
+pub const ELIBMAX: ::c_int = 86;
+pub const ELIBEXEC: ::c_int = 87;
+pub const EILSEQ: ::c_int = 88;
+pub const ERESTART: ::c_int = 91;
+pub const ESTRPIPE: ::c_int = 92;
+pub const EUSERS: ::c_int = 94;
+pub const ENOTSOCK: ::c_int = 95;
+pub const EDESTADDRREQ: ::c_int = 96;
+pub const EMSGSIZE: ::c_int = 97;
+pub const EPROTOTYPE: ::c_int = 98;
+pub const ENOPROTOOPT: ::c_int = 99;
+pub const EPROTONOSUPPORT: ::c_int = 120;
+pub const ESOCKTNOSUPPORT: ::c_int = 121;
+pub const EOPNOTSUPP: ::c_int = 122;
+pub const EPFNOSUPPORT: ::c_int = 123;
+pub const EAFNOSUPPORT: ::c_int = 124;
+pub const EADDRINUSE: ::c_int = 125;
+pub const EADDRNOTAVAIL: ::c_int = 126;
+pub const ENETDOWN: ::c_int = 127;
+pub const ENETUNREACH: ::c_int = 128;
+pub const ENETRESET: ::c_int = 129;
+pub const ECONNABORTED: ::c_int = 130;
+pub const ECONNRESET: ::c_int = 131;
+pub const ENOBUFS: ::c_int = 132;
+pub const EISCONN: ::c_int = 133;
+pub const ENOTCONN: ::c_int = 134;
+pub const ESHUTDOWN: ::c_int = 143;
+pub const ETOOMANYREFS: ::c_int = 144;
+pub const ETIMEDOUT: ::c_int = 145;
+pub const ECONNREFUSED: ::c_int = 146;
+pub const EHOSTDOWN: ::c_int = 147;
+pub const EHOSTUNREACH: ::c_int = 148;
+pub const EALREADY: ::c_int = 149;
+pub const EINPROGRESS: ::c_int = 150;
+pub const ESTALE: ::c_int = 151;
+pub const EUCLEAN: ::c_int = 135;
+pub const ENOTNAM: ::c_int = 137;
+pub const ENAVAIL: ::c_int = 138;
+pub const EISNAM: ::c_int = 139;
+pub const EREMOTEIO: ::c_int = 140;
+pub const EDQUOT: ::c_int = 1133;
+pub const ENOMEDIUM: ::c_int = 159;
+pub const EMEDIUMTYPE: ::c_int = 160;
+pub const ECANCELED: ::c_int = 158;
+pub const ENOKEY: ::c_int = 161;
+pub const EKEYEXPIRED: ::c_int = 162;
+pub const EKEYREVOKED: ::c_int = 163;
+pub const EKEYREJECTED: ::c_int = 164;
+pub const EOWNERDEAD: ::c_int = 165;
+pub const ENOTRECOVERABLE: ::c_int = 166;
+pub const ERFKILL: ::c_int = 167;
+
+pub const MAP_NORESERVE: ::c_int = 0x400;
+pub const MAP_ANON: ::c_int = 0x800;
+pub const MAP_ANONYMOUS: ::c_int = 0x800;
+pub const MAP_GROWSDOWN: ::c_int = 0x1000;
+pub const MAP_DENYWRITE: ::c_int = 0x2000;
+pub const MAP_EXECUTABLE: ::c_int = 0x4000;
+pub const MAP_LOCKED: ::c_int = 0x8000;
+pub const MAP_POPULATE: ::c_int = 0x10000;
+pub const MAP_NONBLOCK: ::c_int = 0x20000;
+pub const MAP_STACK: ::c_int = 0x40000;
+pub const MAP_HUGETLB: ::c_int = 0x080000;
+
+pub const SOCK_STREAM: ::c_int = 2;
+pub const SOCK_DGRAM: ::c_int = 1;
+
+pub const SOL_SOCKET: ::c_int = 0xffff;
+
+pub const SO_REUSEADDR: ::c_int = 0x0004;
+pub const SO_KEEPALIVE: ::c_int = 0x0008;
+pub const SO_DONTROUTE: ::c_int = 0x0010;
+pub const SO_BROADCAST: ::c_int = 0x0020;
+pub const SO_LINGER: ::c_int = 0x0080;
+pub const SO_OOBINLINE: ::c_int = 0x0100;
+pub const SO_REUSEPORT: ::c_int = 0x0200;
+pub const SO_TYPE: ::c_int = 0x1008;
+pub const SO_STYLE: ::c_int = SO_TYPE;
+pub const SO_ERROR: ::c_int = 0x1007;
+pub const SO_SNDBUF: ::c_int = 0x1001;
+pub const SO_RCVBUF: ::c_int = 0x1002;
+pub const SO_SNDLOWAT: ::c_int = 0x1003;
+pub const SO_RCVLOWAT: ::c_int = 0x1004;
+pub const SO_SNDTIMEO: ::c_int = 0x1005;
+pub const SO_RCVTIMEO: ::c_int = 0x1006;
+pub const SO_ACCEPTCONN: ::c_int = 0x1009;
+pub const SO_PROTOCOL: ::c_int = 0x1028;
+pub const SO_DOMAIN: ::c_int = 0x1029;
+pub const SO_NO_CHECK: ::c_int = 11;
+pub const SO_PRIORITY: ::c_int = 12;
+pub const SO_BSDCOMPAT: ::c_int = 14;
+pub const SO_PASSCRED: ::c_int = 17;
+pub const SO_PEERCRED: ::c_int = 18;
+pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
+pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
+pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
+pub const SO_BINDTODEVICE: ::c_int = 25;
+pub const SO_ATTACH_FILTER: ::c_int = 26;
+pub const SO_DETACH_FILTER: ::c_int = 27;
+pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER;
+pub const SO_PEERNAME: ::c_int = 28;
+pub const SO_TIMESTAMP: ::c_int = 29;
+pub const SO_PEERSEC: ::c_int = 30;
+pub const SO_SNDBUFFORCE: ::c_int = 31;
+pub const SO_RCVBUFFORCE: ::c_int = 33;
+pub const SO_PASSSEC: ::c_int = 34;
+pub const SO_TIMESTAMPNS: ::c_int = 35;
+pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS;
+pub const SO_MARK: ::c_int = 36;
+pub const SO_RXQ_OVFL: ::c_int = 40;
+pub const SO_WIFI_STATUS: ::c_int = 41;
+pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS;
+pub const SO_PEEK_OFF: ::c_int = 42;
+pub const SO_NOFCS: ::c_int = 43;
+pub const SO_LOCK_FILTER: ::c_int = 44;
+pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
+pub const SO_BUSY_POLL: ::c_int = 46;
+pub const SO_MAX_PACING_RATE: ::c_int = 47;
+pub const SO_BPF_EXTENSIONS: ::c_int = 48;
+pub const SO_INCOMING_CPU: ::c_int = 49;
+pub const SO_ATTACH_BPF: ::c_int = 50;
+pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER;
+
+pub const FIOCLEX: ::c_ulong = 0x6601;
+pub const FIONCLEX: ::c_ulong = 0x6602;
+pub const FIONBIO: ::c_ulong = 0x667e;
+
+pub const SA_ONSTACK: ::c_int = 0x08000000;
+pub const SA_SIGINFO: ::c_int = 0x00000008;
+pub const SA_NOCLDWAIT: ::c_int = 0x00010000;
+
+pub const SIGCHLD: ::c_int = 18;
+pub const SIGBUS: ::c_int = 10;
+pub const SIGTTIN: ::c_int = 26;
+pub const SIGTTOU: ::c_int = 27;
+pub const SIGXCPU: ::c_int = 30;
+pub const SIGXFSZ: ::c_int = 31;
+pub const SIGVTALRM: ::c_int = 28;
+pub const SIGPROF: ::c_int = 29;
+pub const SIGWINCH: ::c_int = 20;
+pub const SIGUSR1: ::c_int = 16;
+pub const SIGUSR2: ::c_int = 17;
+pub const SIGCONT: ::c_int = 25;
+pub const SIGSTOP: ::c_int = 23;
+pub const SIGTSTP: ::c_int = 24;
+pub const SIGURG: ::c_int = 21;
+pub const SIGIO: ::c_int = 22;
+pub const SIGSYS: ::c_int = 12;
+pub const SIGPOLL: ::c_int = 22;
+pub const SIGPWR: ::c_int = 19;
+pub const SIG_SETMASK: ::c_int = 3;
+pub const SIG_BLOCK: ::c_int = 0x1;
+pub const SIG_UNBLOCK: ::c_int = 0x2;
+
+pub const POLLWRNORM: ::c_short = 0x004;
+pub const POLLWRBAND: ::c_short = 0x100;
+
+pub const VEOF: usize = 16;
+pub const VEOL: usize = 17;
+pub const VEOL2: usize = 6;
+pub const VMIN: usize = 4;
+pub const IEXTEN: ::tcflag_t = 0x00000100;
+pub const TOSTOP: ::tcflag_t = 0x00008000;
+pub const FLUSHO: ::tcflag_t = 0x00002000;
+pub const EXTPROC: ::tcflag_t = 0o200000;
+pub const TCSANOW: ::c_int = 0x540e;
+pub const TCSADRAIN: ::c_int = 0x540f;
+pub const TCSAFLUSH: ::c_int = 0x5410;
+
+pub const PTRACE_GETFPREGS: ::c_uint = 14;
+pub const PTRACE_SETFPREGS: ::c_uint = 15;
+pub const PTRACE_DETACH: ::c_uint = 17;
+pub const PTRACE_GETFPXREGS: ::c_uint = 18;
+pub const PTRACE_SETFPXREGS: ::c_uint = 19;
+pub const PTRACE_GETREGS: ::c_uint = 12;
+pub const PTRACE_SETREGS: ::c_uint = 13;
+
+pub const EFD_NONBLOCK: ::c_int = 0x80;
+
+pub const F_RDLCK: ::c_int = 0;
+pub const F_WRLCK: ::c_int = 1;
+pub const F_UNLCK: ::c_int = 2;
+pub const F_GETLK: ::c_int = 14;
+pub const F_GETOWN: ::c_int = 23;
+pub const F_SETOWN: ::c_int = 24;
+pub const F_SETLK: ::c_int = 6;
+pub const F_SETLKW: ::c_int = 7;
+
+pub const SFD_NONBLOCK: ::c_int = 0x80;
+
+pub const TCGETS: ::c_ulong = 0x540d;
+pub const TCSETS: ::c_ulong = 0x540e;
+pub const TCSETSW: ::c_ulong = 0x540f;
+pub const TCSETSF: ::c_ulong = 0x5410;
+pub const TCGETA: ::c_ulong = 0x5401;
+pub const TCSETA: ::c_ulong = 0x5402;
+pub const TCSETAW: ::c_ulong = 0x5403;
+pub const TCSETAF: ::c_ulong = 0x5404;
+pub const TCSBRK: ::c_ulong = 0x5405;
+pub const TCXONC: ::c_ulong = 0x5406;
+pub const TCFLSH: ::c_ulong = 0x5407;
+pub const TIOCGSOFTCAR: ::c_ulong = 0x5481;
+pub const TIOCSSOFTCAR: ::c_ulong = 0x5482;
+pub const TIOCINQ: ::c_ulong = 0x467f;
+pub const TIOCLINUX: ::c_ulong = 0x5483;
+pub const TIOCGSERIAL: ::c_ulong = 0x5484;
+pub const TIOCEXCL: ::c_ulong = 0x740d;
+pub const TIOCNXCL: ::c_ulong = 0x740e;
+pub const TIOCSCTTY: ::c_ulong = 0x5480;
+pub const TIOCGPGRP: ::c_ulong = 0x40047477;
+pub const TIOCSPGRP: ::c_ulong = 0x80047476;
+pub const TIOCOUTQ: ::c_ulong = 0x7472;
+pub const TIOCSTI: ::c_ulong = 0x5472;
+pub const TIOCGWINSZ: ::c_ulong = 0x40087468;
+pub const TIOCSWINSZ: ::c_ulong = 0x80087467;
+pub const TIOCMGET: ::c_ulong = 0x741d;
+pub const TIOCMBIS: ::c_ulong = 0x741b;
+pub const TIOCMBIC: ::c_ulong = 0x741c;
+pub const TIOCMSET: ::c_ulong = 0x741a;
+pub const FIONREAD: ::c_ulong = 0x467f;
+pub const TIOCCONS: ::c_ulong = 0x80047478;
+
+pub const RTLD_DEEPBIND: ::c_int = 0x10;
+pub const RTLD_GLOBAL: ::c_int = 0x4;
+pub const RTLD_NOLOAD: ::c_int = 0x8;
+
+pub const MCL_CURRENT: ::c_int = 0x0001;
+pub const MCL_FUTURE: ::c_int = 0x0002;
+
+pub const SIGSTKSZ: ::size_t = 8192;
+pub const MINSIGSTKSZ: ::size_t = 2048;
+pub const CBAUD: ::tcflag_t = 0o0010017;
+pub const TAB1: ::tcflag_t = 0x00000800;
+pub const TAB2: ::tcflag_t = 0x00001000;
+pub const TAB3: ::tcflag_t = 0x00001800;
+pub const CR1: ::tcflag_t = 0x00000200;
+pub const CR2: ::tcflag_t = 0x00000400;
+pub const CR3: ::tcflag_t = 0x00000600;
+pub const FF1: ::tcflag_t = 0x00008000;
+pub const BS1: ::tcflag_t = 0x00002000;
+pub const VT1: ::tcflag_t = 0x00004000;
+pub const VWERASE: usize = 14;
+pub const VREPRINT: usize = 12;
+pub const VSUSP: usize = 10;
+pub const VSTART: usize = 8;
+pub const VSTOP: usize = 9;
+pub const VDISCARD: usize = 13;
+pub const VTIME: usize = 5;
+pub const IXON: ::tcflag_t = 0x00000400;
+pub const IXOFF: ::tcflag_t = 0x00001000;
+pub const ONLCR: ::tcflag_t = 0x4;
+pub const CSIZE: ::tcflag_t = 0x00000030;
+pub const CS6: ::tcflag_t = 0x00000010;
+pub const CS7: ::tcflag_t = 0x00000020;
+pub const CS8: ::tcflag_t = 0x00000030;
+pub const CSTOPB: ::tcflag_t = 0x00000040;
+pub const CREAD: ::tcflag_t = 0x00000080;
+pub const PARENB: ::tcflag_t = 0x00000100;
+pub const PARODD: ::tcflag_t = 0x00000200;
+pub const HUPCL: ::tcflag_t = 0x00000400;
+pub const CLOCAL: ::tcflag_t = 0x00000800;
+pub const ECHOKE: ::tcflag_t = 0x00000800;
+pub const ECHOE: ::tcflag_t = 0x00000010;
+pub const ECHOK: ::tcflag_t = 0x00000020;
+pub const ECHONL: ::tcflag_t = 0x00000040;
+pub const ECHOPRT: ::tcflag_t = 0x00000400;
+pub const ECHOCTL: ::tcflag_t = 0x00000200;
+pub const ISIG: ::tcflag_t = 0x00000001;
+pub const ICANON: ::tcflag_t = 0x00000002;
+pub const PENDIN: ::tcflag_t = 0x00004000;
+pub const NOFLSH: ::tcflag_t = 0x00000080;
+pub const CIBAUD: ::tcflag_t = 0o02003600000;
+pub const CBAUDEX: ::tcflag_t = 0o010000;
+pub const VSWTC: usize = 7;
+pub const OLCUC: ::tcflag_t = 0o000002;
+pub const NLDLY: ::tcflag_t = 0o000400;
+pub const CRDLY: ::tcflag_t = 0o003000;
+pub const TABDLY: ::tcflag_t = 0o014000;
+pub const BSDLY: ::tcflag_t = 0o020000;
+pub const FFDLY: ::tcflag_t = 0o100000;
+pub const VTDLY: ::tcflag_t = 0o040000;
+pub const XTABS: ::tcflag_t = 0o014000;
+
+pub const B0: ::speed_t = 0o000000;
+pub const B50: ::speed_t = 0o000001;
+pub const B75: ::speed_t = 0o000002;
+pub const B110: ::speed_t = 0o000003;
+pub const B134: ::speed_t = 0o000004;
+pub const B150: ::speed_t = 0o000005;
+pub const B200: ::speed_t = 0o000006;
+pub const B300: ::speed_t = 0o000007;
+pub const B600: ::speed_t = 0o000010;
+pub const B1200: ::speed_t = 0o000011;
+pub const B1800: ::speed_t = 0o000012;
+pub const B2400: ::speed_t = 0o000013;
+pub const B4800: ::speed_t = 0o000014;
+pub const B9600: ::speed_t = 0o000015;
+pub const B19200: ::speed_t = 0o000016;
+pub const B38400: ::speed_t = 0o000017;
+pub const EXTA: ::speed_t = B19200;
+pub const EXTB: ::speed_t = B38400;
+pub const BOTHER: ::speed_t = 0o010000;
+pub const B57600: ::speed_t = 0o010001;
+pub const B115200: ::speed_t = 0o010002;
+pub const B230400: ::speed_t = 0o010003;
+pub const B460800: ::speed_t = 0o010004;
+pub const B500000: ::speed_t = 0o010005;
+pub const B576000: ::speed_t = 0o010006;
+pub const B921600: ::speed_t = 0o010007;
+pub const B1000000: ::speed_t = 0o010010;
+pub const B1152000: ::speed_t = 0o010011;
+pub const B1500000: ::speed_t = 0o010012;
+pub const B2000000: ::speed_t = 0o010013;
+pub const B2500000: ::speed_t = 0o010014;
+pub const B3000000: ::speed_t = 0o010015;
+pub const B3500000: ::speed_t = 0o010016;
+pub const B4000000: ::speed_t = 0o010017;
+
+pub const TIOCM_ST: ::c_int = 0x010;
+pub const TIOCM_SR: ::c_int = 0x020;
+pub const TIOCM_CTS: ::c_int = 0x040;
+pub const TIOCM_CAR: ::c_int = 0x100;
+pub const TIOCM_RNG: ::c_int = 0x200;
+pub const TIOCM_DSR: ::c_int = 0x400;
+
+pub const EHWPOISON: ::c_int = 168;
+
+#[link(name = "util")]
+extern {
+ pub fn sysctl(name: *mut ::c_int,
+ namelen: ::c_int,
+ oldp: *mut ::c_void,
+ oldlenp: *mut ::size_t,
+ newp: *mut ::c_void,
+ newlen: ::size_t)
+ -> ::c_int;
+}
diff --git a/libc/src/unix/notbsd/linux/other/b64/mod.rs b/libc/src/unix/linux_like/linux/gnu/b64/mod.rs
index 7fcf8ba..c91da0d 100644
--- a/libc/src/unix/notbsd/linux/other/b64/mod.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b64/mod.rs
@@ -5,13 +5,13 @@ pub type time_t = i64;
pub type ino_t = u64;
pub type off_t = i64;
pub type blkcnt_t = i64;
-pub type __fsword_t = i64;
pub type shmatt_t = u64;
pub type msgqnum_t = u64;
pub type msglen_t = u64;
pub type fsblkcnt_t = u64;
pub type fsfilcnt_t = u64;
pub type rlim_t = u64;
+pub type __fsword_t = i64;
s! {
pub struct sigset_t {
@@ -51,8 +51,10 @@ s! {
__glibc_reserved4: u64,
__glibc_reserved5: u64,
}
+
}
+pub const RLIM_INFINITY: ::rlim_t = !0;
pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: usize = 8;
pub const O_LARGEFILE: ::c_int = 0;
@@ -67,18 +69,15 @@ cfg_if! {
} else if #[cfg(any(target_arch = "sparc64"))] {
mod sparc64;
pub use self::sparc64::*;
+ } else if #[cfg(any(target_arch = "mips64"))] {
+ mod mips64;
+ pub use self::mips64::*;
+ } else if #[cfg(any(target_arch = "s390x"))] {
+ mod s390x;
+ pub use self::s390x::*;
} else if #[cfg(any(target_arch = "x86_64"))] {
mod x86_64;
pub use self::x86_64::*;
- cfg_if! {
- if #[cfg(target_pointer_width = "32")] {
- mod x32;
- pub use self::x32::*;
- } else {
- mod not_x32;
- pub use self::not_x32::*;
- }
- }
} else {
// Unknown target_arch
}
diff --git a/libc/src/unix/notbsd/linux/other/b64/powerpc64.rs b/libc/src/unix/linux_like/linux/gnu/b64/powerpc64.rs
index b31248b..4324959 100644
--- a/libc/src/unix/notbsd/linux/other/b64/powerpc64.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b64/powerpc64.rs
@@ -12,6 +12,39 @@ pub type suseconds_t = i64;
pub type __u64 = ::c_ulong;
s! {
+ pub struct sigaction {
+ pub sa_sigaction: ::sighandler_t,
+ pub sa_mask: ::sigset_t,
+ #[cfg(target_arch = "sparc64")]
+ __reserved0: ::c_int,
+ pub sa_flags: ::c_int,
+ pub sa_restorer: ::Option<extern fn()>,
+ }
+
+ pub struct statfs {
+ pub f_type: ::__fsword_t,
+ pub f_bsize: ::__fsword_t,
+ pub f_blocks: ::fsblkcnt_t,
+ pub f_bfree: ::fsblkcnt_t,
+ pub f_bavail: ::fsblkcnt_t,
+
+ pub f_files: ::fsfilcnt_t,
+ pub f_ffree: ::fsfilcnt_t,
+ pub f_fsid: ::fsid_t,
+
+ pub f_namelen: ::__fsword_t,
+ pub f_frsize: ::__fsword_t,
+ f_spare: [::__fsword_t; 5],
+ }
+
+ pub struct flock {
+ pub l_type: ::c_short,
+ pub l_whence: ::c_short,
+ pub l_start: ::off_t,
+ pub l_len: ::off_t,
+ pub l_pid: ::pid_t,
+ }
+
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
@@ -128,15 +161,46 @@ s! {
__unused4: ::c_ulong,
__unused5: ::c_ulong
}
+
+ pub struct siginfo_t {
+ pub si_signo: ::c_int,
+ pub si_errno: ::c_int,
+ pub si_code: ::c_int,
+ #[doc(hidden)]
+ #[deprecated(
+ since="0.2.54",
+ note="Please leave a comment on \
+ https://github.com/rust-lang/libc/pull/1316 if you're using \
+ this field"
+ )]
+ pub _pad: [::c_int; 29],
+ _align: [usize; 0],
+ }
+
+ pub struct stack_t {
+ pub ss_sp: *mut ::c_void,
+ pub ss_flags: ::c_int,
+ pub ss_size: ::size_t
+ }
}
+pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+pub const POSIX_FADV_NOREUSE: ::c_int = 5;
+
+pub const RTLD_DEEPBIND: ::c_int = 0x8;
+pub const RTLD_GLOBAL: ::c_int = 0x100;
+pub const RTLD_NOLOAD: ::c_int = 0x4;
+pub const VEOF: usize = 4;
pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
-pub const RLIMIT_NOFILE: ::c_int = 7;
-pub const RLIMIT_NPROC: ::c_int = 6;
+pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
+pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
+pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
+pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
+pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
pub const O_APPEND: ::c_int = 1024;
pub const O_CREAT: ::c_int = 64;
@@ -151,7 +215,16 @@ pub const O_NOATIME: ::c_int = 0o1000000;
pub const O_PATH: ::c_int = 0o10000000;
pub const O_TMPFILE: ::c_int = 0o20000000 | O_DIRECTORY;
+pub const MADV_SOFT_OFFLINE: ::c_int = 101;
pub const MAP_GROWSDOWN: ::c_int = 0x0100;
+pub const MAP_ANON: ::c_int = 0x0020;
+pub const MAP_ANONYMOUS: ::c_int = 0x0020;
+pub const MAP_DENYWRITE: ::c_int = 0x0800;
+pub const MAP_EXECUTABLE: ::c_int = 0x01000;
+pub const MAP_POPULATE: ::c_int = 0x08000;
+pub const MAP_NONBLOCK: ::c_int = 0x010000;
+pub const MAP_STACK: ::c_int = 0x020000;
+pub const MAP_HUGETLB: ::c_int = 0x040000;
pub const EDEADLK: ::c_int = 35;
pub const ENAMETOOLONG: ::c_int = 36;
@@ -287,10 +360,20 @@ pub const SO_INCOMING_CPU: ::c_int = 49;
pub const SO_ATTACH_BPF: ::c_int = 50;
pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER;
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SOCK_DGRAM: ::c_int = 2;
+
pub const SA_ONSTACK: ::c_int = 0x08000000;
pub const SA_SIGINFO: ::c_int = 0x00000004;
pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
+pub const SIGTTIN: ::c_int = 21;
+pub const SIGTTOU: ::c_int = 22;
+pub const SIGXCPU: ::c_int = 24;
+pub const SIGXFSZ: ::c_int = 25;
+pub const SIGVTALRM: ::c_int = 26;
+pub const SIGPROF: ::c_int = 27;
+pub const SIGWINCH: ::c_int = 28;
pub const SIGCHLD: ::c_int = 17;
pub const SIGBUS: ::c_int = 7;
pub const SIGUSR1: ::c_int = 10;
@@ -335,6 +418,12 @@ pub const F_UNLCK: ::c_int = 2;
pub const SFD_NONBLOCK: ::c_int = 0x0800;
+pub const TCSANOW: ::c_int = 0;
+pub const TCSADRAIN: ::c_int = 1;
+pub const TCSAFLUSH: ::c_int = 2;
+
+pub const TIOCLINUX: ::c_ulong = 0x541C;
+pub const TIOCGSERIAL: ::c_ulong = 0x541E;
pub const TIOCEXCL: ::c_ulong = 0x540C;
pub const TIOCNXCL: ::c_ulong = 0x540D;
pub const TIOCSCTTY: ::c_ulong = 0x540E;
@@ -347,6 +436,13 @@ pub const TIOCCONS: ::c_ulong = 0x541D;
pub const TIOCGRS485: ::c_int = 0x542E;
pub const TIOCSRS485: ::c_int = 0x542F;
+pub const TIOCM_ST: ::c_int = 0x008;
+pub const TIOCM_SR: ::c_int = 0x010;
+pub const TIOCM_CTS: ::c_int = 0x020;
+pub const TIOCM_CAR: ::c_int = 0x040;
+pub const TIOCM_RNG: ::c_int = 0x080;
+pub const TIOCM_DSR: ::c_int = 0x100;
+
pub const SFD_CLOEXEC: ::c_int = 0x080000;
pub const NCCS: usize = 32;
@@ -442,8 +538,14 @@ pub const MAP_LOCKED: ::c_int = 0x00080;
pub const MAP_NORESERVE: ::c_int = 0x00040;
pub const EDEADLOCK: ::c_int = 58;
+pub const EUCLEAN: ::c_int = 117;
+pub const ENOTNAM: ::c_int = 118;
+pub const ENAVAIL: ::c_int = 119;
+pub const EISNAM: ::c_int = 120;
+pub const EREMOTEIO: ::c_int = 121;
pub const FIOCLEX: ::c_ulong = 0x20006601;
+pub const FIONCLEX: ::c_ulong = 0x20006602;
pub const FIONBIO: ::c_ulong = 0x8004667e;
pub const MCL_CURRENT: ::c_int = 0x2000;
diff --git a/libc/src/unix/notbsd/linux/s390x/mod.rs b/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs
index 5572094..b8fda7a 100644
--- a/libc/src/unix/notbsd/linux/s390x/mod.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs
@@ -1,47 +1,61 @@
-use ::pthread_mutex_t;
+//! s390x
+
+use pthread_mutex_t;
-pub type __rlimit_resource_t = ::c_uint;
-pub type pthread_t = c_ulong;
-pub type blkcnt_t = i64;
pub type blksize_t = i64;
pub type c_char = u8;
pub type c_long = i64;
pub type c_ulong = u64;
-pub type fsblkcnt_t = u64;
-pub type fsfilcnt_t = u64;
-pub type ino_t = u64;
pub type nlink_t = u64;
-pub type off_t = i64;
-pub type rlim_t = u64;
pub type suseconds_t = i64;
-pub type time_t = i64;
pub type wchar_t = i32;
pub type greg_t = u64;
-pub type clock_t = i64;
-pub type shmatt_t = ::c_ulong;
-pub type msgqnum_t = ::c_ulong;
-pub type msglen_t = ::c_ulong;
-pub type __fsword_t = ::c_long;
-pub type __priority_which_t = ::c_uint;
pub type __u64 = u64;
s! {
- pub struct aiocb {
- pub aio_fildes: ::c_int,
- pub aio_lio_opcode: ::c_int,
- pub aio_reqprio: ::c_int,
- pub aio_buf: *mut ::c_void,
- pub aio_nbytes: ::size_t,
- pub aio_sigevent: ::sigevent,
- __next_prio: *mut aiocb,
- __abs_prio: ::c_int,
- __policy: ::c_int,
- __error_code: ::c_int,
- __return_value: ::ssize_t,
- pub aio_offset: off_t,
- #[cfg(target_pointer_width = "32")]
- __unused1: [::c_char; 4],
- __glibc_reserved: [::c_char; 32]
+ pub struct sigaction {
+ pub sa_sigaction: ::sighandler_t,
+ __glibc_reserved0: ::c_int,
+ pub sa_flags: ::c_int,
+ pub sa_restorer: ::Option<extern fn()>,
+ pub sa_mask: ::sigset_t,
+ }
+
+ pub struct statfs {
+ pub f_type: ::c_uint,
+ pub f_bsize: ::c_uint,
+ pub f_blocks: ::fsblkcnt_t,
+ pub f_bfree: ::fsblkcnt_t,
+ pub f_bavail: ::fsblkcnt_t,
+ pub f_files: ::fsfilcnt_t,
+ pub f_ffree: ::fsfilcnt_t,
+ pub f_fsid: ::fsid_t,
+ pub f_namelen: ::c_uint,
+ pub f_frsize: ::c_uint,
+ pub f_flags: ::c_uint,
+ f_spare: [::c_uint; 4],
+ }
+
+ pub struct flock {
+ pub l_type: ::c_short,
+ pub l_whence: ::c_short,
+ pub l_start: ::off_t,
+ pub l_len: ::off_t,
+ pub l_pid: ::pid_t,
+ }
+
+ pub struct siginfo_t {
+ pub si_signo: ::c_int,
+ pub si_errno: ::c_int,
+ pub si_code: ::c_int,
+ _pad: ::c_int,
+ _pad2: [::c_long; 14],
+ }
+
+ pub struct stack_t {
+ pub ss_sp: *mut ::c_void,
+ pub ss_flags: ::c_int,
+ pub ss_size: ::size_t
}
pub struct stat {
@@ -90,32 +104,6 @@ s! {
__size: [::c_ulong; 7]
}
- pub struct sigaction {
- pub sa_sigaction: ::sighandler_t,
- __glibc_reserved0: ::c_int,
- pub sa_flags: ::c_int,
- pub sa_restorer: ::Option<extern fn()>,
- pub sa_mask: sigset_t,
- }
-
- pub struct stack_t {
- pub ss_sp: *mut ::c_void,
- pub ss_flags: ::c_int,
- pub ss_size: ::size_t,
- }
-
- pub struct sigset_t {
- __size: [::c_ulong; 16],
- }
-
- pub struct siginfo_t {
- pub si_signo: ::c_int,
- pub si_errno: ::c_int,
- pub si_code: ::c_int,
- _pad: ::c_int,
- _pad2: [::c_long; 14],
- }
-
pub struct ipc_perm {
pub __key: ::key_t,
pub uid: ::uid_t,
@@ -142,21 +130,6 @@ s! {
__unused5: ::c_ulong
}
- pub struct statfs {
- pub f_type: ::c_uint,
- pub f_bsize: ::c_uint,
- pub f_blocks: ::fsblkcnt_t,
- pub f_bfree: ::fsblkcnt_t,
- pub f_bavail: ::fsblkcnt_t,
- pub f_files: ::fsfilcnt_t,
- pub f_ffree: ::fsfilcnt_t,
- pub f_fsid: ::fsid_t,
- pub f_namelen: ::c_uint,
- pub f_frsize: ::c_uint,
- pub f_flags: ::c_uint,
- f_spare: [::c_uint; 4],
- }
-
pub struct statvfs {
pub f_bsize: ::c_ulong,
pub f_frsize: ::c_ulong,
@@ -172,33 +145,6 @@ s! {
__f_spare: [::c_int; 6],
}
- pub struct msghdr {
- pub msg_name: *mut ::c_void,
- pub msg_namelen: ::socklen_t,
- pub msg_iov: *mut ::iovec,
- pub msg_iovlen: ::size_t,
- pub msg_control: *mut ::c_void,
- pub msg_controllen: ::size_t,
- pub msg_flags: ::c_int,
- }
-
- pub struct cmsghdr {
- pub cmsg_len: ::size_t,
- pub cmsg_level: ::c_int,
- pub cmsg_type: ::c_int,
- }
-
- pub struct termios {
- pub c_iflag: ::tcflag_t,
- pub c_oflag: ::tcflag_t,
- pub c_cflag: ::tcflag_t,
- pub c_lflag: ::tcflag_t,
- pub c_line: ::cc_t,
- pub c_cc: [::cc_t; ::NCCS],
- pub c_ispeed: ::speed_t,
- pub c_ospeed: ::speed_t,
- }
-
pub struct termios2 {
pub c_iflag: ::tcflag_t,
pub c_oflag: ::tcflag_t,
@@ -210,44 +156,6 @@ s! {
pub c_ospeed: ::speed_t,
}
- pub struct sysinfo {
- pub uptime: ::c_long,
- pub loads: [::c_ulong; 3],
- pub totalram: ::c_ulong,
- pub freeram: ::c_ulong,
- pub sharedram: ::c_ulong,
- pub bufferram: ::c_ulong,
- pub totalswap: ::c_ulong,
- pub freeswap: ::c_ulong,
- pub procs: ::c_ushort,
- pub pad: ::c_ushort,
- pub totalhigh: ::c_ulong,
- pub freehigh: ::c_ulong,
- pub mem_unit: ::c_uint,
- pub _f: [::c_char; 0],
- }
-
- pub struct glob64_t {
- pub gl_pathc: ::size_t,
- pub gl_pathv: *mut *mut ::c_char,
- pub gl_offs: ::size_t,
- pub gl_flags: ::c_int,
-
- __unused1: *mut ::c_void,
- __unused2: *mut ::c_void,
- __unused3: *mut ::c_void,
- __unused4: *mut ::c_void,
- __unused5: *mut ::c_void,
- }
-
- pub struct flock {
- pub l_type: ::c_short,
- pub l_whence: ::c_short,
- pub l_start: ::off_t,
- pub l_len: ::off_t,
- pub l_pid: ::pid_t,
- }
-
pub struct __psw_t {
pub mask: u64,
pub addr: u64,
@@ -274,20 +182,6 @@ s! {
pub uc_sigmask: ::sigset_t,
}
- pub struct msqid_ds {
- pub msg_perm: ::ipc_perm,
- pub msg_stime: ::time_t,
- pub msg_rtime: ::time_t,
- pub msg_ctime: ::time_t,
- __msg_cbytes: ::c_ulong,
- pub msg_qnum: ::msgqnum_t,
- pub msg_qbytes: ::msglen_t,
- pub msg_lspid: ::pid_t,
- pub msg_lrpid: ::pid_t,
- __glibc_reserved4: ::c_ulong,
- __glibc_reserved5: ::c_ulong,
- }
-
pub struct statfs64 {
pub f_type: ::c_uint,
pub f_bsize: ::c_uint,
@@ -354,15 +248,18 @@ cfg_if! {
}
}
-pub const MADV_SOFT_OFFLINE: ::c_int = 101;
-pub const MS_RMT_MASK: ::c_ulong = 0x02800051;
+pub const POSIX_FADV_DONTNEED: ::c_int = 6;
+pub const POSIX_FADV_NOREUSE: ::c_int = 7;
+pub const VEOF: usize = 4;
+pub const RTLD_DEEPBIND: ::c_int = 0x8;
+pub const RTLD_GLOBAL: ::c_int = 0x100;
+pub const RTLD_NOLOAD: ::c_int = 0x4;
pub const SFD_CLOEXEC: ::c_int = 0x080000;
pub const NCCS: usize = 32;
pub const O_TRUNC: ::c_int = 512;
-pub const O_LARGEFILE: ::c_int = 0;
pub const O_NOATIME: ::c_int = 0o1000000;
pub const O_CLOEXEC: ::c_int = 0x80000;
pub const O_PATH: ::c_int = 0o10000000;
@@ -392,14 +289,10 @@ pub const EPOLL_CLOEXEC: ::c_int = 0x80000;
pub const EFD_CLOEXEC: ::c_int = 0x80000;
-pub const POSIX_FADV_DONTNEED: ::c_int = 6;
-pub const POSIX_FADV_NOREUSE: ::c_int = 7;
-
pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
-pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: usize = 8;
align_const! {
pub const PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP: ::pthread_mutex_t =
@@ -425,6 +318,11 @@ align_const! {
};
}
+pub const EUCLEAN: ::c_int = 117;
+pub const ENOTNAM: ::c_int = 118;
+pub const ENAVAIL: ::c_int = 119;
+pub const EISNAM: ::c_int = 120;
+pub const EREMOTEIO: ::c_int = 121;
pub const EADDRINUSE: ::c_int = 98;
pub const EADDRNOTAVAIL: ::c_int = 99;
pub const ECONNABORTED: ::c_int = 103;
@@ -435,16 +333,12 @@ pub const ENOSYS: ::c_int = 38;
pub const ENOTCONN: ::c_int = 107;
pub const ETIMEDOUT: ::c_int = 110;
pub const FIOCLEX: ::c_ulong = 0x5451;
+pub const FIONCLEX: ::c_ulong = 0x5450;
pub const FIONBIO: ::c_ulong = 0x5421;
-pub const MAP_ANON: ::c_int = 0x20;
-pub const O_ACCMODE: ::c_int = 3;
pub const O_APPEND: ::c_int = 1024;
pub const O_CREAT: ::c_int = 64;
pub const O_EXCL: ::c_int = 128;
pub const O_NONBLOCK: ::c_int = 2048;
-pub const PTHREAD_STACK_MIN: ::size_t = 16384;
-pub const PTHREAD_MUTEX_ADAPTIVE_NP: ::c_int = 3;
-pub const RLIM_INFINITY: ::rlim_t = 0xffffffffffffffff;
pub const SA_NOCLDWAIT: ::c_int = 2;
pub const SA_ONSTACK: ::c_int = 0x08000000;
pub const SA_SIGINFO: ::c_int = 4;
@@ -452,8 +346,6 @@ pub const SIGBUS: ::c_int = 7;
pub const SIGSTKSZ: ::size_t = 0x2000;
pub const MINSIGSTKSZ: ::size_t = 2048;
pub const SIG_SETMASK: ::c_int = 2;
-pub const SOCK_DGRAM: ::c_int = 2;
-pub const SOCK_STREAM: ::c_int = 1;
pub const SOL_SOCKET: ::c_int = 1;
pub const SO_BROADCAST: ::c_int = 6;
pub const SO_ERROR: ::c_int = 4;
@@ -469,13 +361,14 @@ pub const SO_RXQ_OVFL: ::c_int = 40;
pub const SO_PEEK_OFF: ::c_int = 42;
pub const SO_BUSY_POLL: ::c_int = 46;
-pub const RLIMIT_RSS: ::c_int = 5;
-pub const RLIMIT_NOFILE: ::c_int = 7;
-pub const RLIMIT_AS: ::c_int = 9;
-pub const RLIMIT_NPROC: ::c_int = 6;
-pub const RLIMIT_MEMLOCK: ::c_int = 8;
-pub const RLIMIT_RTTIME: ::c_int = 15;
-pub const RLIMIT_NLIMITS: ::c_int = 16;
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SOCK_DGRAM: ::c_int = 2;
+
+pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
+pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
+pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
+pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
+pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
pub const O_NOCTTY: ::c_int = 256;
pub const O_SYNC: ::c_int = 1052672;
@@ -486,44 +379,18 @@ pub const O_DIRECT: ::c_int = 0x4000;
pub const O_DIRECTORY: ::c_int = 0x10000;
pub const O_NOFOLLOW: ::c_int = 0x20000;
-pub const SOCK_NONBLOCK: ::c_int = O_NONBLOCK;
-
-pub const LC_PAPER: ::c_int = 7;
-pub const LC_NAME: ::c_int = 8;
-pub const LC_ADDRESS: ::c_int = 9;
-pub const LC_TELEPHONE: ::c_int = 10;
-pub const LC_MEASUREMENT: ::c_int = 11;
-pub const LC_IDENTIFICATION: ::c_int = 12;
-pub const LC_PAPER_MASK: ::c_int = (1 << LC_PAPER);
-pub const LC_NAME_MASK: ::c_int = (1 << LC_NAME);
-pub const LC_ADDRESS_MASK: ::c_int = (1 << LC_ADDRESS);
-pub const LC_TELEPHONE_MASK: ::c_int = (1 << LC_TELEPHONE);
-pub const LC_MEASUREMENT_MASK: ::c_int = (1 << LC_MEASUREMENT);
-pub const LC_IDENTIFICATION_MASK: ::c_int = (1 << LC_IDENTIFICATION);
-pub const LC_ALL_MASK: ::c_int = ::LC_CTYPE_MASK
- | ::LC_NUMERIC_MASK
- | ::LC_TIME_MASK
- | ::LC_COLLATE_MASK
- | ::LC_MONETARY_MASK
- | ::LC_MESSAGES_MASK
- | LC_PAPER_MASK
- | LC_NAME_MASK
- | LC_ADDRESS_MASK
- | LC_TELEPHONE_MASK
- | LC_MEASUREMENT_MASK
- | LC_IDENTIFICATION_MASK;
-
-pub const MAP_ANONYMOUS: ::c_int = 0x0020;
+pub const MADV_SOFT_OFFLINE: ::c_int = 101;
pub const MAP_GROWSDOWN: ::c_int = 0x0100;
-pub const MAP_DENYWRITE: ::c_int = 0x0800;
-pub const MAP_EXECUTABLE: ::c_int = 0x01000;
pub const MAP_LOCKED: ::c_int = 0x02000;
pub const MAP_NORESERVE: ::c_int = 0x04000;
+pub const MAP_ANON: ::c_int = 0x0020;
+pub const MAP_ANONYMOUS: ::c_int = 0x0020;
+pub const MAP_DENYWRITE: ::c_int = 0x0800;
+pub const MAP_EXECUTABLE: ::c_int = 0x01000;
pub const MAP_POPULATE: ::c_int = 0x08000;
pub const MAP_NONBLOCK: ::c_int = 0x010000;
pub const MAP_STACK: ::c_int = 0x020000;
-pub const MAP_SHARED_VALIDATE: ::c_int = 0x3;
-pub const MAP_FIXED_NOREPLACE: ::c_int = 0x100000;
+pub const MAP_HUGETLB: ::c_int = 0x040000;
pub const EDEADLOCK: ::c_int = 35;
pub const ENAMETOOLONG: ::c_int = 36;
@@ -569,7 +436,6 @@ 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;
@@ -584,11 +450,6 @@ pub const EHOSTUNREACH: ::c_int = 113;
pub const EALREADY: ::c_int = 114;
pub const EINPROGRESS: ::c_int = 115;
pub const ESTALE: ::c_int = 116;
-pub const EUCLEAN: ::c_int = 117;
-pub const ENOTNAM: ::c_int = 118;
-pub const ENAVAIL: ::c_int = 119;
-pub const EISNAM: ::c_int = 120;
-pub const EREMOTEIO: ::c_int = 121;
pub const EDQUOT: ::c_int = 122;
pub const ENOMEDIUM: ::c_int = 123;
pub const EMEDIUMTYPE: ::c_int = 124;
@@ -602,8 +463,6 @@ pub const ENOTRECOVERABLE: ::c_int = 131;
pub const EHWPOISON: ::c_int = 133;
pub const ERFKILL: ::c_int = 132;
-pub const SOCK_SEQPACKET: ::c_int = 5;
-
pub const SO_TYPE: ::c_int = 3;
pub const SO_DONTROUTE: ::c_int = 5;
pub const SO_SNDBUF: ::c_int = 7;
@@ -622,17 +481,13 @@ pub const SO_ACCEPTCONN: ::c_int = 30;
pub const SO_SNDBUFFORCE: ::c_int = 32;
pub const SO_RCVBUFFORCE: ::c_int = 33;
-pub const TCP_COOKIE_TRANSACTIONS: ::c_int = 15;
-pub const TCP_THIN_LINEAR_TIMEOUTS: ::c_int = 16;
-pub const TCP_THIN_DUPACK: ::c_int = 17;
-pub const TCP_USER_TIMEOUT: ::c_int = 18;
-pub const TCP_REPAIR: ::c_int = 19;
-pub const TCP_REPAIR_QUEUE: ::c_int = 20;
-pub const TCP_QUEUE_SEQ: ::c_int = 21;
-pub const TCP_REPAIR_OPTIONS: ::c_int = 22;
-pub const TCP_FASTOPEN: ::c_int = 23;
-pub const TCP_TIMESTAMP: ::c_int = 24;
-
+pub const SIGTTIN: ::c_int = 21;
+pub const SIGTTOU: ::c_int = 22;
+pub const SIGXCPU: ::c_int = 24;
+pub const SIGXFSZ: ::c_int = 25;
+pub const SIGVTALRM: ::c_int = 26;
+pub const SIGPROF: ::c_int = 27;
+pub const SIGWINCH: ::c_int = 28;
pub const SIGCHLD: ::c_int = 17;
pub const SIGUSR1: ::c_int = 10;
pub const SIGUSR2: ::c_int = 12;
@@ -648,130 +503,14 @@ pub const SIGSTKFLT: ::c_int = 16;
note = "Use SIGSYS instead"
)]
pub const SIGUNUSED: ::c_int = 31;
-pub const SIGTTIN: ::c_int = 21;
-pub const SIGTTOU: ::c_int = 22;
-pub const SIGXCPU: ::c_int = 24;
-pub const SIGXFSZ: ::c_int = 25;
-pub const SIGVTALRM: ::c_int = 26;
-pub const SIGPROF: ::c_int = 27;
-pub const SIGWINCH: ::c_int = 28;
pub const SIGPOLL: ::c_int = 29;
pub const SIGPWR: ::c_int = 30;
pub const SIG_BLOCK: ::c_int = 0x000000;
pub const SIG_UNBLOCK: ::c_int = 0x01;
-pub const BUFSIZ: ::c_uint = 8192;
-pub const TMP_MAX: ::c_uint = 238328;
-pub const FOPEN_MAX: ::c_uint = 16;
-pub const POSIX_MADV_DONTNEED: ::c_int = 4;
-pub const _SC_EQUIV_CLASS_MAX: ::c_int = 41;
-pub const _SC_CHARCLASS_NAME_MAX: ::c_int = 45;
-pub const _SC_PII: ::c_int = 53;
-pub const _SC_PII_XTI: ::c_int = 54;
-pub const _SC_PII_SOCKET: ::c_int = 55;
-pub const _SC_PII_INTERNET: ::c_int = 56;
-pub const _SC_PII_OSI: ::c_int = 57;
-pub const _SC_POLL: ::c_int = 58;
-pub const _SC_SELECT: ::c_int = 59;
-pub const _SC_PII_INTERNET_STREAM: ::c_int = 61;
-pub const _SC_PII_INTERNET_DGRAM: ::c_int = 62;
-pub const _SC_PII_OSI_COTS: ::c_int = 63;
-pub const _SC_PII_OSI_CLTS: ::c_int = 64;
-pub const _SC_PII_OSI_M: ::c_int = 65;
-pub const _SC_T_IOV_MAX: ::c_int = 66;
-pub const _SC_2_C_VERSION: ::c_int = 96;
-pub const _SC_CHAR_BIT: ::c_int = 101;
-pub const _SC_CHAR_MAX: ::c_int = 102;
-pub const _SC_CHAR_MIN: ::c_int = 103;
-pub const _SC_INT_MAX: ::c_int = 104;
-pub const _SC_INT_MIN: ::c_int = 105;
-pub const _SC_LONG_BIT: ::c_int = 106;
-pub const _SC_WORD_BIT: ::c_int = 107;
-pub const _SC_MB_LEN_MAX: ::c_int = 108;
-pub const _SC_SSIZE_MAX: ::c_int = 110;
-pub const _SC_SCHAR_MAX: ::c_int = 111;
-pub const _SC_SCHAR_MIN: ::c_int = 112;
-pub const _SC_SHRT_MAX: ::c_int = 113;
-pub const _SC_SHRT_MIN: ::c_int = 114;
-pub const _SC_UCHAR_MAX: ::c_int = 115;
-pub const _SC_UINT_MAX: ::c_int = 116;
-pub const _SC_ULONG_MAX: ::c_int = 117;
-pub const _SC_USHRT_MAX: ::c_int = 118;
-pub const _SC_NL_ARGMAX: ::c_int = 119;
-pub const _SC_NL_LANGMAX: ::c_int = 120;
-pub const _SC_NL_MSGMAX: ::c_int = 121;
-pub const _SC_NL_NMAX: ::c_int = 122;
-pub const _SC_NL_SETMAX: ::c_int = 123;
-pub const _SC_NL_TEXTMAX: ::c_int = 124;
-pub const _SC_BASE: ::c_int = 134;
-pub const _SC_C_LANG_SUPPORT: ::c_int = 135;
-pub const _SC_C_LANG_SUPPORT_R: ::c_int = 136;
-pub const _SC_DEVICE_IO: ::c_int = 140;
-pub const _SC_DEVICE_SPECIFIC: ::c_int = 141;
-pub const _SC_DEVICE_SPECIFIC_R: ::c_int = 142;
-pub const _SC_FD_MGMT: ::c_int = 143;
-pub const _SC_FIFO: ::c_int = 144;
-pub const _SC_PIPE: ::c_int = 145;
-pub const _SC_FILE_ATTRIBUTES: ::c_int = 146;
-pub const _SC_FILE_LOCKING: ::c_int = 147;
-pub const _SC_FILE_SYSTEM: ::c_int = 148;
-pub const _SC_MULTI_PROCESS: ::c_int = 150;
-pub const _SC_SINGLE_PROCESS: ::c_int = 151;
-pub const _SC_NETWORKING: ::c_int = 152;
-pub const _SC_REGEX_VERSION: ::c_int = 156;
-pub const _SC_SIGNALS: ::c_int = 158;
-pub const _SC_SYSTEM_DATABASE: ::c_int = 162;
-pub const _SC_SYSTEM_DATABASE_R: ::c_int = 163;
-pub const _SC_USER_GROUPS: ::c_int = 166;
-pub const _SC_USER_GROUPS_R: ::c_int = 167;
-pub const _SC_LEVEL1_ICACHE_SIZE: ::c_int = 185;
-pub const _SC_LEVEL1_ICACHE_ASSOC: ::c_int = 186;
-pub const _SC_LEVEL1_ICACHE_LINESIZE: ::c_int = 187;
-pub const _SC_LEVEL1_DCACHE_SIZE: ::c_int = 188;
-pub const _SC_LEVEL1_DCACHE_ASSOC: ::c_int = 189;
-pub const _SC_LEVEL1_DCACHE_LINESIZE: ::c_int = 190;
-pub const _SC_LEVEL2_CACHE_SIZE: ::c_int = 191;
-pub const _SC_LEVEL2_CACHE_ASSOC: ::c_int = 192;
-pub const _SC_LEVEL2_CACHE_LINESIZE: ::c_int = 193;
-pub const _SC_LEVEL3_CACHE_SIZE: ::c_int = 194;
-pub const _SC_LEVEL3_CACHE_ASSOC: ::c_int = 195;
-pub const _SC_LEVEL3_CACHE_LINESIZE: ::c_int = 196;
-pub const _SC_LEVEL4_CACHE_SIZE: ::c_int = 197;
-pub const _SC_LEVEL4_CACHE_ASSOC: ::c_int = 198;
-pub const _SC_LEVEL4_CACHE_LINESIZE: ::c_int = 199;
pub const O_ASYNC: ::c_int = 0x2000;
pub const O_NDELAY: ::c_int = 0x800;
-pub const ST_RELATIME: ::c_ulong = 4096;
-pub const NI_MAXHOST: ::socklen_t = 1025;
-
-pub const ADFS_SUPER_MAGIC: ::c_int = 0x0000adf5;
-pub const AFFS_SUPER_MAGIC: ::c_int = 0x0000adff;
-pub const CODA_SUPER_MAGIC: ::c_int = 0x73757245;
-pub const CRAMFS_MAGIC: ::c_int = 0x28cd3d45;
-pub const EFS_SUPER_MAGIC: ::c_int = 0x00414a53;
-pub const EXT2_SUPER_MAGIC: ::c_int = 0x0000ef53;
-pub const EXT3_SUPER_MAGIC: ::c_int = 0x0000ef53;
-pub const EXT4_SUPER_MAGIC: ::c_int = 0x0000ef53;
-pub const HPFS_SUPER_MAGIC: ::c_int = 0xf995e849;
-pub const HUGETLBFS_MAGIC: ::c_int = 0x958458f6;
-pub const ISOFS_SUPER_MAGIC: ::c_int = 0x00009660;
-pub const JFFS2_SUPER_MAGIC: ::c_int = 0x000072b6;
-pub const MINIX_SUPER_MAGIC: ::c_int = 0x0000137f;
-pub const MINIX_SUPER_MAGIC2: ::c_int = 0x0000138f;
-pub const MINIX2_SUPER_MAGIC: ::c_int = 0x00002468;
-pub const MINIX2_SUPER_MAGIC2: ::c_int = 0x00002478;
-pub const MSDOS_SUPER_MAGIC: ::c_int = 0x00004d44;
-pub const NCP_SUPER_MAGIC: ::c_int = 0x0000564c;
-pub const NFS_SUPER_MAGIC: ::c_int = 0x00006969;
-pub const OPENPROM_SUPER_MAGIC: ::c_int = 0x00009fa1;
-pub const PROC_SUPER_MAGIC: ::c_int = 0x00009fa0;
-pub const QNX4_SUPER_MAGIC: ::c_int = 0x0000002f;
-pub const REISERFS_SUPER_MAGIC: ::c_int = 0x52654973;
-pub const SMB_SUPER_MAGIC: ::c_int = 0x0000517b;
-pub const TMPFS_MAGIC: ::c_int = 0x01021994;
-pub const USBDEVICE_SUPER_MAGIC: ::c_int = 0x00009fa2;
-pub const VEOF: usize = 4;
pub const VEOL: usize = 11;
pub const VEOL2: usize = 16;
pub const VMIN: usize = 6;
@@ -779,41 +518,13 @@ pub const IEXTEN: ::tcflag_t = 0x00008000;
pub const TOSTOP: ::tcflag_t = 0x00000100;
pub const FLUSHO: ::tcflag_t = 0x00001000;
-pub const CPU_SETSIZE: ::c_int = 0x400;
-
pub const EXTPROC: ::tcflag_t = 0x00010000;
-pub const PTRACE_TRACEME: ::c_uint = 0;
-pub const PTRACE_PEEKTEXT: ::c_uint = 1;
-pub const PTRACE_PEEKDATA: ::c_uint = 2;
-pub const PTRACE_PEEKUSER: ::c_uint = 3;
-pub const PTRACE_POKETEXT: ::c_uint = 4;
-pub const PTRACE_POKEDATA: ::c_uint = 5;
-pub const PTRACE_POKEUSER: ::c_uint = 6;
-pub const PTRACE_CONT: ::c_uint = 7;
-pub const PTRACE_KILL: ::c_uint = 8;
-pub const PTRACE_SINGLESTEP: ::c_uint = 9;
-pub const PTRACE_ATTACH: ::c_uint = 16;
pub const PTRACE_DETACH: ::c_uint = 17;
-pub const PTRACE_SYSCALL: ::c_uint = 24;
-pub const PTRACE_SETOPTIONS: ::c_uint = 0x4200;
-pub const PTRACE_GETEVENTMSG: ::c_uint = 0x4201;
-pub const PTRACE_GETSIGINFO: ::c_uint = 0x4202;
-pub const PTRACE_SETSIGINFO: ::c_uint = 0x4203;
-pub const PTRACE_GETREGSET: ::c_uint = 0x4204;
-pub const PTRACE_SETREGSET: ::c_uint = 0x4205;
-pub const PTRACE_SEIZE: ::c_uint = 0x4206;
-pub const PTRACE_INTERRUPT: ::c_uint = 0x4207;
-pub const PTRACE_LISTEN: ::c_uint = 0x4208;
-pub const PTRACE_PEEKSIGINFO: ::c_uint = 0x4209;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
-pub const EPOLLWAKEUP: ::c_int = 0x20000000;
-
-pub const MAP_HUGETLB: ::c_int = 0x040000;
-
pub const EFD_NONBLOCK: ::c_int = 0x800;
pub const F_RDLCK: ::c_int = 0;
@@ -825,15 +536,8 @@ pub const F_SETOWN: ::c_int = 8;
pub const F_SETLK: ::c_int = 6;
pub const F_SETLKW: ::c_int = 7;
-pub const SEEK_DATA: ::c_int = 3;
-pub const SEEK_HOLE: ::c_int = 4;
-
pub const SFD_NONBLOCK: ::c_int = 0x0800;
-pub const TCSANOW: ::c_int = 0;
-pub const TCSADRAIN: ::c_int = 1;
-pub const TCSAFLUSH: ::c_int = 2;
-
pub const TCGETS: ::c_ulong = 0x5401;
pub const TCSETS: ::c_ulong = 0x5402;
pub const TCSETSW: ::c_ulong = 0x5403;
@@ -848,8 +552,6 @@ pub const TCFLSH: ::c_ulong = 0x540B;
pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
pub const TIOCINQ: ::c_ulong = 0x541B;
-pub const TIOCLINUX: ::c_ulong = 0x541C;
-pub const TIOCGSERIAL: ::c_ulong = 0x541E;
pub const TIOCEXCL: ::c_ulong = 0x540C;
pub const TIOCNXCL: ::c_ulong = 0x540D;
pub const TIOCSCTTY: ::c_ulong = 0x540E;
@@ -866,24 +568,18 @@ pub const TIOCMSET: ::c_ulong = 0x5418;
pub const FIONREAD: ::c_ulong = 0x541B;
pub const TIOCCONS: ::c_ulong = 0x541D;
-pub const RTLD_DEEPBIND: ::c_int = 0x8;
-pub const RTLD_GLOBAL: ::c_int = 0x100;
-pub const RTLD_NOLOAD: ::c_int = 0x4;
-
-pub const LINUX_REBOOT_MAGIC1: ::c_int = 0xfee1dead;
-pub const LINUX_REBOOT_MAGIC2: ::c_int = 672274793;
-pub const LINUX_REBOOT_MAGIC2A: ::c_int = 85072278;
-pub const LINUX_REBOOT_MAGIC2B: ::c_int = 369367448;
-pub const LINUX_REBOOT_MAGIC2C: ::c_int = 537993216;
+pub const TCSANOW: ::c_int = 0;
+pub const TCSADRAIN: ::c_int = 1;
+pub const TCSAFLUSH: ::c_int = 2;
-pub const LINUX_REBOOT_CMD_RESTART: ::c_int = 0x01234567;
-pub const LINUX_REBOOT_CMD_HALT: ::c_int = 0xCDEF0123;
-pub const LINUX_REBOOT_CMD_CAD_ON: ::c_int = 0x89ABCDEF;
-pub const LINUX_REBOOT_CMD_CAD_OFF: ::c_int = 0x00000000;
-pub const LINUX_REBOOT_CMD_POWER_OFF: ::c_int = 0x4321FEDC;
-pub const LINUX_REBOOT_CMD_RESTART2: ::c_int = 0xA1B2C3D4;
-pub const LINUX_REBOOT_CMD_SW_SUSPEND: ::c_int = 0xD000FCE2;
-pub const LINUX_REBOOT_CMD_KEXEC: ::c_int = 0x45584543;
+pub const TIOCLINUX: ::c_ulong = 0x541C;
+pub const TIOCGSERIAL: ::c_ulong = 0x541E;
+pub const TIOCM_ST: ::c_int = 0x008;
+pub const TIOCM_SR: ::c_int = 0x010;
+pub const TIOCM_CTS: ::c_int = 0x020;
+pub const TIOCM_CAR: ::c_int = 0x040;
+pub const TIOCM_RNG: ::c_int = 0x080;
+pub const TIOCM_DSR: ::c_int = 0x100;
pub const VTIME: usize = 5;
pub const VSWTC: usize = 7;
@@ -912,20 +608,6 @@ pub const VTDLY: ::tcflag_t = 0o040000;
pub const VT1: ::tcflag_t = 0x00004000;
pub const XTABS: ::tcflag_t = 0o014000;
-pub const TIOCM_LE: ::c_int = 0x001;
-pub const TIOCM_DTR: ::c_int = 0x002;
-pub const TIOCM_RTS: ::c_int = 0x004;
-pub const TIOCM_ST: ::c_int = 0x008;
-pub const TIOCM_SR: ::c_int = 0x010;
-pub const TIOCM_CTS: ::c_int = 0x020;
-pub const TIOCM_CAR: ::c_int = 0x040;
-pub const TIOCM_RNG: ::c_int = 0x080;
-pub const TIOCM_DSR: ::c_int = 0x100;
-pub const TIOCM_CD: ::c_int = TIOCM_CAR;
-pub const TIOCM_RI: ::c_int = TIOCM_RNG;
-
-pub const SIGEV_THREAD_ID: ::c_int = 4;
-
pub const CBAUD: ::speed_t = 0o010017;
pub const B0: ::speed_t = 0o000000;
pub const B50: ::speed_t = 0o000001;
@@ -992,17 +674,6 @@ pub const POLLWRBAND: ::c_short = 0x200;
pub const IXON: ::tcflag_t = 0o002000;
pub const IXOFF: ::tcflag_t = 0o010000;
-pub const RLIMIT_CPU: ::__rlimit_resource_t = 0;
-pub const RLIMIT_FSIZE: ::__rlimit_resource_t = 1;
-pub const RLIMIT_DATA: ::__rlimit_resource_t = 2;
-pub const RLIMIT_STACK: ::__rlimit_resource_t = 3;
-pub const RLIMIT_CORE: ::__rlimit_resource_t = 4;
-pub const RLIMIT_LOCKS: ::__rlimit_resource_t = 10;
-pub const RLIMIT_SIGPENDING: ::__rlimit_resource_t = 11;
-pub const RLIMIT_MSGQUEUE: ::__rlimit_resource_t = 12;
-pub const RLIMIT_NICE: ::__rlimit_resource_t = 13;
-pub const RLIMIT_RTPRIO: ::__rlimit_resource_t = 14;
-
pub const SYS_exit: ::c_long = 1;
pub const SYS_fork: ::c_long = 2;
pub const SYS_read: ::c_long = 3;
@@ -1328,26 +999,6 @@ pub const SYS_newfstatat: ::c_long = 293;
#[link(name = "util")]
extern {
- pub fn sendmmsg(sockfd: ::c_int, msgvec: *mut ::mmsghdr, vlen: ::c_uint,
- flags: ::c_int) -> ::c_int;
- pub fn recvmmsg(sockfd: ::c_int, msgvec: *mut ::mmsghdr, vlen: ::c_uint,
- flags: ::c_int, timeout: *mut ::timespec) -> ::c_int;
-
- pub fn getrlimit64(resource: ::__rlimit_resource_t,
- rlim: *mut ::rlimit64) -> ::c_int;
- pub fn setrlimit64(resource: ::__rlimit_resource_t,
- rlim: *const ::rlimit64) -> ::c_int;
- pub fn getrlimit(resource: ::__rlimit_resource_t,
- rlim: *mut ::rlimit) -> ::c_int;
- pub fn setrlimit(resource: ::__rlimit_resource_t,
- rlim: *const ::rlimit) -> ::c_int;
- pub fn prlimit(pid: ::pid_t,
- resource: ::__rlimit_resource_t, new_limit: *const ::rlimit,
- old_limit: *mut ::rlimit) -> ::c_int;
- pub fn prlimit64(pid: ::pid_t,
- resource: ::__rlimit_resource_t,
- new_limit: *const ::rlimit64,
- old_limit: *mut ::rlimit64) -> ::c_int;
pub fn sysctl(name: *mut ::c_int,
namelen: ::c_int,
@@ -1356,48 +1007,12 @@ extern {
newp: *mut ::c_void,
newlen: ::size_t)
-> ::c_int;
- pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;
- pub fn backtrace(buf: *mut *mut ::c_void,
- sz: ::c_int) -> ::c_int;
- pub fn glob64(pattern: *const ::c_char,
- flags: ::c_int,
- errfunc: ::Option<extern fn(epath: *const ::c_char,
- errno: ::c_int)
- -> ::c_int>,
- pglob: *mut glob64_t) -> ::c_int;
- pub fn globfree64(pglob: *mut glob64_t);
- pub fn ptrace(request: ::c_uint, ...) -> ::c_long;
- pub fn pthread_attr_getaffinity_np(attr: *const ::pthread_attr_t,
- cpusetsize: ::size_t,
- cpuset: *mut ::cpu_set_t) -> ::c_int;
- pub fn pthread_attr_setaffinity_np(attr: *mut ::pthread_attr_t,
- cpusetsize: ::size_t,
- cpuset: *const ::cpu_set_t) -> ::c_int;
- pub fn getpriority(which: ::__priority_which_t, who: ::id_t) -> ::c_int;
- pub fn setpriority(which: ::__priority_which_t, who: ::id_t,
- prio: ::c_int) -> ::c_int;
- pub fn pthread_getaffinity_np(thread: ::pthread_t,
- cpusetsize: ::size_t,
- cpuset: *mut ::cpu_set_t) -> ::c_int;
- pub fn pthread_setaffinity_np(thread: ::pthread_t,
- cpusetsize: ::size_t,
- cpuset: *const ::cpu_set_t) -> ::c_int;
- pub fn sched_getcpu() -> ::c_int;
- pub fn getcontext(ucp: *mut ucontext_t) -> ::c_int;
- pub fn setcontext(ucp: *const ucontext_t) -> ::c_int;
- pub fn makecontext(ucp: *mut ucontext_t,
+ pub fn getcontext(ucp: *mut ::ucontext_t) -> ::c_int;
+ pub fn setcontext(ucp: *const ::ucontext_t) -> ::c_int;
+ pub fn makecontext(ucp: *mut ::ucontext_t,
func: extern fn (),
argc: ::c_int, ...);
- pub fn swapcontext(uocp: *mut ucontext_t,
- ucp: *const ucontext_t) -> ::c_int;
+ pub fn swapcontext(uocp: *mut ::ucontext_t,
+ ucp: *const ::ucontext_t) -> ::c_int;
}
-cfg_if! {
- if #[cfg(libc_align)] {
- mod align;
- pub use self::align::*;
- } else {
- mod no_align;
- pub use self::no_align::*;
- }
-}
diff --git a/libc/src/unix/notbsd/linux/other/b64/sparc64.rs b/libc/src/unix/linux_like/linux/gnu/b64/sparc64.rs
index f54504a..d3f854e 100644
--- a/libc/src/unix/notbsd/linux/other/b64/sparc64.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b64/sparc64.rs
@@ -12,6 +12,60 @@ pub type suseconds_t = i32;
pub type __u64 = ::c_ulonglong;
s! {
+ pub struct sigaction {
+ pub sa_sigaction: ::sighandler_t,
+ pub sa_mask: ::sigset_t,
+ #[cfg(target_arch = "sparc64")]
+ __reserved0: ::c_int,
+ pub sa_flags: ::c_int,
+ pub sa_restorer: ::Option<extern fn()>,
+ }
+
+ pub struct statfs {
+ pub f_type: ::__fsword_t,
+ pub f_bsize: ::__fsword_t,
+ pub f_blocks: ::fsblkcnt_t,
+ pub f_bfree: ::fsblkcnt_t,
+ pub f_bavail: ::fsblkcnt_t,
+
+ pub f_files: ::fsfilcnt_t,
+ pub f_ffree: ::fsfilcnt_t,
+ pub f_fsid: ::fsid_t,
+
+ pub f_namelen: ::__fsword_t,
+ pub f_frsize: ::__fsword_t,
+ f_spare: [::__fsword_t; 5],
+ }
+
+ pub struct siginfo_t {
+ pub si_signo: ::c_int,
+ pub si_errno: ::c_int,
+ pub si_code: ::c_int,
+ #[doc(hidden)]
+ #[deprecated(
+ since="0.2.54",
+ note="Please leave a comment on \
+ https://github.com/rust-lang/libc/pull/1316 if you're using \
+ this field"
+ )]
+ pub _pad: [::c_int; 29],
+ _align: [usize; 0],
+ }
+
+ pub struct flock {
+ pub l_type: ::c_short,
+ pub l_whence: ::c_short,
+ pub l_start: ::off_t,
+ pub l_len: ::off_t,
+ pub l_pid: ::pid_t,
+ }
+
+ pub struct stack_t {
+ pub ss_sp: *mut ::c_void,
+ pub ss_flags: ::c_int,
+ pub ss_size: ::size_t
+ }
+
pub struct stat {
pub st_dev: ::dev_t,
__pad0: u64,
@@ -143,13 +197,23 @@ s! {
}
}
+pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+pub const POSIX_FADV_NOREUSE: ::c_int = 5;
+
+pub const VEOF: usize = 4;
+pub const RTLD_DEEPBIND: ::c_int = 0x8;
+pub const RTLD_GLOBAL: ::c_int = 0x100;
+pub const RTLD_NOLOAD: ::c_int = 0x4;
pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
pub const TIOCGSOFTCAR: ::c_ulong = 0x40047464;
pub const TIOCSSOFTCAR: ::c_ulong = 0x80047465;
-pub const RLIMIT_NOFILE: ::c_int = 6;
-pub const RLIMIT_NPROC: ::c_int = 7;
+pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
+pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
+pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
+pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 6;
+pub const RLIMIT_NPROC: ::__rlimit_resource_t = 7;
pub const O_APPEND: ::c_int = 0x8;
pub const O_CREAT: ::c_int = 0x200;
@@ -164,7 +228,16 @@ pub const O_NOATIME: ::c_int = 0x200000;
pub const O_PATH: ::c_int = 0x1000000;
pub const O_TMPFILE: ::c_int = 0x2000000 | O_DIRECTORY;
+pub const MADV_SOFT_OFFLINE: ::c_int = 101;
pub const MAP_GROWSDOWN: ::c_int = 0x0200;
+pub const MAP_ANON: ::c_int = 0x0020;
+pub const MAP_ANONYMOUS: ::c_int = 0x0020;
+pub const MAP_DENYWRITE: ::c_int = 0x0800;
+pub const MAP_EXECUTABLE: ::c_int = 0x01000;
+pub const MAP_POPULATE: ::c_int = 0x08000;
+pub const MAP_NONBLOCK: ::c_int = 0x010000;
+pub const MAP_STACK: ::c_int = 0x020000;
+pub const MAP_HUGETLB: ::c_int = 0x040000;
pub const EDEADLK: ::c_int = 78;
pub const ENAMETOOLONG: ::c_int = 63;
@@ -270,10 +343,20 @@ pub const SO_LINGER: ::c_int = 128;
pub const SO_REUSEPORT: ::c_int = 0x200;
pub const SO_ACCEPTCONN: ::c_int = 0x8000;
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SOCK_DGRAM: ::c_int = 2;
+
pub const SA_ONSTACK: ::c_int = 1;
pub const SA_SIGINFO: ::c_int = 0x200;
pub const SA_NOCLDWAIT: ::c_int = 0x100;
+pub const SIGTTIN: ::c_int = 21;
+pub const SIGTTOU: ::c_int = 22;
+pub const SIGXCPU: ::c_int = 24;
+pub const SIGXFSZ: ::c_int = 25;
+pub const SIGVTALRM: ::c_int = 26;
+pub const SIGPROF: ::c_int = 27;
+pub const SIGWINCH: ::c_int = 28;
pub const SIGCHLD: ::c_int = 20;
pub const SIGBUS: ::c_int = 10;
pub const SIGUSR1: ::c_int = 30;
@@ -312,6 +395,12 @@ pub const F_UNLCK: ::c_int = 3;
pub const SFD_NONBLOCK: ::c_int = 0x4000;
+pub const TCSANOW: ::c_int = 0;
+pub const TCSADRAIN: ::c_int = 1;
+pub const TCSAFLUSH: ::c_int = 2;
+
+pub const TIOCLINUX: ::c_ulong = 0x541C;
+pub const TIOCGSERIAL: ::c_ulong = 0x541E;
pub const TIOCEXCL: ::c_ulong = 0x2000740d;
pub const TIOCNXCL: ::c_ulong = 0x2000740e;
pub const TIOCSCTTY: ::c_ulong = 0x20007484;
@@ -322,6 +411,13 @@ pub const TIOCMBIC: ::c_ulong = 0x8004746b;
pub const TIOCMSET: ::c_ulong = 0x8004746d;
pub const TIOCCONS: ::c_ulong = 0x20007424;
+pub const TIOCM_ST: ::c_int = 0x008;
+pub const TIOCM_SR: ::c_int = 0x010;
+pub const TIOCM_CTS: ::c_int = 0x020;
+pub const TIOCM_CAR: ::c_int = 0x040;
+pub const TIOCM_RNG: ::c_int = 0x080;
+pub const TIOCM_DSR: ::c_int = 0x100;
+
pub const SFD_CLOEXEC: ::c_int = 0x400000;
pub const NCCS: usize = 17;
@@ -388,6 +484,11 @@ pub const MAP_LOCKED: ::c_int = 0x0100;
pub const MAP_NORESERVE: ::c_int = 0x00040;
pub const EDEADLOCK: ::c_int = 108;
+pub const EUCLEAN: ::c_int = 117;
+pub const ENOTNAM: ::c_int = 118;
+pub const ENAVAIL: ::c_int = 119;
+pub const EISNAM: ::c_int = 120;
+pub const EREMOTEIO: ::c_int = 121;
pub const SO_PEERCRED: ::c_int = 0x40;
pub const SO_RCVLOWAT: ::c_int = 0x800;
@@ -396,6 +497,7 @@ pub const SO_RCVTIMEO: ::c_int = 0x2000;
pub const SO_SNDTIMEO: ::c_int = 0x4000;
pub const FIOCLEX: ::c_ulong = 0x20006601;
+pub const FIONCLEX: ::c_ulong = 0x20006602;
pub const FIONBIO: ::c_ulong = 0x8004667e;
pub const MCL_CURRENT: ::c_int = 0x2000;
diff --git a/libc/src/unix/notbsd/linux/other/b64/x86_64.rs b/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs
index fb39bf3..f3b1008 100644
--- a/libc/src/unix/notbsd/linux/other/b64/x86_64.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs
@@ -9,6 +9,60 @@ pub type suseconds_t = i64;
pub type __u64 = ::c_ulonglong;
s! {
+ pub struct sigaction {
+ pub sa_sigaction: ::sighandler_t,
+ pub sa_mask: ::sigset_t,
+ #[cfg(target_arch = "sparc64")]
+ __reserved0: ::c_int,
+ pub sa_flags: ::c_int,
+ pub sa_restorer: ::Option<extern fn()>,
+ }
+
+ pub struct statfs {
+ pub f_type: ::__fsword_t,
+ pub f_bsize: ::__fsword_t,
+ pub f_blocks: ::fsblkcnt_t,
+ pub f_bfree: ::fsblkcnt_t,
+ pub f_bavail: ::fsblkcnt_t,
+
+ pub f_files: ::fsfilcnt_t,
+ pub f_ffree: ::fsfilcnt_t,
+ pub f_fsid: ::fsid_t,
+
+ pub f_namelen: ::__fsword_t,
+ pub f_frsize: ::__fsword_t,
+ f_spare: [::__fsword_t; 5],
+ }
+
+ pub struct flock {
+ pub l_type: ::c_short,
+ pub l_whence: ::c_short,
+ pub l_start: ::off_t,
+ pub l_len: ::off_t,
+ pub l_pid: ::pid_t,
+ }
+
+ pub struct siginfo_t {
+ pub si_signo: ::c_int,
+ pub si_errno: ::c_int,
+ pub si_code: ::c_int,
+ #[doc(hidden)]
+ #[deprecated(
+ since="0.2.54",
+ note="Please leave a comment on \
+ https://github.com/rust-lang/libc/pull/1316 if you're using \
+ this field"
+ )]
+ pub _pad: [::c_int; 29],
+ _align: [u64; 0],
+ }
+
+ pub struct stack_t {
+ pub ss_sp: *mut ::c_void,
+ pub ss_flags: ::c_int,
+ pub ss_size: ::size_t
+ }
+
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
@@ -231,7 +285,11 @@ s_no_extra_traits! {
pub uc_mcontext: mcontext_t,
pub uc_sigmask: ::sigset_t,
__private: [u8; 512],
- __ssp: [::c_ulonglong; 4],
+ // FIXME: the shadow stack field requires glibc >= 2.28.
+ // Re-add once we drop compatibility with glibc versions older than
+ // 2.28.
+ //
+ // __ssp: [::c_ulonglong; 4],
}
}
@@ -330,13 +388,23 @@ cfg_if! {
}
}
+pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+pub const POSIX_FADV_NOREUSE: ::c_int = 5;
+
+pub const VEOF: usize = 4;
+pub const RTLD_DEEPBIND: ::c_int = 0x8;
+pub const RTLD_GLOBAL: ::c_int = 0x100;
+pub const RTLD_NOLOAD: ::c_int = 0x4;
pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
pub const TIOCGRS485: ::c_int = 0x542E;
pub const TIOCSRS485: ::c_int = 0x542F;
-pub const RLIMIT_NOFILE: ::c_int = 7;
-pub const RLIMIT_NPROC: ::c_int = 6;
+pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
+pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
+pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
+pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
+pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
pub const O_APPEND: ::c_int = 1024;
pub const O_CREAT: ::c_int = 64;
@@ -351,6 +419,7 @@ pub const O_NOATIME: ::c_int = 0o1000000;
pub const O_PATH: ::c_int = 0o10000000;
pub const O_TMPFILE: ::c_int = 0o20000000 | O_DIRECTORY;
+pub const MADV_SOFT_OFFLINE: ::c_int = 101;
pub const MAP_GROWSDOWN: ::c_int = 0x0100;
pub const EDEADLK: ::c_int = 35;
@@ -487,10 +556,20 @@ pub const SO_INCOMING_CPU: ::c_int = 49;
pub const SO_ATTACH_BPF: ::c_int = 50;
pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER;
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SOCK_DGRAM: ::c_int = 2;
+
pub const SA_ONSTACK: ::c_int = 0x08000000;
pub const SA_SIGINFO: ::c_int = 0x00000004;
pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
+pub const SIGTTIN: ::c_int = 21;
+pub const SIGTTOU: ::c_int = 22;
+pub const SIGXCPU: ::c_int = 24;
+pub const SIGXFSZ: ::c_int = 25;
+pub const SIGVTALRM: ::c_int = 26;
+pub const SIGPROF: ::c_int = 27;
+pub const SIGWINCH: ::c_int = 28;
pub const SIGCHLD: ::c_int = 17;
pub const SIGBUS: ::c_int = 7;
pub const SIGUSR1: ::c_int = 10;
@@ -535,6 +614,12 @@ pub const F_UNLCK: ::c_int = 2;
pub const SFD_NONBLOCK: ::c_int = 0x0800;
+pub const TCSANOW: ::c_int = 0;
+pub const TCSADRAIN: ::c_int = 1;
+pub const TCSAFLUSH: ::c_int = 2;
+
+pub const TIOCLINUX: ::c_ulong = 0x541C;
+pub const TIOCGSERIAL: ::c_ulong = 0x541E;
pub const TIOCEXCL: ::c_ulong = 0x540C;
pub const TIOCNXCL: ::c_ulong = 0x540D;
pub const TIOCSCTTY: ::c_ulong = 0x540E;
@@ -545,6 +630,13 @@ pub const TIOCMBIC: ::c_ulong = 0x5417;
pub const TIOCMSET: ::c_ulong = 0x5418;
pub const TIOCCONS: ::c_ulong = 0x541D;
+pub const TIOCM_ST: ::c_int = 0x008;
+pub const TIOCM_SR: ::c_int = 0x010;
+pub const TIOCM_CTS: ::c_int = 0x020;
+pub const TIOCM_CAR: ::c_int = 0x040;
+pub const TIOCM_RNG: ::c_int = 0x080;
+pub const TIOCM_DSR: ::c_int = 0x100;
+
pub const SFD_CLOEXEC: ::c_int = 0x080000;
pub const NCCS: usize = 32;
@@ -584,13 +676,27 @@ pub const O_DIRECT: ::c_int = 0x4000;
pub const O_DIRECTORY: ::c_int = 0x10000;
pub const O_NOFOLLOW: ::c_int = 0x20000;
+pub const MAP_HUGETLB: ::c_int = 0x040000;
pub const MAP_LOCKED: ::c_int = 0x02000;
pub const MAP_NORESERVE: ::c_int = 0x04000;
pub const MAP_32BIT: ::c_int = 0x0040;
+pub const MAP_ANON: ::c_int = 0x0020;
+pub const MAP_ANONYMOUS: ::c_int = 0x0020;
+pub const MAP_DENYWRITE: ::c_int = 0x0800;
+pub const MAP_EXECUTABLE: ::c_int = 0x01000;
+pub const MAP_POPULATE: ::c_int = 0x08000;
+pub const MAP_NONBLOCK: ::c_int = 0x010000;
+pub const MAP_STACK: ::c_int = 0x020000;
pub const EDEADLOCK: ::c_int = 35;
+pub const EUCLEAN: ::c_int = 117;
+pub const ENOTNAM: ::c_int = 118;
+pub const ENAVAIL: ::c_int = 119;
+pub const EISNAM: ::c_int = 120;
+pub const EREMOTEIO: ::c_int = 121;
pub const FIOCLEX: ::c_ulong = 0x5451;
+pub const FIONCLEX: ::c_ulong = 0x5450;
pub const FIONBIO: ::c_ulong = 0x5421;
pub const PTRACE_GETFPREGS: ::c_uint = 14;
@@ -785,3 +891,13 @@ extern {
pub fn ioperm(from: ::c_ulong, num: ::c_ulong,
turn_on: ::c_int) -> ::c_int;
}
+
+cfg_if! {
+ if #[cfg(target_pointer_width = "32")] {
+ mod x32;
+ pub use self::x32::*;
+ } else {
+ mod not_x32;
+ pub use self::not_x32::*;
+ }
+}
diff --git a/libc/src/unix/notbsd/linux/other/b64/not_x32.rs b/libc/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs
index 97e21f2..97e21f2 100644
--- a/libc/src/unix/notbsd/linux/other/b64/not_x32.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs
diff --git a/libc/src/unix/notbsd/linux/other/b64/x32.rs b/libc/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs
index 3746881..3746881 100644
--- a/libc/src/unix/notbsd/linux/other/b64/x32.rs
+++ b/libc/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs
diff --git a/libc/src/unix/notbsd/linux/other/mod.rs b/libc/src/unix/linux_like/linux/gnu/mod.rs
index 7ce58ad..735eaf2 100644
--- a/libc/src/unix/notbsd/linux/other/mod.rs
+++ b/libc/src/unix/linux_like/linux/gnu/mod.rs
@@ -61,39 +61,6 @@ s! {
pub tv_usec: i32,
}
- pub struct sigaction {
- pub sa_sigaction: ::sighandler_t,
- pub sa_mask: ::sigset_t,
- #[cfg(target_arch = "sparc64")]
- __reserved0: ::c_int,
- pub sa_flags: ::c_int,
- pub sa_restorer: ::Option<extern fn()>,
- }
-
- pub struct stack_t {
- pub ss_sp: *mut ::c_void,
- pub ss_flags: ::c_int,
- pub ss_size: ::size_t
- }
-
- pub struct siginfo_t {
- pub si_signo: ::c_int,
- pub si_errno: ::c_int,
- pub si_code: ::c_int,
- #[doc(hidden)]
- #[deprecated(
- since="0.2.54",
- note="Please leave a comment on \
- https://github.com/rust-lang/libc/pull/1316 if you're using \
- this field"
- )]
- pub _pad: [::c_int; 29],
- #[cfg(target_arch = "x86_64")]
- _align: [u64; 0],
- #[cfg(not(target_arch = "x86_64"))]
- _align: [usize; 0],
- }
-
pub struct glob64_t {
pub gl_pathc: ::size_t,
pub gl_pathv: *mut *mut ::c_char,
@@ -107,22 +74,6 @@ s! {
__unused5: *mut ::c_void,
}
- pub struct statfs {
- pub f_type: __fsword_t,
- pub f_bsize: __fsword_t,
- pub f_blocks: ::fsblkcnt_t,
- pub f_bfree: ::fsblkcnt_t,
- pub f_bavail: ::fsblkcnt_t,
-
- pub f_files: ::fsfilcnt_t,
- pub f_ffree: ::fsfilcnt_t,
- pub f_fsid: ::fsid_t,
-
- pub f_namelen: __fsword_t,
- pub f_frsize: __fsword_t,
- f_spare: [__fsword_t; 5],
- }
-
pub struct msghdr {
pub msg_name: *mut ::c_void,
pub msg_namelen: ::socklen_t,
@@ -146,20 +97,18 @@ s! {
pub c_lflag: ::tcflag_t,
pub c_line: ::cc_t,
pub c_cc: [::cc_t; ::NCCS],
- #[cfg(not(target_arch = "sparc64"))]
+ #[cfg(not(any(
+ target_arch = "sparc64",
+ target_arch = "mips",
+ target_arch = "mips64")))]
pub c_ispeed: ::speed_t,
- #[cfg(not(target_arch = "sparc64"))]
+ #[cfg(not(any(
+ target_arch = "sparc64",
+ target_arch = "mips",
+ target_arch = "mips64")))]
pub c_ospeed: ::speed_t,
}
- pub struct flock {
- pub l_type: ::c_short,
- pub l_whence: ::c_short,
- pub l_start: ::off_t,
- pub l_len: ::off_t,
- pub l_pid: ::pid_t,
- }
-
pub struct mallinfo {
pub arena: ::c_int,
pub ordblks: ::c_int,
@@ -244,6 +193,19 @@ impl siginfo_t {
}
(*(self as *const siginfo_t as *const siginfo_sigfault)).si_addr
}
+
+ pub unsafe fn si_value(&self) -> ::sigval {
+ #[repr(C)]
+ struct siginfo_timer {
+ _si_signo: ::c_int,
+ _si_errno: ::c_int,
+ _si_code: ::c_int,
+ _si_tid: ::c_int,
+ _si_overrun: ::c_int,
+ si_sigval: ::sigval,
+ }
+ (*(self as *const siginfo_t as *const siginfo_timer)).si_sigval
+ }
}
s_no_extra_traits! {
@@ -258,19 +220,23 @@ s_no_extra_traits! {
pub ut_exit: __exit_status,
#[cfg(any(target_arch = "aarch64",
+ target_arch = "s390x",
all(target_pointer_width = "32",
not(target_arch = "x86_64"))))]
pub ut_session: ::c_long,
#[cfg(any(target_arch = "aarch64",
+ target_arch = "s390x",
all(target_pointer_width = "32",
not(target_arch = "x86_64"))))]
pub ut_tv: ::timeval,
#[cfg(not(any(target_arch = "aarch64",
+ target_arch = "s390x",
all(target_pointer_width = "32",
not(target_arch = "x86_64")))))]
pub ut_session: i32,
#[cfg(not(any(target_arch = "aarch64",
+ target_arch = "s390x",
all(target_pointer_width = "32",
not(target_arch = "x86_64")))))]
pub ut_tv: __timeval,
@@ -350,8 +316,9 @@ pub const RLIMIT_SIGPENDING: ::__rlimit_resource_t = 11;
pub const RLIMIT_MSGQUEUE: ::__rlimit_resource_t = 12;
pub const RLIMIT_NICE: ::__rlimit_resource_t = 13;
pub const RLIMIT_RTPRIO: ::__rlimit_resource_t = 14;
+pub const RLIMIT_RTTIME: ::__rlimit_resource_t = 15;
+pub const RLIMIT_NLIMITS: ::__rlimit_resource_t = 16;
-pub const MADV_SOFT_OFFLINE: ::c_int = 101;
pub const MS_RMT_MASK: ::c_ulong = 0x02800051;
pub const __UT_LINESIZE: usize = 32;
@@ -368,13 +335,6 @@ pub const USER_PROCESS: ::c_short = 7;
pub const DEAD_PROCESS: ::c_short = 8;
pub const ACCOUNTING: ::c_short = 9;
-pub const RLIMIT_RSS: ::c_int = 5;
-pub const RLIMIT_AS: ::c_int = 9;
-pub const RLIMIT_MEMLOCK: ::c_int = 8;
-pub const RLIM_INFINITY: ::rlim_t = !0;
-pub const RLIMIT_RTTIME: ::c_int = 15;
-pub const RLIMIT_NLIMITS: ::c_int = 16;
-
pub const SOCK_NONBLOCK: ::c_int = O_NONBLOCK;
pub const SOL_RXRPC: ::c_int = 272;
@@ -413,25 +373,11 @@ pub const LC_ALL_MASK: ::c_int = ::LC_CTYPE_MASK
| LC_MEASUREMENT_MASK
| LC_IDENTIFICATION_MASK;
-pub const MAP_ANON: ::c_int = 0x0020;
-pub const MAP_ANONYMOUS: ::c_int = 0x0020;
-pub const MAP_DENYWRITE: ::c_int = 0x0800;
-pub const MAP_EXECUTABLE: ::c_int = 0x01000;
-pub const MAP_POPULATE: ::c_int = 0x08000;
-pub const MAP_NONBLOCK: ::c_int = 0x010000;
-pub const MAP_STACK: ::c_int = 0x020000;
pub const MAP_SHARED_VALIDATE: ::c_int = 0x3;
pub const MAP_FIXED_NOREPLACE: ::c_int = 0x100000;
pub const ENOTSUP: ::c_int = EOPNOTSUPP;
-pub const EUCLEAN: ::c_int = 117;
-pub const ENOTNAM: ::c_int = 118;
-pub const ENAVAIL: ::c_int = 119;
-pub const EISNAM: ::c_int = 120;
-pub const EREMOTEIO: ::c_int = 121;
-
-pub const SOCK_STREAM: ::c_int = 1;
-pub const SOCK_DGRAM: ::c_int = 2;
+
pub const SOCK_SEQPACKET: ::c_int = 5;
pub const SOCK_DCCP: ::c_int = 6;
pub const SOCK_PACKET: ::c_int = 10;
@@ -468,21 +414,11 @@ pub const DCCP_SOCKOPT_CCID_TX_INFO: ::c_int = 192;
/// maximum number of services provided on the same listening port
pub const DCCP_SERVICE_LIST_MAX_LEN: ::c_int = 32;
-pub const SIGTTIN: ::c_int = 21;
-pub const SIGTTOU: ::c_int = 22;
-pub const SIGXCPU: ::c_int = 24;
-pub const SIGXFSZ: ::c_int = 25;
-pub const SIGVTALRM: ::c_int = 26;
-pub const SIGPROF: ::c_int = 27;
-pub const SIGWINCH: ::c_int = 28;
-
pub const SIGEV_THREAD_ID: ::c_int = 4;
pub const BUFSIZ: ::c_uint = 8192;
pub const TMP_MAX: ::c_uint = 238328;
pub const FOPEN_MAX: ::c_uint = 16;
-pub const POSIX_FADV_DONTNEED: ::c_int = 4;
-pub const POSIX_FADV_NOREUSE: ::c_int = 5;
pub const POSIX_MADV_DONTNEED: ::c_int = 4;
pub const _SC_EQUIV_CLASS_MAX: ::c_int = 41;
pub const _SC_CHARCLASS_NAME_MAX: ::c_int = 45;
@@ -590,8 +526,6 @@ pub const SMB_SUPER_MAGIC: ::c_long = 0x0000517b;
pub const TMPFS_MAGIC: ::c_long = 0x01021994;
pub const USBDEVICE_SUPER_MAGIC: ::c_long = 0x00009fa2;
-pub const VEOF: usize = 4;
-
pub const CPU_SETSIZE: ::c_int = 0x400;
pub const PTRACE_TRACEME: ::c_uint = 0;
@@ -619,22 +553,9 @@ pub const PTRACE_PEEKSIGINFO: ::c_uint = 0x4209;
pub const EPOLLWAKEUP: ::c_int = 0x20000000;
-pub const MAP_HUGETLB: ::c_int = 0x040000;
-
pub const SEEK_DATA: ::c_int = 3;
pub const SEEK_HOLE: ::c_int = 4;
-pub const TCSANOW: ::c_int = 0;
-pub const TCSADRAIN: ::c_int = 1;
-pub const TCSAFLUSH: ::c_int = 2;
-
-pub const TIOCLINUX: ::c_ulong = 0x541C;
-pub const TIOCGSERIAL: ::c_ulong = 0x541E;
-
-pub const RTLD_DEEPBIND: ::c_int = 0x8;
-pub const RTLD_GLOBAL: ::c_int = 0x100;
-pub const RTLD_NOLOAD: ::c_int = 0x4;
-
pub const LINUX_REBOOT_MAGIC1: ::c_int = 0xfee1dead;
pub const LINUX_REBOOT_MAGIC2: ::c_int = 672274793;
pub const LINUX_REBOOT_MAGIC2A: ::c_int = 85072278;
@@ -656,6 +577,11 @@ pub const TCA_DUMP_INVISIBLE: ::c_ushort = 10;
pub const TCA_CHAIN: ::c_ushort = 11;
pub const TCA_HW_OFFLOAD: ::c_ushort = 12;
+pub const RTM_DELNETCONF: u16 = 81;
+pub const RTM_NEWSTATS: u16 = 92;
+pub const RTM_GETSTATS: u16 = 94;
+pub const RTM_NEWCACHEREPORT: u16 = 96;
+
pub const RTM_F_LOOKUP_TABLE: ::c_uint = 0x1000;
pub const RTM_F_FIB_MATCH: ::c_uint = 0x2000;
@@ -685,65 +611,8 @@ pub const IFA_F_NOPREFIXROUTE: u32 = 0x200;
pub const IFA_F_MCAUTOJOIN: u32 = 0x400;
pub const IFA_F_STABLE_PRIVACY: u32 = 0x800;
-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 MAX_LINKS: ::c_int = 32;
-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 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 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);
-
-pub const NLA_ALIGNTO: ::c_int = 4;
-
pub const GENL_UNS_ADMIN_PERM: ::c_int = 0x10;
pub const GENL_ID_VFS_DQUOT: ::c_int = ::NLMSG_MIN_TYPE + 1;
@@ -752,12 +621,6 @@ pub const GENL_ID_PMCRAID: ::c_int = ::NLMSG_MIN_TYPE + 2;
pub const TIOCM_LE: ::c_int = 0x001;
pub const TIOCM_DTR: ::c_int = 0x002;
pub const TIOCM_RTS: ::c_int = 0x004;
-pub const TIOCM_ST: ::c_int = 0x008;
-pub const TIOCM_SR: ::c_int = 0x010;
-pub const TIOCM_CTS: ::c_int = 0x020;
-pub const TIOCM_CAR: ::c_int = 0x040;
-pub const TIOCM_RNG: ::c_int = 0x080;
-pub const TIOCM_DSR: ::c_int = 0x100;
pub const TIOCM_CD: ::c_int = TIOCM_CAR;
pub const TIOCM_RI: ::c_int = TIOCM_RNG;
@@ -967,22 +830,6 @@ pub const M_PERTURB: ::c_int = -6;
pub const M_ARENA_TEST: ::c_int = -7;
pub const M_ARENA_MAX: ::c_int = -8;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 45;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const PF_MAX: ::c_int = AF_MAX;
-
pub const AT_STATX_SYNC_TYPE: ::c_int = 0x6000;
pub const AT_STATX_SYNC_AS_STAT: ::c_int = 0x0000;
pub const AT_STATX_FORCE_SYNC: ::c_int = 0x2000;
@@ -1010,8 +857,12 @@ pub const STATX_ATTR_ENCRYPTED: ::c_int = 0x0800;
pub const STATX_ATTR_AUTOMOUNT: ::c_int = 0x1000;
cfg_if! {
- if #[cfg(any(target_arch = "arm", target_arch = "x86",
- target_arch = "x86_64"))] {
+ if #[cfg(any(
+ target_arch = "arm",
+ target_arch = "x86",
+ target_arch = "x86_64",
+ target_arch = "s390x"
+ ))] {
pub const PTHREAD_STACK_MIN: ::size_t = 16384;
} else if #[cfg(target_arch = "sparc64")] {
pub const PTHREAD_STACK_MIN: ::size_t = 0x6000;
@@ -1021,12 +872,6 @@ cfg_if! {
}
pub const PTHREAD_MUTEX_ADAPTIVE_NP: ::c_int = 3;
-f! {
- pub fn NLA_ALIGN(len: ::c_int) -> ::c_int {
- return ((len) + NLA_ALIGNTO - 1) & !(NLA_ALIGNTO - 1)
- }
-}
-
extern {
pub fn sendmmsg(sockfd: ::c_int, msgvec: *mut ::mmsghdr, vlen: ::c_uint,
flags: ::c_int) -> ::c_int;
@@ -1061,6 +906,11 @@ extern {
tz: *mut ::timezone) -> ::c_int;
pub fn statx(dirfd: ::c_int, pathname: *const c_char, flags: ::c_int,
mask: ::c_uint, statxbuf: *mut statx) -> ::c_int;
+ pub fn getrandom(
+ buf: *mut ::c_void,
+ buflen: ::size_t,
+ flags: ::c_uint,
+ ) -> ::ssize_t;
}
#[link(name = "util")]
@@ -1101,28 +951,35 @@ extern {
pub fn getauxval(type_: ::c_ulong) -> ::c_ulong;
#[cfg_attr(target_os = "netbsd", link_name = "__getpwent_r50")]
#[cfg_attr(target_os = "solaris", link_name = "__posix_getpwent_r")]
- pub fn getpwent_r(pwd: *mut ::unix::notbsd::linux::passwd,
+ pub fn getpwent_r(pwd: *mut ::passwd,
buf: *mut ::c_char,
buflen: ::size_t,
- result: *mut *mut ::unix::notbsd
- ::linux::passwd) -> ::c_int;
+ result: *mut *mut ::passwd) -> ::c_int;
#[cfg_attr(target_os = "netbsd", link_name = "__getgrent_r50")]
#[cfg_attr(target_os = "solaris", link_name = "__posix_getgrent_r")]
pub fn getgrent_r(grp: *mut ::group,
buf: *mut ::c_char,
buflen: ::size_t,
result: *mut *mut ::group) -> ::c_int;
+ pub fn pthread_getname_np(thread: ::pthread_t,
+ name: *mut ::c_char,
+ len: ::size_t) -> ::c_int;
+ pub fn pthread_setname_np(thread: ::pthread_t,
+ name: *const ::c_char) -> ::c_int;
}
cfg_if! {
if #[cfg(any(target_arch = "x86",
target_arch = "arm",
+ target_arch = "mips",
target_arch = "powerpc"))] {
mod b32;
pub use self::b32::*;
} else if #[cfg(any(target_arch = "x86_64",
target_arch = "aarch64",
target_arch = "powerpc64",
+ target_arch = "mips64",
+ target_arch = "s390x",
target_arch = "sparc64"))] {
mod b64;
pub use self::b64::*;
diff --git a/libc/src/unix/notbsd/linux/mips/no_align.rs b/libc/src/unix/linux_like/linux/gnu/no_align.rs
index e32bf67..e32bf67 100644
--- a/libc/src/unix/notbsd/linux/mips/no_align.rs
+++ b/libc/src/unix/linux_like/linux/gnu/no_align.rs
diff --git a/libc/src/unix/notbsd/linux/mod.rs b/libc/src/unix/linux_like/linux/mod.rs
index 3b7bc29..0fc7c26 100644
--- a/libc/src/unix/notbsd/linux/mod.rs
+++ b/libc/src/unix/linux_like/linux/mod.rs
@@ -474,6 +474,14 @@ s! {
pub cookie: u32,
pub len: u32
}
+
+ pub struct sockaddr_vm {
+ pub svm_family: ::sa_family_t,
+ pub svm_reserved1: ::c_ushort,
+ pub svm_port: ::c_uint,
+ pub svm_cid: ::c_uint,
+ pub svm_zero: [u8; 4]
+ }
}
s_no_extra_traits!{
@@ -1889,6 +1897,64 @@ pub const NDA_PORT: ::c_ushort = 6;
pub const NDA_VNI: ::c_ushort = 7;
pub const NDA_IFINDEX: ::c_ushort = 8;
+// 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 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 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);
+
// linux/rtnetlink.h
pub const TCA_UNSPEC: ::c_ushort = 0;
pub const TCA_KIND: ::c_ushort = 1;
@@ -1900,6 +1966,55 @@ 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;
@@ -2000,6 +2115,13 @@ pub const ALG_SET_AEAD_AUTHSIZE: ::c_int = 5;
pub const ALG_OP_DECRYPT: ::c_int = 0;
pub const ALG_OP_ENCRYPT: ::c_int = 1;
+// uapi/linux/vm_sockets.h
+pub const VMADDR_CID_ANY: ::c_uint = 0xFFFFFFFF;
+pub const VMADDR_CID_HYPERVISOR: ::c_uint = 0;
+pub const VMADDR_CID_RESERVED: ::c_uint = 1;
+pub const VMADDR_CID_HOST: ::c_uint = 2;
+pub const VMADDR_PORT_ANY: ::c_uint = 0xFFFFFFFF;
+
// uapi/linux/inotify.h
pub const IN_ACCESS: u32 = 0x0000_0001;
pub const IN_MODIFY: u32 = 0x0000_0002;
@@ -2057,6 +2179,10 @@ pub const FUTEX_CMD_MASK: ::c_int =
!(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME);
f! {
+ pub fn NLA_ALIGN(len: ::c_int) -> ::c_int {
+ return ((len) + NLA_ALIGNTO - 1) & !(NLA_ALIGNTO - 1)
+ }
+
pub fn CMSG_NXTHDR(mhdr: *const msghdr,
cmsg: *const cmsghdr) -> *mut cmsghdr {
if ((*cmsg).cmsg_len as usize) < ::mem::size_of::<cmsghdr>() {
@@ -2294,10 +2420,20 @@ extern {
msg_ptr: *mut ::c_char,
msg_len: ::size_t,
msq_prio: *mut ::c_uint) -> ::ssize_t;
+ pub fn mq_timedreceive(mqd: ::mqd_t,
+ msg_ptr: *mut ::c_char,
+ msg_len: ::size_t,
+ msq_prio: *mut ::c_uint,
+ abs_timeout: *const ::timespec) -> ::ssize_t;
pub fn mq_send(mqd: ::mqd_t,
msg_ptr: *const ::c_char,
msg_len: ::size_t,
msq_prio: ::c_uint) -> ::c_int;
+ pub fn mq_timedsend(mqd: ::mqd_t,
+ msg_ptr: *const ::c_char,
+ msg_len: ::size_t,
+ msq_prio: ::c_uint,
+ abs_timeout: *const ::timespec) -> ::c_int;
pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int;
pub fn mq_setattr(mqd: ::mqd_t,
newattr: *const ::mq_attr,
@@ -2647,16 +2783,9 @@ cfg_if! {
if #[cfg(target_env = "musl")] {
mod musl;
pub use self::musl::*;
- } else if #[cfg(any(target_arch = "mips",
- target_arch = "mips64"))] {
- mod mips;
- pub use self::mips::*;
- } else if #[cfg(any(target_arch = "s390x"))] {
- mod s390x;
- pub use self::s390x::*;
- } else {
- mod other;
- pub use self::other::*;
+ } else if #[cfg(target_env = "gnu")] {
+ mod gnu;
+ pub use self::gnu::*;
}
}
diff --git a/libc/src/unix/notbsd/linux/musl/b32/arm.rs b/libc/src/unix/linux_like/linux/musl/b32/arm.rs
index 7162fdf..3d6e001 100644
--- a/libc/src/unix/notbsd/linux/musl/b32/arm.rs
+++ b/libc/src/unix/linux_like/linux/musl/b32/arm.rs
@@ -162,6 +162,7 @@ pub const O_ASYNC: ::c_int = 0x2000;
pub const O_LARGEFILE: ::c_int = 0o400000;
pub const FIOCLEX: ::c_int = 0x5451;
+pub const FIONCLEX: ::c_int = 0x5450;
pub const FIONBIO: ::c_int = 0x5421;
pub const RLIMIT_RSS: ::c_int = 5;
@@ -827,18 +828,10 @@ pub const SYS_pkey_mprotect: ::c_long = 394;
pub const SYS_pkey_alloc: ::c_long = 395;
pub const SYS_pkey_free: ::c_long = 396;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 45;
-#[doc(hidden)]
-#[allow(deprecated)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const PF_MAX: ::c_int = AF_MAX;
+extern {
+ pub fn getrandom(
+ buf: *mut ::c_void,
+ buflen: ::size_t,
+ flags: ::c_uint,
+ ) -> ::ssize_t;
+}
diff --git a/libc/src/unix/linux_like/linux/musl/b32/hexagon.rs b/libc/src/unix/linux_like/linux/musl/b32/hexagon.rs
new file mode 100644
index 0000000..c866692
--- /dev/null
+++ b/libc/src/unix/linux_like/linux/musl/b32/hexagon.rs
@@ -0,0 +1,795 @@
+pub type c_char = u8;
+pub type wchar_t = u32;
+pub type stat64 = ::stat;
+
+s! {
+
+ pub struct stat {
+ pub st_dev: ::dev_t,
+ pub st_ino: ::c_ulonglong,
+ pub st_mode: ::c_uint,
+ pub st_nlink: ::c_uint,
+ pub st_uid: ::c_uint,
+ pub st_gid: ::c_uint,
+ pub st_rdev: ::c_ulonglong,
+ __st_rdev_padding: ::c_ulong,
+ pub st_size: ::c_longlong,
+ pub st_blksize: ::blksize_t,
+ __st_blksize_padding: ::c_int,
+ pub st_blocks: ::blkcnt_t,
+ 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,
+
+ __unused: [::c_int;2],
+ }
+
+ pub struct stack_t {
+ pub ss_sp: *mut ::c_void,
+ pub ss_flags: ::c_int,
+ pub ss_size: ::size_t
+ }
+
+ pub struct ipc_perm {
+ pub __ipc_perm_key: ::key_t,
+ pub uid: ::uid_t,
+ pub gid: ::gid_t,
+ pub cuid: ::uid_t,
+ pub cgid: ::gid_t,
+ pub mode: ::mode_t,
+ pub __seq: ::c_ushort,
+ }
+
+ pub struct shmid_ds {
+ pub shm_perm: ::ipc_perm,
+ pub shm_segsz: ::size_t,
+ pub shm_atime: ::time_t,
+ __unused1: ::c_int,
+ pub shm_dtime: ::time_t,
+ __unused2: ::c_int,
+ pub shm_ctime: ::time_t,
+ __unused3: ::c_int,
+ pub shm_cpid: ::pid_t,
+ pub shm_lpid: ::pid_t,
+ pub shm_nattch: ::c_ulong,
+ __pad1: ::c_ulong,
+ __pad2: ::c_ulong,
+ }
+
+ pub struct msqid_ds {
+ pub msg_perm: ::ipc_perm,
+ pub msg_stime: ::time_t,
+ __unused1: ::c_int,
+ pub msg_rtime: ::time_t,
+ __unused2: ::c_int,
+ pub msg_ctime: ::time_t,
+ __unused3: ::c_int,
+ __msg_cbytes: ::c_ulong,
+ pub msg_qnum: ::msgqnum_t,
+ pub msg_qbytes: ::msglen_t,
+ pub msg_lspid: ::pid_t,
+ pub msg_lrpid: ::pid_t,
+ __pad1: ::c_ulong,
+ __pad2: ::c_ulong,
+ }
+
+ pub struct statfs {
+ pub f_type: ::c_ulong,
+ pub f_bsize: ::c_ulong,
+ pub f_blocks: ::fsblkcnt_t,
+ pub f_bfree: ::fsblkcnt_t,
+ pub f_bavail: ::fsblkcnt_t,
+ pub f_files: ::fsfilcnt_t,
+ pub f_ffree: ::fsfilcnt_t,
+ pub f_fsid: ::fsid_t,
+ pub f_namelen: ::c_ulong,
+ pub f_frsize: ::c_ulong,
+ pub f_flags: ::c_ulong,
+ pub f_spare: [::c_ulong; 4],
+ }
+
+ pub struct siginfo_t {
+ pub si_signo: ::c_int,
+ pub si_errno: ::c_int,
+ pub si_code: ::c_int,
+ pub _pad: [::c_int; 29],
+ _align: [usize; 0],
+ }
+
+ pub struct statfs64 {
+ pub f_type: ::c_ulong,
+ pub f_bsize: ::c_ulong,
+ pub f_blocks: ::fsblkcnt_t,
+ pub f_bfree: ::fsblkcnt_t,
+ pub f_bavail: ::fsblkcnt_t,
+ pub f_files: ::fsfilcnt_t,
+ pub f_ffree: ::fsfilcnt_t,
+ pub f_fsid: ::fsid_t,
+ pub f_namelen: ::c_ulong,
+ pub f_frsize: ::c_ulong,
+ pub f_flags: ::c_ulong,
+ pub f_spare: [::c_ulong; 4],
+ }
+
+ pub struct statvfs64 {
+ pub f_bsize: ::c_ulong,
+ pub f_frsize: ::c_ulong,
+ pub f_blocks: u64,
+ pub f_bfree: u64,
+ pub f_bavail: u64,
+ pub f_files: u64,
+ pub f_ffree: u64,
+ pub f_favail: u64,
+ pub f_fsid: ::c_ulong,
+ __f_unused: ::c_int,
+ pub f_flag: ::c_ulong,
+ pub f_namemax: ::c_ulong,
+ __f_spare: [::c_int; 6],
+ }
+
+ pub struct termios2 {
+ pub c_iflag: ::tcflag_t,
+ pub c_oflag: ::tcflag_t,
+ pub c_cflag: ::tcflag_t,
+ pub c_lflag: ::tcflag_t,
+ pub c_line: ::cc_t,
+ pub c_cc: [::cc_t; 19],
+ pub c_ispeed: ::speed_t,
+ pub c_ospeed: ::speed_t,
+ }
+}
+
+pub const AF_FILE: ::c_int = 1;
+pub const AF_KCM: ::c_int = 41;
+pub const AF_MAX: ::c_int = 43;
+pub const AF_QIPCRTR: ::c_int = 42;
+pub const EADDRINUSE: ::c_int = 98;
+pub const EADDRNOTAVAIL: ::c_int = 99;
+pub const EAFNOSUPPORT: ::c_int = 97;
+pub const EALREADY: ::c_int = 114;
+pub const EBADE: ::c_int = 52;
+pub const EBADMSG: ::c_int = 74;
+pub const EBADR: ::c_int = 53;
+pub const EBADRQC: ::c_int = 56;
+pub const EBADSLT: ::c_int = 57;
+pub const ECANCELED: ::c_int = 125;
+pub const ECHRNG: ::c_int = 44;
+pub const ECONNABORTED: ::c_int = 103;
+pub const ECONNREFUSED: ::c_int = 111;
+pub const ECONNRESET: ::c_int = 104;
+pub const EDEADLK: ::c_int = 35;
+pub const EDEADLOCK: ::c_int = 35;
+pub const EDESTADDRREQ: ::c_int = 89;
+pub const EDQUOT: ::c_int = 122;
+pub const EHOSTDOWN: ::c_int = 112;
+pub const EHOSTUNREACH: ::c_int = 113;
+pub const EHWPOISON: ::c_int = 133;
+pub const EIDRM: ::c_int = 43;
+pub const EILSEQ: ::c_int = 84;
+pub const EINPROGRESS: ::c_int = 115;
+pub const EISCONN: ::c_int = 106;
+pub const EISNAM: ::c_int = 120;
+pub const EKEYEXPIRED: ::c_int = 127;
+pub const EKEYREJECTED: ::c_int = 129;
+pub const EKEYREVOKED: ::c_int = 128;
+pub const EL2HLT: ::c_int = 51;
+pub const EL2NSYNC: ::c_int = 45;
+pub const EL3HLT: ::c_int = 46;
+pub const EL3RST: ::c_int = 47;
+pub const ELIBACC: ::c_int = 79;
+pub const ELIBBAD: ::c_int = 80;
+pub const ELIBEXEC: ::c_int = 83;
+pub const ELIBMAX: ::c_int = 82;
+pub const ELIBSCN: ::c_int = 81;
+pub const ELNRNG: ::c_int = 48;
+pub const ELOOP: ::c_int = 40;
+pub const EMEDIUMTYPE: ::c_int = 124;
+pub const EMSGSIZE: ::c_int = 90;
+pub const EMULTIHOP: ::c_int = 72;
+pub const ENAMETOOLONG: ::c_int = 36;
+pub const ENAVAIL: ::c_int = 119;
+pub const ENETDOWN: ::c_int = 100;
+pub const ENETRESET: ::c_int = 102;
+pub const ENETUNREACH: ::c_int = 101;
+pub const ENOANO: ::c_int = 55;
+pub const ENOBUFS: ::c_int = 105;
+pub const ENOCSI: ::c_int = 50;
+pub const ENOKEY: ::c_int = 126;
+pub const ENOLCK: ::c_int = 37;
+pub const ENOMEDIUM: ::c_int = 123;
+pub const ENOMSG: ::c_int = 42;
+pub const ENOPROTOOPT: ::c_int = 92;
+pub const ENOSYS: ::c_int = 38;
+pub const ENOTCONN: ::c_int = 107;
+pub const ENOTEMPTY: ::c_int = 39;
+pub const ENOTNAM: ::c_int = 118;
+pub const ENOTRECOVERABLE: ::c_int = 131;
+pub const ENOTSOCK: ::c_int = 88;
+pub const ENOTSUP: ::c_int = 95;
+pub const ENOTUNIQ: ::c_int = 76;
+pub const EOPNOTSUPP: ::c_int = 95;
+pub const EOVERFLOW: ::c_int = 75;
+pub const EOWNERDEAD: ::c_int = 130;
+pub const EPFNOSUPPORT: ::c_int = 96;
+pub const EREMCHG: ::c_int = 78;
+pub const ERESTART: ::c_int = 85;
+pub const ERFKILL: ::c_int = 132;
+pub const ESHUTDOWN: ::c_int = 108;
+pub const ESOCKTNOSUPPORT: ::c_int = 94;
+pub const ESTALE: ::c_int = 116;
+pub const ESTRPIPE: ::c_int = 86;
+pub const ETOOMANYREFS: ::c_int = 109;
+pub const EUCLEAN: ::c_int = 117;
+pub const EUNATCH: ::c_int = 49;
+pub const EUSERS: ::c_int = 87;
+pub const EXFULL: ::c_int = 54;
+pub const EXTPROC: ::c_int = 65536;
+pub const F_EXLCK: ::c_int = 4;
+pub const F_GETLK: ::c_int = 12;
+pub const F_GETOWN: ::c_int = 9;
+pub const F_GETOWNER_UIDS: ::c_int = 17;
+pub const F_GETOWN_EX: ::c_int = 16;
+pub const F_GETSIG: ::c_int = 11;
+pub const FIOASYNC: ::c_int = 21586;
+pub const FIOCLEX: ::c_int = 21585;
+pub const FIONBIO: ::c_int = 21537;
+pub const FIONCLEX: ::c_int = 21584;
+pub const FIONREAD: ::c_int = 21531;
+pub const FIOQSIZE: ::c_int = 21600;
+pub const F_LINUX_SPECIFIC_BASE: ::c_int = 1024;
+pub const FLUSHO: ::c_int = 4096;
+pub const F_OFD_GETLK: ::c_int = 36;
+pub const F_OFD_SETLK: ::c_int = 37;
+pub const F_OFD_SETLKW: ::c_int = 38;
+pub const F_OWNER_PGRP: ::c_int = 2;
+pub const F_OWNER_PID: ::c_int = 1;
+pub const F_OWNER_TID: ::c_int = 0;
+pub const F_SETLK: ::c_int = 13;
+pub const F_SETLKW: ::c_int = 14;
+pub const F_SETOWN: ::c_int = 8;
+pub const F_SETOWN_EX: ::c_int = 15;
+pub const F_SETSIG: ::c_int = 10;
+pub const F_SHLCK: ::c_int = 8;
+pub const IEXTEN: ::c_int = 32768;
+pub const MAP_ANON: ::c_int = 32;
+pub const MAP_DENYWRITE: ::c_int = 2048;
+pub const MAP_EXECUTABLE: ::c_int = 4096;
+pub const MAP_GROWSDOWN: ::c_int = 256;
+pub const MAP_HUGE_MASK: ::c_int = 63;
+pub const MAP_HUGE_SHIFT: ::c_int = 26;
+pub const MAP_HUGETLB: ::c_int = 262144;
+pub const MAP_LOCKED: ::c_int = 8192;
+pub const MAP_NONBLOCK: ::c_int = 65536;
+pub const MAP_NORESERVE: ::c_int = 16384;
+pub const MAP_POPULATE: ::c_int = 32768;
+pub const MAP_STACK: ::c_int = 131072;
+pub const MAP_UNINITIALIZED: ::c_int = 0;
+pub const O_APPEND: ::c_int = 1024;
+pub const O_ASYNC: ::c_int = 8192;
+pub const O_CREAT: ::c_int = 64;
+pub const O_DIRECT: ::c_int = 16384;
+pub const O_DIRECTORY: ::c_int = 65536;
+pub const O_DSYNC: ::c_int = 4096;
+pub const O_EXCL: ::c_int = 128;
+pub const O_LARGEFILE: ::c_int = 32768;
+pub const O_NOCTTY: ::c_int = 256;
+pub const O_NOFOLLOW: ::c_int = 131072;
+pub const O_NONBLOCK: ::c_int = 2048;
+pub const O_SYNC: ::c_int = 1052672;
+pub const PF_FILE: ::c_int = 1;
+pub const PF_KCM: ::c_int = 41;
+pub const PF_MAX: ::c_int = 43;
+pub const PF_QIPCRTR: ::c_int = 42;
+pub const RLIMIT_AS: ::c_int = 9;
+pub const RLIMIT_MEMLOCK: ::c_int = 8;
+pub const RLIMIT_NOFILE: ::c_int = 7;
+pub const RLIMIT_NPROC: ::c_int = 6;
+pub const RLIMIT_RSS: ::c_int = 5;
+pub const RLIM_NLIMITS: ::c_int = 16;
+pub const SA_ONSTACK: ::c_int = 0x08000000;
+pub const SA_SIGINFO: ::c_int = 0x00000004;
+pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
+pub const SIGBUS: ::c_int = 7;
+pub const SIGCHLD: ::c_int = 17;
+pub const SIGCONT: ::c_int = 18;
+pub const SIGIO: ::c_int = 29;
+pub const SIGPOLL: ::c_int = 29;
+pub const SIGPROF: ::c_int = 27;
+pub const SIGPWR: ::c_int = 30;
+pub const SIGSTKFLT: ::c_int = 16;
+pub const SIGSTOP: ::c_int = 19;
+pub const SIGSYS: ::c_int = 31;
+pub const SIGTSTP: ::c_int = 20;
+pub const SIGTTIN: ::c_int = 21;
+pub const SIGTTOU: ::c_int = 22;
+pub const SIGURG: ::c_int = 23;
+pub const SIGUSR1: ::c_int = 10;
+pub const SIGUSR2: ::c_int = 12;
+pub const SIGVTALRM: ::c_int = 26;
+pub const SIGWINCH: ::c_int = 28;
+pub const SIGXCPU: ::c_int = 24;
+pub const SIGXFSZ: ::c_int = 25;
+pub const SIG_SETMASK: ::c_int = 2; // FIXME check these
+pub const SIG_BLOCK: ::c_int = 0x000000;
+pub const SIG_UNBLOCK: ::c_int = 0x01;
+pub const SO_ACCEPTCONN: ::c_int = 30;
+pub const SO_ATTACH_BPF: ::c_int = 50;
+pub const SO_ATTACH_FILTER: ::c_int = 26;
+pub const SO_ATTACH_REUSEPORT_CBPF: ::c_int = 51;
+pub const SO_ATTACH_REUSEPORT_EBPF: ::c_int = 52;
+pub const SO_BPF_EXTENSIONS: ::c_int = 48;
+pub const SO_BROADCAST: ::c_int = 6;
+pub const SO_BSDCOMPAT: ::c_int = 14;
+pub const SOCK_DGRAM: ::c_int = 2;
+pub const SOCK_NONBLOCK: ::c_int = 2048;
+pub const SOCK_SEQPACKET: ::c_int = 5;
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SO_CNX_ADVICE: ::c_int = 53;
+pub const SO_DETACH_BPF: ::c_int = 27;
+pub const SO_DETACH_FILTER: ::c_int = 27;
+pub const SO_DOMAIN: ::c_int = 39;
+pub const SO_DONTROUTE: ::c_int = 5;
+pub const SO_ERROR: ::c_int = 4;
+pub const SO_GET_FILTER: ::c_int = 26;
+pub const SO_INCOMING_CPU: ::c_int = 49;
+pub const SO_KEEPALIVE: ::c_int = 9;
+pub const SOL_CAIF: ::c_int = 278;
+pub const SO_LINGER: ::c_int = 13;
+pub const SOL_IUCV: ::c_int = 277;
+pub const SOL_KCM: ::c_int = 281;
+pub const SOL_NFC: ::c_int = 280;
+pub const SO_LOCK_FILTER: ::c_int = 44;
+pub const SOL_PNPIPE: ::c_int = 275;
+pub const SOL_PPPOL2TP: ::c_int = 273;
+pub const SOL_RDS: ::c_int = 276;
+pub const SOL_RXRPC: ::c_int = 272;
+pub const SOL_SOCKET: ::c_int = 1;
+pub const SO_MAX_PACING_RATE: ::c_int = 47;
+pub const SO_NO_CHECK: ::c_int = 11;
+pub const SO_NOFCS: ::c_int = 43;
+pub const SO_OOBINLINE: ::c_int = 10;
+pub const SO_PASSCRED: ::c_int = 16;
+pub const SO_PASSSEC: ::c_int = 34;
+pub const SO_PEERCRED: ::c_int = 17;
+pub const SO_PEERNAME: ::c_int = 28;
+pub const SO_PEERSEC: ::c_int = 31;
+pub const SO_PRIORITY: ::c_int = 12;
+pub const SO_PROTOCOL: ::c_int = 38;
+pub const SO_RCVBUF: ::c_int = 8;
+pub const SO_RCVBUFFORCE: ::c_int = 33;
+pub const SO_RCVLOWAT: ::c_int = 18;
+pub const SO_RCVTIMEO: ::c_int = 20;
+pub const SO_REUSEADDR: ::c_int = 2;
+pub const SO_REUSEPORT: ::c_int = 15;
+pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
+pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
+pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
+pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
+pub const SO_SNDBUF: ::c_int = 7;
+pub const SO_SNDBUFFORCE: ::c_int = 32;
+pub const SO_SNDLOWAT: ::c_int = 19;
+pub const SO_SNDTIMEO: ::c_int = 21;
+pub const SO_TYPE: ::c_int = 3;
+pub const SO_WIFI_STATUS: ::c_int = 41;
+pub const SYS3264_fadvise64: ::c_int = 223;
+pub const SYS3264_fcntl: ::c_int = 25;
+pub const SYS3264_fstatat: ::c_int = 79;
+pub const SYS3264_fstat: ::c_int = 80;
+pub const SYS3264_fstatfs: ::c_int = 44;
+pub const SYS3264_ftruncate: ::c_int = 46;
+pub const SYS3264_lseek: ::c_int = 62;
+pub const SYS3264_lstat: ::c_int = 1039;
+pub const SYS3264_mmap: ::c_int = 222;
+pub const SYS3264_sendfile: ::c_int = 71;
+pub const SYS3264_stat: ::c_int = 1038;
+pub const SYS3264_statfs: ::c_int = 43;
+pub const SYS3264_truncate: ::c_int = 45;
+pub const SYS_accept4: ::c_int = 242;
+pub const SYS_accept: ::c_int = 202;
+pub const SYS_access: ::c_int = 1033;
+pub const SYS_acct: ::c_int = 89;
+pub const SYS_add_key: ::c_int = 217;
+pub const SYS_adjtimex: ::c_int = 171;
+pub const SYS_alarm: ::c_int = 1059;
+pub const SYS_arch_specific_syscall: ::c_int = 244;
+pub const SYS_bdflush: ::c_int = 1075;
+pub const SYS_bind: ::c_int = 200;
+pub const SYS_bpf: ::c_int = 280;
+pub const SYS_brk: ::c_int = 214;
+pub const SYS_capget: ::c_int = 90;
+pub const SYS_capset: ::c_int = 91;
+pub const SYS_chdir: ::c_int = 49;
+pub const SYS_chmod: ::c_int = 1028;
+pub const SYS_chown: ::c_int = 1029;
+pub const SYS_chroot: ::c_int = 51;
+pub const SYS_clock_adjtime: ::c_int = 266;
+pub const SYS_clock_getres: ::c_int = 114;
+pub const SYS_clock_gettime: ::c_int = 113;
+pub const SYS_clock_nanosleep: ::c_int = 115;
+pub const SYS_clock_settime: ::c_int = 112;
+pub const SYS_clone: ::c_int = 220;
+pub const SYS_close: ::c_int = 57;
+pub const SYS_connect: ::c_int = 203;
+pub const SYS_copy_file_range: ::c_int = -1; // FIXME
+pub const SYS_creat: ::c_int = 1064;
+pub const SYS_delete_module: ::c_int = 106;
+pub const SYS_dup2: ::c_int = 1041;
+pub const SYS_dup3: ::c_int = 24;
+pub const SYS_dup: ::c_int = 23;
+pub const SYS_epoll_create1: ::c_int = 20;
+pub const SYS_epoll_create: ::c_int = 1042;
+pub const SYS_epoll_ctl: ::c_int = 21;
+pub const SYS_epoll_pwait: ::c_int = 22;
+pub const SYS_epoll_wait: ::c_int = 1069;
+pub const SYS_eventfd2: ::c_int = 19;
+pub const SYS_eventfd: ::c_int = 1044;
+pub const SYS_execveat: ::c_int = 281;
+pub const SYS_execve: ::c_int = 221;
+pub const SYS_exit: ::c_int = 93;
+pub const SYS_exit_group: ::c_int = 94;
+pub const SYS_faccessat: ::c_int = 48;
+pub const SYS_fadvise64_64: ::c_int = 223;
+pub const SYS_fallocate: ::c_int = 47;
+pub const SYS_fanotify_init: ::c_int = 262;
+pub const SYS_fanotify_mark: ::c_int = 263;
+pub const SYS_fchdir: ::c_int = 50;
+pub const SYS_fchmodat: ::c_int = 53;
+pub const SYS_fchmod: ::c_int = 52;
+pub const SYS_fchownat: ::c_int = 54;
+pub const SYS_fchown: ::c_int = 55;
+pub const SYS_fcntl64: ::c_int = 25;
+pub const SYS_fcntl: ::c_int = 25;
+pub const SYS_fdatasync: ::c_int = 83;
+pub const SYS_fgetxattr: ::c_int = 10;
+pub const SYS_finit_module: ::c_int = 273;
+pub const SYS_flistxattr: ::c_int = 13;
+pub const SYS_flock: ::c_int = 32;
+pub const SYS_fork: ::c_int = 1079;
+pub const SYS_fremovexattr: ::c_int = 16;
+pub const SYS_fsetxattr: ::c_int = 7;
+pub const SYS_fstat64: ::c_int = 80;
+pub const SYS_fstatat64: ::c_int = 79;
+pub const SYS_fstatfs64: ::c_int = 44;
+pub const SYS_fstatfs: ::c_int = 44;
+pub const SYS_fsync: ::c_int = 82;
+pub const SYS_ftruncate64: ::c_int = 46;
+pub const SYS_ftruncate: ::c_int = 46;
+pub const SYS_futex: ::c_int = 98;
+pub const SYS_futimesat: ::c_int = 1066;
+pub const SYS_getcpu: ::c_int = 168;
+pub const SYS_getcwd: ::c_int = 17;
+pub const SYS_getdents64: ::c_int = 61;
+pub const SYS_getdents: ::c_int = 1065;
+pub const SYS_getegid: ::c_int = 177;
+pub const SYS_geteuid: ::c_int = 175;
+pub const SYS_getgid: ::c_int = 176;
+pub const SYS_getgroups: ::c_int = 158;
+pub const SYS_getitimer: ::c_int = 102;
+pub const SYS_get_mempolicy: ::c_int = 236;
+pub const SYS_getpeername: ::c_int = 205;
+pub const SYS_getpgid: ::c_int = 155;
+pub const SYS_getpgrp: ::c_int = 1060;
+pub const SYS_getpid: ::c_int = 172;
+pub const SYS_getppid: ::c_int = 173;
+pub const SYS_getpriority: ::c_int = 141;
+pub const SYS_getrandom: ::c_int = 278;
+pub const SYS_getresgid: ::c_int = 150;
+pub const SYS_getresuid: ::c_int = 148;
+pub const SYS_getrlimit: ::c_int = 163;
+pub const SYS_get_robust_list: ::c_int = 100;
+pub const SYS_getrusage: ::c_int = 165;
+pub const SYS_getsid: ::c_int = 156;
+pub const SYS_getsockname: ::c_int = 204;
+pub const SYS_getsockopt: ::c_int = 209;
+pub const SYS_gettid: ::c_int = 178;
+pub const SYS_gettimeofday: ::c_int = 169;
+pub const SYS_getuid: ::c_int = 174;
+pub const SYS_getxattr: ::c_int = 8;
+pub const SYS_init_module: ::c_int = 105;
+pub const SYS_inotify_add_watch: ::c_int = 27;
+pub const SYS_inotify_init1: ::c_int = 26;
+pub const SYS_inotify_init: ::c_int = 1043;
+pub const SYS_inotify_rm_watch: ::c_int = 28;
+pub const SYS_io_cancel: ::c_int = 3;
+pub const SYS_ioctl: ::c_int = 29;
+pub const SYS_io_destroy: ::c_int = 1;
+pub const SYS_io_getevents: ::c_int = 4;
+pub const SYS_ioprio_get: ::c_int = 31;
+pub const SYS_ioprio_set: ::c_int = 30;
+pub const SYS_io_setup: ::c_int = 0;
+pub const SYS_io_submit: ::c_int = 2;
+pub const SYS_kcmp: ::c_int = 272;
+pub const SYS_kexec_load: ::c_int = 104;
+pub const SYS_keyctl: ::c_int = 219;
+pub const SYS_kill: ::c_int = 129;
+pub const SYS_lchown: ::c_int = 1032;
+pub const SYS_lgetxattr: ::c_int = 9;
+pub const SYS_linkat: ::c_int = 37;
+pub const SYS_link: ::c_int = 1025;
+pub const SYS_listen: ::c_int = 201;
+pub const SYS_listxattr: ::c_int = 11;
+pub const SYS_llistxattr: ::c_int = 12;
+pub const SYS__llseek: ::c_int = 62;
+pub const SYS_lookup_dcookie: ::c_int = 18;
+pub const SYS_lremovexattr: ::c_int = 15;
+pub const SYS_lseek: ::c_int = 62;
+pub const SYS_lsetxattr: ::c_int = 6;
+pub const SYS_lstat64: ::c_int = 1039;
+pub const SYS_lstat: ::c_int = 1039;
+pub const SYS_madvise: ::c_int = 233;
+pub const SYS_mbind: ::c_int = 235;
+pub const SYS_memfd_create: ::c_int = 279;
+pub const SYS_migrate_pages: ::c_int = 238;
+pub const SYS_mincore: ::c_int = 232;
+pub const SYS_mkdirat: ::c_int = 34;
+pub const SYS_mkdir: ::c_int = 1030;
+pub const SYS_mknodat: ::c_int = 33;
+pub const SYS_mknod: ::c_int = 1027;
+pub const SYS_mlockall: ::c_int = 230;
+pub const SYS_mlock: ::c_int = 228;
+pub const SYS_mmap2: ::c_int = 222;
+pub const SYS_mount: ::c_int = 40;
+pub const SYS_move_pages: ::c_int = 239;
+pub const SYS_mprotect: ::c_int = 226;
+pub const SYS_mq_getsetattr: ::c_int = 185;
+pub const SYS_mq_notify: ::c_int = 184;
+pub const SYS_mq_open: ::c_int = 180;
+pub const SYS_mq_timedreceive: ::c_int = 183;
+pub const SYS_mq_timedsend: ::c_int = 182;
+pub const SYS_mq_unlink: ::c_int = 181;
+pub const SYS_mremap: ::c_int = 216;
+pub const SYS_msgctl: ::c_int = 187;
+pub const SYS_msgget: ::c_int = 186;
+pub const SYS_msgrcv: ::c_int = 188;
+pub const SYS_msgsnd: ::c_int = 189;
+pub const SYS_msync: ::c_int = 227;
+pub const SYS_munlockall: ::c_int = 231;
+pub const SYS_munlock: ::c_int = 229;
+pub const SYS_munmap: ::c_int = 215;
+pub const SYS_name_to_handle_at: ::c_int = 264;
+pub const SYS_nanosleep: ::c_int = 101;
+pub const SYS_newfstatat: ::c_int = 79;
+pub const SYS_nfsservctl: ::c_int = 42;
+pub const SYS_oldwait4: ::c_int = 1072;
+pub const SYS_openat: ::c_int = 56;
+pub const SYS_open_by_handle_at: ::c_int = 265;
+pub const SYS_open: ::c_int = 1024;
+pub const SYS_pause: ::c_int = 1061;
+pub const SYS_perf_event_open: ::c_int = 241;
+pub const SYS_personality: ::c_int = 92;
+pub const SYS_pipe2: ::c_int = 59;
+pub const SYS_pipe: ::c_int = 1040;
+pub const SYS_pivot_root: ::c_int = 41;
+pub const SYS_poll: ::c_int = 1068;
+pub const SYS_ppoll: ::c_int = 73;
+pub const SYS_prctl: ::c_int = 167;
+pub const SYS_pread64: ::c_int = 67;
+pub const SYS_preadv: ::c_int = 69;
+pub const SYS_prlimit64: ::c_int = 261;
+pub const SYS_process_vm_readv: ::c_int = 270;
+pub const SYS_process_vm_writev: ::c_int = 271;
+pub const SYS_pselect6: ::c_int = 72;
+pub const SYS_ptrace: ::c_int = 117;
+pub const SYS_pwrite64: ::c_int = 68;
+pub const SYS_pwritev: ::c_int = 70;
+pub const SYS_quotactl: ::c_int = 60;
+pub const SYS_readahead: ::c_int = 213;
+pub const SYS_read: ::c_int = 63;
+pub const SYS_readlinkat: ::c_int = 78;
+pub const SYS_readlink: ::c_int = 1035;
+pub const SYS_readv: ::c_int = 65;
+pub const SYS_reboot: ::c_int = 142;
+pub const SYS_recv: ::c_int = 1073;
+pub const SYS_recvfrom: ::c_int = 207;
+pub const SYS_recvmmsg: ::c_int = 243;
+pub const SYS_recvmsg: ::c_int = 212;
+pub const SYS_remap_file_pages: ::c_int = 234;
+pub const SYS_removexattr: ::c_int = 14;
+pub const SYS_renameat2: ::c_int = 276;
+pub const SYS_renameat: ::c_int = 38;
+pub const SYS_rename: ::c_int = 1034;
+pub const SYS_request_key: ::c_int = 218;
+pub const SYS_restart_syscall: ::c_int = 128;
+pub const SYS_rmdir: ::c_int = 1031;
+pub const SYS_rt_sigaction: ::c_int = 134;
+pub const SYS_rt_sigpending: ::c_int = 136;
+pub const SYS_rt_sigprocmask: ::c_int = 135;
+pub const SYS_rt_sigqueueinfo: ::c_int = 138;
+pub const SYS_rt_sigreturn: ::c_int = 139;
+pub const SYS_rt_sigsuspend: ::c_int = 133;
+pub const SYS_rt_sigtimedwait: ::c_int = 137;
+pub const SYS_rt_tgsigqueueinfo: ::c_int = 240;
+pub const SYS_sched_getaffinity: ::c_int = 123;
+pub const SYS_sched_getattr: ::c_int = 275;
+pub const SYS_sched_getparam: ::c_int = 121;
+pub const SYS_sched_get_priority_max: ::c_int = 125;
+pub const SYS_sched_get_priority_min: ::c_int = 126;
+pub const SYS_sched_getscheduler: ::c_int = 120;
+pub const SYS_sched_rr_get_interval: ::c_int = 127;
+pub const SYS_sched_setaffinity: ::c_int = 122;
+pub const SYS_sched_setattr: ::c_int = 274;
+pub const SYS_sched_setparam: ::c_int = 118;
+pub const SYS_sched_setscheduler: ::c_int = 119;
+pub const SYS_sched_yield: ::c_int = 124;
+pub const SYS_seccomp: ::c_int = 277;
+pub const SYS_select: ::c_int = 1067;
+pub const SYS_semctl: ::c_int = 191;
+pub const SYS_semget: ::c_int = 190;
+pub const SYS_semop: ::c_int = 193;
+pub const SYS_semtimedop: ::c_int = 192;
+pub const SYS_send: ::c_int = 1074;
+pub const SYS_sendfile64: ::c_int = 71;
+pub const SYS_sendfile: ::c_int = 71;
+pub const SYS_sendmmsg: ::c_int = 269;
+pub const SYS_sendmsg: ::c_int = 211;
+pub const SYS_sendto: ::c_int = 206;
+pub const SYS_setdomainname: ::c_int = 162;
+pub const SYS_setfsgid: ::c_int = 152;
+pub const SYS_setfsuid: ::c_int = 151;
+pub const SYS_setgid: ::c_int = 144;
+pub const SYS_setgroups: ::c_int = 159;
+pub const SYS_sethostname: ::c_int = 161;
+pub const SYS_setitimer: ::c_int = 103;
+pub const SYS_set_mempolicy: ::c_int = 237;
+pub const SYS_setns: ::c_int = 268;
+pub const SYS_setpgid: ::c_int = 154;
+pub const SYS_setpriority: ::c_int = 140;
+pub const SYS_setregid: ::c_int = 143;
+pub const SYS_setresgid: ::c_int = 149;
+pub const SYS_setresuid: ::c_int = 147;
+pub const SYS_setreuid: ::c_int = 145;
+pub const SYS_setrlimit: ::c_int = 164;
+pub const SYS_set_robust_list: ::c_int = 99;
+pub const SYS_setsid: ::c_int = 157;
+pub const SYS_setsockopt: ::c_int = 208;
+pub const SYS_set_tid_address: ::c_int = 96;
+pub const SYS_settimeofday: ::c_int = 170;
+pub const SYS_setuid: ::c_int = 146;
+pub const SYS_setxattr: ::c_int = 5;
+pub const SYS_shmat: ::c_int = 196;
+pub const SYS_shmctl: ::c_int = 195;
+pub const SYS_shmdt: ::c_int = 197;
+pub const SYS_shmget: ::c_int = 194;
+pub const SYS_shutdown: ::c_int = 210;
+pub const SYS_sigaltstack: ::c_int = 132;
+pub const SYS_signalfd4: ::c_int = 74;
+pub const SYS_signalfd: ::c_int = 1045;
+pub const SYS_socket: ::c_int = 198;
+pub const SYS_socketpair: ::c_int = 199;
+pub const SYS_splice: ::c_int = 76;
+pub const SYS_stat64: ::c_int = 1038;
+pub const SYS_stat: ::c_int = 1038;
+pub const SYS_statfs64: ::c_int = 43;
+pub const SYS_swapoff: ::c_int = 225;
+pub const SYS_swapon: ::c_int = 224;
+pub const SYS_symlinkat: ::c_int = 36;
+pub const SYS_symlink: ::c_int = 1036;
+pub const SYS_sync: ::c_int = 81;
+pub const SYS_sync_file_range2: ::c_int = 84;
+pub const SYS_sync_file_range: ::c_int = 84;
+pub const SYS_syncfs: ::c_int = 267;
+pub const SYS_syscalls: ::c_int = 1080;
+pub const SYS__sysctl: ::c_int = 1078;
+pub const SYS_sysinfo: ::c_int = 179;
+pub const SYS_syslog: ::c_int = 116;
+pub const SYS_tee: ::c_int = 77;
+pub const SYS_tgkill: ::c_int = 131;
+pub const SYS_time: ::c_int = 1062;
+pub const SYS_timer_create: ::c_int = 107;
+pub const SYS_timer_delete: ::c_int = 111;
+pub const SYS_timerfd_create: ::c_int = 85;
+pub const SYS_timerfd_gettime: ::c_int = 87;
+pub const SYS_timerfd_settime: ::c_int = 86;
+pub const SYS_timer_getoverrun: ::c_int = 109;
+pub const SYS_timer_gettime: ::c_int = 108;
+pub const SYS_timer_settime: ::c_int = 110;
+pub const SYS_times: ::c_int = 153;
+pub const SYS_tkill: ::c_int = 130;
+pub const SYS_truncate64: ::c_int = 45;
+pub const SYS_truncate: ::c_int = 45;
+pub const SYS_umask: ::c_int = 166;
+pub const SYS_umount2: ::c_int = 39;
+pub const SYS_umount: ::c_int = 1076;
+pub const SYS_uname: ::c_int = 160;
+pub const SYS_unlinkat: ::c_int = 35;
+pub const SYS_unlink: ::c_int = 1026;
+pub const SYS_unshare: ::c_int = 97;
+pub const SYS_uselib: ::c_int = 1077;
+pub const SYS_ustat: ::c_int = 1070;
+pub const SYS_utime: ::c_int = 1063;
+pub const SYS_utimensat: ::c_int = 88;
+pub const SYS_utimes: ::c_int = 1037;
+pub const SYS_vfork: ::c_int = 1071;
+pub const SYS_vhangup: ::c_int = 58;
+pub const SYS_vmsplice: ::c_int = 75;
+pub const SYS_wait4: ::c_int = 260;
+pub const SYS_waitid: ::c_int = 95;
+pub const SYS_write: ::c_int = 64;
+pub const SYS_writev: ::c_int = 66;
+pub const TCFLSH: ::c_int = 21515;
+pub const TCGETA: ::c_int = 21509;
+pub const TCGETS: ::c_int = 21505;
+pub const TCGETX: ::c_int = 21554;
+pub const TCSBRK: ::c_int = 21513;
+pub const TCSBRKP: ::c_int = 21541;
+pub const TCSETA: ::c_int = 21510;
+pub const TCSETAF: ::c_int = 21512;
+pub const TCSETAW: ::c_int = 21511;
+pub const TCSETS: ::c_int = 21506;
+pub const TCSETSF: ::c_int = 21508;
+pub const TCSETSW: ::c_int = 21507;
+pub const TCSETX: ::c_int = 21555;
+pub const TCSETXF: ::c_int = 21556;
+pub const TCSETXW: ::c_int = 21557;
+pub const TCXONC: ::c_int = 21514;
+pub const TIOCCBRK: ::c_int = 21544;
+pub const TIOCCONS: ::c_int = 21533;
+pub const TIOCEXCL: ::c_int = 21516;
+pub const TIOCGETD: ::c_int = 21540;
+pub const TIOCGICOUNT: ::c_int = 21597;
+pub const TIOCGLCKTRMIOS: ::c_int = 21590;
+pub const TIOCGPGRP: ::c_int = 21519;
+pub const TIOCGRS485: ::c_int = 21550;
+pub const TIOCGSERIAL: ::c_int = 21534;
+pub const TIOCGSID: ::c_int = 21545;
+pub const TIOCGSOFTCAR: ::c_int = 21529;
+pub const TIOCGWINSZ: ::c_int = 21523;
+pub const TIOCLINUX: ::c_int = 21532;
+pub const TIOCMBIC: ::c_int = 21527;
+pub const TIOCMBIS: ::c_int = 21526;
+pub const TIOCM_CAR: ::c_int = 64;
+pub const TIOCM_CD: ::c_int = 64;
+pub const TIOCM_CTS: ::c_int = 32;
+pub const TIOCM_DSR: ::c_int = 256;
+pub const TIOCM_DTR: ::c_int = 2;
+pub const TIOCMGET: ::c_int = 21525;
+pub const TIOCMIWAIT: ::c_int = 21596;
+pub const TIOCM_LE: ::c_int = 1;
+pub const TIOCM_LOOP: ::c_int = 32768;
+pub const TIOCM_OUT1: ::c_int = 8192;
+pub const TIOCM_OUT2: ::c_int = 16384;
+pub const TIOCM_RI: ::c_int = 128;
+pub const TIOCM_RNG: ::c_int = 128;
+pub const TIOCM_RTS: ::c_int = 4;
+pub const TIOCMSET: ::c_int = 21528;
+pub const TIOCM_SR: ::c_int = 16;
+pub const TIOCM_ST: ::c_int = 8;
+pub const TIOCNOTTY: ::c_int = 21538;
+pub const TIOCNXCL: ::c_int = 21517;
+pub const TIOCOUTQ: ::c_int = 21521;
+pub const TIOCPKT: ::c_int = 21536;
+pub const TIOCPKT_DATA: ::c_int = 0;
+pub const TIOCPKT_DOSTOP: ::c_int = 32;
+pub const TIOCPKT_FLUSHREAD: ::c_int = 1;
+pub const TIOCPKT_FLUSHWRITE: ::c_int = 2;
+pub const TIOCPKT_IOCTL: ::c_int = 64;
+pub const TIOCPKT_NOSTOP: ::c_int = 16;
+pub const TIOCPKT_START: ::c_int = 8;
+pub const TIOCPKT_STOP: ::c_int = 4;
+pub const TIOCSBRK: ::c_int = 21543;
+pub const TIOCSCTTY: ::c_int = 21518;
+pub const TIOCSERCONFIG: ::c_int = 21587;
+pub const TIOCSERGETLSR: ::c_int = 21593;
+pub const TIOCSERGETMULTI: ::c_int = 21594;
+pub const TIOCSERGSTRUCT: ::c_int = 21592;
+pub const TIOCSERGWILD: ::c_int = 21588;
+pub const TIOCSERSETMULTI: ::c_int = 21595;
+pub const TIOCSERSWILD: ::c_int = 21589;
+pub const TIOCSER_TEMT: ::c_int = 1;
+pub const TIOCSETD: ::c_int = 21539;
+pub const TIOCSLCKTRMIOS: ::c_int = 21591;
+pub const TIOCSPGRP: ::c_int = 21520;
+pub const TIOCSRS485: ::c_int = 21551;
+pub const TIOCSSERIAL: ::c_int = 21535;
+pub const TIOCSSOFTCAR: ::c_int = 21530;
+pub const TIOCSTI: ::c_int = 21522;
+pub const TIOCSWINSZ: ::c_int = 21524;
+pub const TIOCVHANGUP: ::c_int = 21559;
+pub const TOSTOP: ::c_int = 256;
+pub const VEOF: ::c_int = 4;
+pub const VEOL2: ::c_int = 16;
+pub const VEOL: ::c_int = 11;
+pub const VMIN: ::c_int = 6;
diff --git a/libc/src/unix/notbsd/linux/musl/b32/mips.rs b/libc/src/unix/linux_like/linux/musl/b32/mips.rs
index fbecb49..8da21ca 100644
--- a/libc/src/unix/notbsd/linux/musl/b32/mips.rs
+++ b/libc/src/unix/linux_like/linux/musl/b32/mips.rs
@@ -173,6 +173,7 @@ pub const O_ASYNC: ::c_int = 0o10000;
pub const O_LARGEFILE: ::c_int = 0x2000;
pub const FIOCLEX: ::c_int = 0x6601;
+pub const FIONCLEX: ::c_int = 0x6602;
pub const FIONBIO: ::c_int = 0x667E;
pub const RLIMIT_RSS: ::c_int = 7;
@@ -835,19 +836,3 @@ pub const SYS_mlock2: ::c_long = 4000 + 359;
pub const SYS_copy_file_range: ::c_long = 4000 + 360;
pub const SYS_preadv2: ::c_long = 4000 + 361;
pub const SYS_pwritev2: ::c_long = 4000 + 362;
-
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 42;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const PF_MAX: ::c_int = AF_MAX;
diff --git a/libc/src/unix/notbsd/linux/musl/b32/mod.rs b/libc/src/unix/linux_like/linux/musl/b32/mod.rs
index 4128a8e..0de2325 100644
--- a/libc/src/unix/notbsd/linux/musl/b32/mod.rs
+++ b/libc/src/unix/linux_like/linux/musl/b32/mod.rs
@@ -56,6 +56,9 @@ cfg_if! {
} else if #[cfg(any(target_arch = "powerpc"))] {
mod powerpc;
pub use self::powerpc::*;
+ } else if #[cfg(any(target_arch = "hexagon"))] {
+ mod hexagon;
+ pub use self::hexagon::*;
} else {
// Unknown target_arch
}
diff --git a/libc/src/unix/notbsd/linux/musl/b32/powerpc.rs b/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs
index eafd7a6..76f23dd 100644
--- a/libc/src/unix/notbsd/linux/musl/b32/powerpc.rs
+++ b/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs
@@ -166,6 +166,7 @@ pub const O_ASYNC: ::c_int = 0x2000;
pub const O_LARGEFILE: ::c_int = 0x10000;
pub const FIOCLEX: ::c_int = 0x20006601;
+pub const FIONCLEX: ::c_int = 0x20006602;
pub const FIONBIO: ::c_int = 0x8004667E;
pub const RLIMIT_RSS: ::c_int = 5;
@@ -853,18 +854,10 @@ pub const SYS_pkey_alloc: ::c_long = 384;
pub const SYS_pkey_free: ::c_long = 385;
pub const SYS_pkey_mprotect: ::c_long = 386;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 43;
-#[doc(hidden)]
-#[allow(deprecated)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const PF_MAX: ::c_int = AF_MAX;
+extern {
+ pub fn getrandom(
+ buf: *mut ::c_void,
+ buflen: ::size_t,
+ flags: ::c_uint,
+ ) -> ::ssize_t;
+}
diff --git a/libc/src/unix/notbsd/linux/musl/b32/x86.rs b/libc/src/unix/linux_like/linux/musl/b32/x86.rs
index 3e8579a..91c5945 100644
--- a/libc/src/unix/notbsd/linux/musl/b32/x86.rs
+++ b/libc/src/unix/linux_like/linux/musl/b32/x86.rs
@@ -222,6 +222,7 @@ pub const O_ASYNC: ::c_int = 0x2000;
pub const O_LARGEFILE: ::c_int = 0o0100000;
pub const FIOCLEX: ::c_int = 0x5451;
+pub const FIONCLEX: ::c_int = 0x5450;
pub const FIONBIO: ::c_int = 0x5421;
pub const RLIMIT_RSS: ::c_int = 5;
@@ -935,18 +936,10 @@ pub const EFL: ::c_int = 14;
pub const UESP: ::c_int = 15;
pub const SS: ::c_int = 16;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 45;
-#[doc(hidden)]
-#[allow(deprecated)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const PF_MAX: ::c_int = AF_MAX;
+extern {
+ pub fn getrandom(
+ buf: *mut ::c_void,
+ buflen: ::size_t,
+ flags: ::c_uint,
+ ) -> ::ssize_t;
+}
diff --git a/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs b/libc/src/unix/linux_like/linux/musl/b64/aarch64.rs
index 16cb46d..14405a5 100644
--- a/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs
+++ b/libc/src/unix/linux_like/linux/musl/b64/aarch64.rs
@@ -70,22 +70,6 @@ pub const O_NOFOLLOW: ::c_int = 0x8000;
pub const MINSIGSTKSZ: ::size_t = 6144;
pub const SIGSTKSZ: ::size_t = 12288;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const PF_MAX: ::c_int = 45;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const AF_MAX: ::c_int = PF_MAX;
-
pub const MADV_SOFT_OFFLINE: ::c_int = 101;
pub const SYS_io_setup: ::c_long = 0;
pub const SYS_io_destroy: ::c_long = 1;
@@ -112,6 +96,7 @@ 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_fcntl: ::c_long = 25;
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;
@@ -144,6 +129,7 @@ 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_lseek: ::c_long = 62;
pub const SYS_read: ::c_long = 63;
pub const SYS_write: ::c_long = 64;
pub const SYS_readv: ::c_long = 65;
@@ -159,6 +145,8 @@ 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_newfstatat: ::c_long = 79;
+pub const SYS_fstat: ::c_long = 80;
pub const SYS_sync: ::c_long = 81;
pub const SYS_fsync: ::c_long = 82;
pub const SYS_fdatasync: ::c_long = 83;
@@ -300,6 +288,7 @@ 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_mmap: ::c_long = 222;
pub const SYS_swapon: ::c_long = 224;
pub const SYS_swapoff: ::c_long = 225;
pub const SYS_mprotect: ::c_long = 226;
@@ -424,6 +413,7 @@ pub const B3500000: ::speed_t = 0o010016;
pub const B4000000: ::speed_t = 0o010017;
pub const FIOCLEX: ::c_int = 0x5451;
+pub const FIONCLEX: ::c_int = 0x5450;
pub const FIONBIO: ::c_int = 0x5421;
pub const EDEADLK: ::c_int = 35;
pub const EDEADLOCK: ::c_int = EDEADLK;
diff --git a/libc/src/unix/notbsd/linux/musl/b64/mod.rs b/libc/src/unix/linux_like/linux/musl/b64/mod.rs
index 34b3766..12d5c84 100644
--- a/libc/src/unix/notbsd/linux/musl/b64/mod.rs
+++ b/libc/src/unix/linux_like/linux/musl/b64/mod.rs
@@ -312,6 +312,14 @@ pub const VEOF: usize = 4;
pub const POLLWRNORM: ::c_short = 0x100;
pub const POLLWRBAND: ::c_short = 0x200;
+extern {
+ pub fn getrandom(
+ buf: *mut ::c_void,
+ buflen: ::size_t,
+ flags: ::c_uint,
+ ) -> ::ssize_t;
+}
+
cfg_if! {
if #[cfg(target_arch = "aarch64")] {
mod aarch64;
diff --git a/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs b/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs
index 4a8df27..04ceb79 100644
--- a/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs
+++ b/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs
@@ -70,22 +70,6 @@ pub const O_NOFOLLOW: ::c_int = 0x8000;
pub const SIGSTKSZ: ::size_t = 10240;
pub const MINSIGSTKSZ: ::size_t = 4096;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 45;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const PF_MAX: ::c_int = AF_MAX;
-
// Syscall table
pub const SYS_restart_syscall: ::c_long = 0;
pub const SYS_exit: ::c_long = 1;
@@ -448,6 +432,7 @@ pub const SYS_pwritev2: ::c_long = 381;
pub const SYS_kexec_file_load: ::c_long = 382;
pub const FIOCLEX: ::c_int = 0x20006601;
+pub const FIONCLEX: ::c_int = 0x20006602;
pub const FIONBIO: ::c_int = 0x8004667e;
pub const EDEADLK: ::c_int = 58;
pub const EDEADLOCK: ::c_int = EDEADLK;
diff --git a/libc/src/unix/notbsd/linux/musl/b64/x86_64.rs b/libc/src/unix/linux_like/linux/musl/b64/x86_64.rs
index df0ce40..b4023f7 100644
--- a/libc/src/unix/notbsd/linux/musl/b64/x86_64.rs
+++ b/libc/src/unix/linux_like/linux/musl/b64/x86_64.rs
@@ -496,22 +496,6 @@ pub const TIOCSRS485: ::c_int = 0x542F;
pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 45;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const PF_MAX: ::c_int = AF_MAX;
-
pub const RLIMIT_NLIMITS: ::c_int = 15;
pub const TIOCINQ: ::c_int = ::FIONREAD;
pub const MCL_CURRENT: ::c_int = 0x0001;
@@ -584,6 +568,7 @@ pub const B3500000: ::speed_t = 0o010016;
pub const B4000000: ::speed_t = 0o010017;
pub const FIOCLEX: ::c_int = 0x5451;
+pub const FIONCLEX: ::c_int = 0x5450;
pub const FIONBIO: ::c_int = 0x5421;
pub const EDEADLK: ::c_int = 35;
pub const EDEADLOCK: ::c_int = EDEADLK;
diff --git a/libc/src/unix/notbsd/linux/musl/mod.rs b/libc/src/unix/linux_like/linux/musl/mod.rs
index 99d3ed8..e47af4f 100644
--- a/libc/src/unix/notbsd/linux/musl/mod.rs
+++ b/libc/src/unix/linux_like/linux/musl/mod.rs
@@ -13,6 +13,34 @@ pub type fsblkcnt_t = ::c_ulonglong;
pub type fsfilcnt_t = ::c_ulonglong;
pub type rlim_t = ::c_ulonglong;
+impl siginfo_t {
+ 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
+ }
+
+ pub unsafe fn si_value(&self) -> ::sigval {
+ #[repr(C)]
+ struct siginfo_si_value {
+ _si_signo: ::c_int,
+ _si_errno: ::c_int,
+ _si_code: ::c_int,
+ _si_timerid: ::c_int,
+ _si_overrun: ::c_int,
+ si_value: ::sigval,
+ }
+
+ (*(self as *const siginfo_t as *const siginfo_si_value)).si_value
+ }
+}
+
s! {
pub struct aiocb {
pub aio_fildes: ::c_int,
@@ -301,7 +329,7 @@ pub const RTLD_GLOBAL: ::c_int = 0x100;
pub const RTLD_NOLOAD: ::c_int = 0x4;
// TODO(#247) Temporarily musl-specific (available since musl 0.9.12 / Linux
-// kernel 3.10). See also notbsd/mod.rs
+// kernel 3.10). See also linux_like/mod.rs
pub const CLOCK_SGI_CYCLE: ::clockid_t = 10;
pub const CLOCK_TAI: ::clockid_t = 11;
@@ -386,8 +414,9 @@ cfg_if! {
pub use self::b64::*;
} else if #[cfg(any(target_arch = "x86",
target_arch = "mips",
- target_arch = "arm",
- target_arch = "powerpc"))] {
+ target_arch = "powerpc",
+ target_arch = "hexagon",
+ target_arch = "arm"))] {
mod b32;
pub use self::b32::*;
} else { }
diff --git a/libc/src/unix/notbsd/linux/no_align.rs b/libc/src/unix/linux_like/linux/no_align.rs
index 1f5f2ee..1f5f2ee 100644
--- a/libc/src/unix/notbsd/linux/no_align.rs
+++ b/libc/src/unix/linux_like/linux/no_align.rs
diff --git a/libc/src/unix/notbsd/mod.rs b/libc/src/unix/linux_like/mod.rs
index 2706466..a6d1d5a 100644
--- a/libc/src/unix/notbsd/mod.rs
+++ b/libc/src/unix/linux_like/mod.rs
@@ -135,19 +135,6 @@ s! {
pub int_n_sign_posn: ::c_char,
}
- pub struct sigevent {
- pub sigev_value: ::sigval,
- pub sigev_signo: ::c_int,
- pub sigev_notify: ::c_int,
- // Actually a union. We only expose sigev_notify_thread_id because it's
- // the most useful member
- pub sigev_notify_thread_id: ::c_int,
- #[cfg(target_pointer_width = "64")]
- __unused1: [::c_int; 11],
- #[cfg(target_pointer_width = "32")]
- __unused1: [::c_int; 12]
- }
-
pub struct in_pktinfo {
pub ipi_ifindex: ::c_int,
pub ipi_spec_dst: ::in_addr,
@@ -242,6 +229,19 @@ s_no_extra_traits!{
pub machine: [::c_char; 65],
pub domainname: [::c_char; 65]
}
+
+ pub struct sigevent {
+ pub sigev_value: ::sigval,
+ pub sigev_signo: ::c_int,
+ pub sigev_notify: ::c_int,
+ // Actually a union. We only expose sigev_notify_thread_id because it's
+ // the most useful member
+ pub sigev_notify_thread_id: ::c_int,
+ #[cfg(target_pointer_width = "64")]
+ __unused1: [::c_int; 11],
+ #[cfg(target_pointer_width = "32")]
+ __unused1: [::c_int; 12]
+ }
}
cfg_if! {
@@ -387,6 +387,36 @@ cfg_if! {
self.domainname.hash(state);
}
}
+
+ impl PartialEq for sigevent {
+ fn eq(&self, other: &sigevent) -> bool {
+ self.sigev_value == other.sigev_value
+ && self.sigev_signo == other.sigev_signo
+ && self.sigev_notify == other.sigev_notify
+ && self.sigev_notify_thread_id
+ == other.sigev_notify_thread_id
+ }
+ }
+ impl Eq for sigevent {}
+ impl ::fmt::Debug for sigevent {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("sigevent")
+ .field("sigev_value", &self.sigev_value)
+ .field("sigev_signo", &self.sigev_signo)
+ .field("sigev_notify", &self.sigev_notify)
+ .field("sigev_notify_thread_id",
+ &self.sigev_notify_thread_id)
+ .finish()
+ }
+ }
+ impl ::hash::Hash for sigevent {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.sigev_value.hash(state);
+ self.sigev_signo.hash(state);
+ self.sigev_notify.hash(state);
+ self.sigev_notify_thread_id.hash(state);
+ }
+ }
}
}
@@ -775,6 +805,7 @@ pub const IP_TTL: ::c_int = 2;
pub const IP_HDRINCL: ::c_int = 3;
pub const IP_PKTINFO: ::c_int = 8;
pub const IP_RECVTOS: ::c_int = 13;
+pub const IP_RECVERR: ::c_int = 11;
pub const IP_ADD_MEMBERSHIP: ::c_int = 35;
pub const IP_DROP_MEMBERSHIP: ::c_int = 36;
pub const IP_TRANSPARENT: ::c_int = 19;
diff --git a/libc/src/unix/mod.rs b/libc/src/unix/mod.rs
index efaad41..721d241 100644
--- a/libc/src/unix/mod.rs
+++ b/libc/src/unix/mod.rs
@@ -567,7 +567,7 @@ extern {
#[cfg_attr(target_os = "macos", link_name = "fstat$INODE64")]
#[cfg_attr(target_os = "netbsd", link_name = "__fstat50")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "fstat@FBSD_1.0"
)]
pub fn fstat(fildes: ::c_int, buf: *mut stat) -> ::c_int;
@@ -577,7 +577,7 @@ extern {
#[cfg_attr(target_os = "macos", link_name = "stat$INODE64")]
#[cfg_attr(target_os = "netbsd", link_name = "__stat50")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "stat@FBSD_1.0"
)]
pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int;
@@ -605,33 +605,13 @@ extern {
#[cfg_attr(target_os = "netbsd", link_name = "__opendir30")]
pub fn opendir(dirname: *const c_char) -> *mut ::DIR;
- #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"),
- link_name = "fdopendir$INODE64")]
- #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
- link_name = "fdopendir$INODE64$UNIX2003")]
- pub fn fdopendir(fd: ::c_int) -> *mut ::DIR;
-
#[cfg_attr(target_os = "macos", link_name = "readdir$INODE64")]
#[cfg_attr(target_os = "netbsd", link_name = "__readdir30")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "readdir@FBSD_1.0"
)]
pub fn readdir(dirp: *mut ::DIR) -> *mut ::dirent;
- #[cfg_attr(target_os = "macos", link_name = "readdir_r$INODE64")]
- #[cfg_attr(target_os = "netbsd", link_name = "__readdir_r30")]
- #[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
- link_name = "readdir_r@FBSD_1.0"
- )]
- /// The 64-bit libc on Solaris and illumos only has readdir_r. If a
- /// 32-bit Solaris or illumos target is ever created, it should use
- /// __posix_readdir_r. See libc(3LIB) on Solaris or illumos:
- /// https://illumos.org/man/3lib/libc
- /// https://docs.oracle.com/cd/E36784_01/html/E36873/libc-3lib.html
- /// https://www.unix.com/man-page/opensolaris/3LIB/libc/
- pub fn readdir_r(dirp: *mut ::DIR, entry: *mut ::dirent,
- result: *mut *mut ::dirent) -> ::c_int;
#[cfg_attr(all(target_os = "macos", target_arch = "x86"),
link_name = "closedir$UNIX2003")]
pub fn closedir(dirp: *mut ::DIR) -> ::c_int;
@@ -641,8 +621,6 @@ extern {
link_name = "rewinddir$INODE64$UNIX2003")]
pub fn rewinddir(dirp: *mut ::DIR);
- pub fn openat(dirfd: ::c_int, pathname: *const ::c_char,
- flags: ::c_int, ...) -> ::c_int;
pub fn fchmodat(dirfd: ::c_int, pathname: *const ::c_char,
mode: ::mode_t, flags: ::c_int) -> ::c_int;
pub fn fchown(fd: ::c_int,
@@ -653,7 +631,7 @@ extern {
flags: ::c_int) -> ::c_int;
#[cfg_attr(target_os = "macos", link_name = "fstatat$INODE64")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "fstatat@FBSD_1.1"
)]
pub fn fstatat(dirfd: ::c_int, pathname: *const ::c_char,
@@ -661,10 +639,6 @@ extern {
pub fn linkat(olddirfd: ::c_int, oldpath: *const ::c_char,
newdirfd: ::c_int, newpath: *const ::c_char,
flags: ::c_int) -> ::c_int;
- pub fn mkdirat(dirfd: ::c_int, pathname: *const ::c_char,
- mode: ::mode_t) -> ::c_int;
- pub fn readlinkat(dirfd: ::c_int, pathname: *const ::c_char,
- buf: *mut ::c_char, bufsiz: ::size_t) -> ::ssize_t;
pub fn renameat(olddirfd: ::c_int, oldpath: *const ::c_char,
newdirfd: ::c_int, newpath: *const ::c_char)
-> ::c_int;
@@ -725,9 +699,6 @@ extern {
pub fn link(src: *const c_char, dst: *const c_char) -> ::c_int;
pub fn lseek(fd: ::c_int, offset: off_t, whence: ::c_int) -> off_t;
pub fn pathconf(path: *const c_char, name: ::c_int) -> c_long;
- #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
- link_name = "pause$UNIX2003")]
- pub fn pause() -> ::c_int;
pub fn pipe(fds: *mut ::c_int) -> ::c_int;
pub fn posix_memalign(memptr: *mut *mut ::c_void,
align: ::size_t,
@@ -754,6 +725,10 @@ extern {
pub fn tcgetpgrp(fd: ::c_int) -> pid_t;
pub fn tcsetpgrp(fd: ::c_int, pgrp: ::pid_t) -> ::c_int;
pub fn ttyname(fd: ::c_int) -> *mut c_char;
+ #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+ link_name = "ttyname_r$UNIX2003")]
+ pub fn ttyname_r(fd: ::c_int,
+ buf: *mut c_char, buflen: ::size_t) -> ::c_int;
pub fn unlink(c: *const c_char) -> ::c_int;
#[cfg_attr(all(target_os = "macos", target_arch = "x86"),
link_name = "wait$UNIX2003")]
@@ -811,7 +786,7 @@ extern {
#[cfg_attr(target_os = "macos", link_name = "lstat$INODE64")]
#[cfg_attr(target_os = "netbsd", link_name = "__lstat50")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "lstat@FBSD_1.0"
)]
pub fn lstat(path: *const c_char, buf: *mut stat) -> ::c_int;
@@ -832,7 +807,6 @@ extern {
pub fn symlink(path1: *const c_char,
path2: *const c_char) -> ::c_int;
- pub fn truncate(path: *const c_char, length: off_t) -> ::c_int;
pub fn ftruncate(fd: ::c_int, length: off_t) -> ::c_int;
pub fn signal(signum: ::c_int, handler: sighandler_t) -> sighandler_t;
@@ -988,7 +962,7 @@ extern {
#[cfg_attr(target_os = "netbsd", link_name = "__mknod50")]
#[cfg_attr(
- all(target_os = "freebsd", not(freebsd12)),
+ all(target_os = "freebsd", freebsd11),
link_name = "mknod@FBSD_1.0"
)]
pub fn mknod(pathname: *const ::c_char, mode: ::mode_t,
@@ -1067,8 +1041,6 @@ extern {
#[cfg_attr(target_os = "netbsd", link_name = "__timegm50")]
pub fn timegm(tm: *mut ::tm) -> time_t;
- pub fn getsid(pid: pid_t) -> pid_t;
-
pub fn sysconf(name: ::c_int) -> ::c_long;
pub fn mkfifo(path: *const c_char, mode: mode_t) -> ::c_int;
@@ -1128,6 +1100,48 @@ extern {
}
cfg_if! {
+ if #[cfg(not(target_os = "redox"))] {
+ extern {
+ pub fn getsid(pid: pid_t) -> pid_t;
+ pub fn truncate(path: *const c_char, length: off_t) -> ::c_int;
+ #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+ link_name = "pause$UNIX2003")]
+ pub fn pause() -> ::c_int;
+
+ pub fn readlinkat(dirfd: ::c_int,
+ pathname: *const ::c_char,
+ buf: *mut ::c_char,
+ bufsiz: ::size_t) -> ::ssize_t;
+ pub fn mkdirat(dirfd: ::c_int, pathname: *const ::c_char,
+ mode: ::mode_t) -> ::c_int;
+ pub fn openat(dirfd: ::c_int, pathname: *const ::c_char,
+ flags: ::c_int, ...) -> ::c_int;
+
+ #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"),
+ link_name = "fdopendir$INODE64")]
+ #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+ link_name = "fdopendir$INODE64$UNIX2003")]
+ pub fn fdopendir(fd: ::c_int) -> *mut ::DIR;
+
+ #[cfg_attr(target_os = "macos", link_name = "readdir_r$INODE64")]
+ #[cfg_attr(target_os = "netbsd", link_name = "__readdir_r30")]
+ #[cfg_attr(
+ all(target_os = "freebsd", freebsd11),
+ link_name = "readdir_r@FBSD_1.0"
+ )]
+ /// The 64-bit libc on Solaris and illumos only has readdir_r. If a
+ /// 32-bit Solaris or illumos target is ever created, it should use
+ /// __posix_readdir_r. See libc(3LIB) on Solaris or illumos:
+ /// https://illumos.org/man/3lib/libc
+ /// https://docs.oracle.com/cd/E36784_01/html/E36873/libc-3lib.html
+ /// https://www.unix.com/man-page/opensolaris/3LIB/libc/
+ pub fn readdir_r(dirp: *mut ::DIR, entry: *mut ::dirent,
+ result: *mut *mut ::dirent) -> ::c_int;
+ }
+ }
+}
+
+cfg_if! {
if #[cfg(not(any(target_os = "solaris", target_os = "illumos")))] {
extern {
pub fn cfmakeraw(termios: *mut ::termios);
@@ -1147,8 +1161,8 @@ cfg_if! {
} else if #[cfg(any(target_os = "linux",
target_os = "android",
target_os = "emscripten"))] {
- mod notbsd;
- pub use self::notbsd::*;
+ mod linux_like;
+ pub use self::linux_like::*;
} else if #[cfg(any(target_os = "macos",
target_os = "ios",
target_os = "freebsd",
diff --git a/libc/src/unix/newlib/mod.rs b/libc/src/unix/newlib/mod.rs
index f27874c..7e73109 100644
--- a/libc/src/unix/newlib/mod.rs
+++ b/libc/src/unix/newlib/mod.rs
@@ -408,6 +408,7 @@ pub const SEEK_END: ::c_int = 2;
pub const FIONBIO: ::c_ulong = 1;
pub const FIOCLEX: ::c_ulong = 0x20006601;
+pub const FIONCLEX: ::c_ulong = 0x20006602;
pub const S_BLKSIZE: ::mode_t = 1024;
pub const S_IREAD: ::mode_t = 256;
diff --git a/libc/src/unix/notbsd/linux/mips/mod.rs b/libc/src/unix/notbsd/linux/mips/mod.rs
deleted file mode 100644
index 46c49ff..0000000
--- a/libc/src/unix/notbsd/linux/mips/mod.rs
+++ /dev/null
@@ -1,1008 +0,0 @@
-pub type pthread_t = c_ulong;
-pub type shmatt_t = ::c_ulong;
-pub type msgqnum_t = ::c_ulong;
-pub type msglen_t = ::c_ulong;
-pub type fsblkcnt_t = ::c_ulong;
-pub type fsfilcnt_t = ::c_ulong;
-pub type rlim_t = c_ulong;
-pub type __priority_which_t = ::c_uint;
-pub type __rlimit_resource_t = ::c_uint;
-
-s! {
- pub struct glob64_t {
- pub gl_pathc: ::size_t,
- pub gl_pathv: *mut *mut ::c_char,
- pub gl_offs: ::size_t,
- pub gl_flags: ::c_int,
-
- __unused1: *mut ::c_void,
- __unused2: *mut ::c_void,
- __unused3: *mut ::c_void,
- __unused4: *mut ::c_void,
- __unused5: *mut ::c_void,
- }
-
- pub struct termios2 {
- pub c_iflag: ::tcflag_t,
- pub c_oflag: ::tcflag_t,
- pub c_cflag: ::tcflag_t,
- pub c_lflag: ::tcflag_t,
- pub c_line: ::cc_t,
- pub c_cc: [::cc_t; 23],
- pub c_ispeed: ::speed_t,
- pub c_ospeed: ::speed_t,
- }
-
- pub struct nlmsghdr {
- pub nlmsg_len: u32,
- pub nlmsg_type: u16,
- pub nlmsg_flags: u16,
- pub nlmsg_seq: u32,
- pub nlmsg_pid: u32,
- }
-
- pub struct nlmsgerr {
- pub error: ::c_int,
- pub msg: nlmsghdr,
- }
-
- pub struct nl_pktinfo {
- pub group: u32,
- }
-
- pub struct nl_mmap_req {
- pub nm_block_size: ::c_uint,
- pub nm_block_nr: ::c_uint,
- pub nm_frame_size: ::c_uint,
- pub nm_frame_nr: ::c_uint,
- }
-
- pub struct nl_mmap_hdr {
- pub nm_status: ::c_uint,
- pub nm_len: ::c_uint,
- pub nm_group: u32,
- pub nm_pid: u32,
- pub nm_uid: u32,
- pub nm_gid: u32,
- }
-
- pub struct nlattr {
- pub nla_len: u16,
- pub nla_type: u16,
- }
-}
-
-pub const MS_RMT_MASK: ::c_ulong = 0x02800051;
-
-pub const SFD_CLOEXEC: ::c_int = 0x080000;
-
-pub const NCCS: usize = 32;
-
-pub const O_TRUNC: ::c_int = 512;
-
-pub const O_NOATIME: ::c_int = 0o1000000;
-pub const O_CLOEXEC: ::c_int = 0x80000;
-pub const O_PATH: ::c_int = 0o10000000;
-pub const O_TMPFILE: ::c_int = 0o20000000 | O_DIRECTORY;
-
-pub const EBFONT: ::c_int = 59;
-pub const ENOSTR: ::c_int = 60;
-pub const ENODATA: ::c_int = 61;
-pub const ETIME: ::c_int = 62;
-pub const ENOSR: ::c_int = 63;
-pub const ENONET: ::c_int = 64;
-pub const ENOPKG: ::c_int = 65;
-pub const EREMOTE: ::c_int = 66;
-pub const ENOLINK: ::c_int = 67;
-pub const EADV: ::c_int = 68;
-pub const ESRMNT: ::c_int = 69;
-pub const ECOMM: ::c_int = 70;
-pub const EPROTO: ::c_int = 71;
-pub const EDOTDOT: ::c_int = 73;
-
-pub const SA_NODEFER: ::c_int = 0x40000000;
-pub const SA_RESETHAND: ::c_int = 0x80000000;
-pub const SA_RESTART: ::c_int = 0x10000000;
-pub const SA_NOCLDSTOP: ::c_int = 0x00000001;
-
-pub const EPOLL_CLOEXEC: ::c_int = 0x80000;
-
-pub const EFD_CLOEXEC: ::c_int = 0x80000;
-
-pub const BUFSIZ: ::c_uint = 8192;
-pub const TMP_MAX: ::c_uint = 238328;
-pub const FOPEN_MAX: ::c_uint = 16;
-pub const POSIX_FADV_DONTNEED: ::c_int = 4;
-pub const POSIX_FADV_NOREUSE: ::c_int = 5;
-pub const POSIX_MADV_DONTNEED: ::c_int = 4;
-pub const _SC_EQUIV_CLASS_MAX: ::c_int = 41;
-pub const _SC_CHARCLASS_NAME_MAX: ::c_int = 45;
-pub const _SC_PII: ::c_int = 53;
-pub const _SC_PII_XTI: ::c_int = 54;
-pub const _SC_PII_SOCKET: ::c_int = 55;
-pub const _SC_PII_INTERNET: ::c_int = 56;
-pub const _SC_PII_OSI: ::c_int = 57;
-pub const _SC_POLL: ::c_int = 58;
-pub const _SC_SELECT: ::c_int = 59;
-pub const _SC_PII_INTERNET_STREAM: ::c_int = 61;
-pub const _SC_PII_INTERNET_DGRAM: ::c_int = 62;
-pub const _SC_PII_OSI_COTS: ::c_int = 63;
-pub const _SC_PII_OSI_CLTS: ::c_int = 64;
-pub const _SC_PII_OSI_M: ::c_int = 65;
-pub const _SC_T_IOV_MAX: ::c_int = 66;
-pub const _SC_2_C_VERSION: ::c_int = 96;
-pub const _SC_CHAR_BIT: ::c_int = 101;
-pub const _SC_CHAR_MAX: ::c_int = 102;
-pub const _SC_CHAR_MIN: ::c_int = 103;
-pub const _SC_INT_MAX: ::c_int = 104;
-pub const _SC_INT_MIN: ::c_int = 105;
-pub const _SC_LONG_BIT: ::c_int = 106;
-pub const _SC_WORD_BIT: ::c_int = 107;
-pub const _SC_MB_LEN_MAX: ::c_int = 108;
-pub const _SC_SSIZE_MAX: ::c_int = 110;
-pub const _SC_SCHAR_MAX: ::c_int = 111;
-pub const _SC_SCHAR_MIN: ::c_int = 112;
-pub const _SC_SHRT_MAX: ::c_int = 113;
-pub const _SC_SHRT_MIN: ::c_int = 114;
-pub const _SC_UCHAR_MAX: ::c_int = 115;
-pub const _SC_UINT_MAX: ::c_int = 116;
-pub const _SC_ULONG_MAX: ::c_int = 117;
-pub const _SC_USHRT_MAX: ::c_int = 118;
-pub const _SC_NL_ARGMAX: ::c_int = 119;
-pub const _SC_NL_LANGMAX: ::c_int = 120;
-pub const _SC_NL_MSGMAX: ::c_int = 121;
-pub const _SC_NL_NMAX: ::c_int = 122;
-pub const _SC_NL_SETMAX: ::c_int = 123;
-pub const _SC_NL_TEXTMAX: ::c_int = 124;
-pub const _SC_BASE: ::c_int = 134;
-pub const _SC_C_LANG_SUPPORT: ::c_int = 135;
-pub const _SC_C_LANG_SUPPORT_R: ::c_int = 136;
-pub const _SC_DEVICE_IO: ::c_int = 140;
-pub const _SC_DEVICE_SPECIFIC: ::c_int = 141;
-pub const _SC_DEVICE_SPECIFIC_R: ::c_int = 142;
-pub const _SC_FD_MGMT: ::c_int = 143;
-pub const _SC_FIFO: ::c_int = 144;
-pub const _SC_PIPE: ::c_int = 145;
-pub const _SC_FILE_ATTRIBUTES: ::c_int = 146;
-pub const _SC_FILE_LOCKING: ::c_int = 147;
-pub const _SC_FILE_SYSTEM: ::c_int = 148;
-pub const _SC_MULTI_PROCESS: ::c_int = 150;
-pub const _SC_SINGLE_PROCESS: ::c_int = 151;
-pub const _SC_NETWORKING: ::c_int = 152;
-pub const _SC_REGEX_VERSION: ::c_int = 156;
-pub const _SC_SIGNALS: ::c_int = 158;
-pub const _SC_SYSTEM_DATABASE: ::c_int = 162;
-pub const _SC_SYSTEM_DATABASE_R: ::c_int = 163;
-pub const _SC_USER_GROUPS: ::c_int = 166;
-pub const _SC_USER_GROUPS_R: ::c_int = 167;
-pub const _SC_LEVEL1_ICACHE_SIZE: ::c_int = 185;
-pub const _SC_LEVEL1_ICACHE_ASSOC: ::c_int = 186;
-pub const _SC_LEVEL1_ICACHE_LINESIZE: ::c_int = 187;
-pub const _SC_LEVEL1_DCACHE_SIZE: ::c_int = 188;
-pub const _SC_LEVEL1_DCACHE_ASSOC: ::c_int = 189;
-pub const _SC_LEVEL1_DCACHE_LINESIZE: ::c_int = 190;
-pub const _SC_LEVEL2_CACHE_SIZE: ::c_int = 191;
-pub const _SC_LEVEL2_CACHE_ASSOC: ::c_int = 192;
-pub const _SC_LEVEL2_CACHE_LINESIZE: ::c_int = 193;
-pub const _SC_LEVEL3_CACHE_SIZE: ::c_int = 194;
-pub const _SC_LEVEL3_CACHE_ASSOC: ::c_int = 195;
-pub const _SC_LEVEL3_CACHE_LINESIZE: ::c_int = 196;
-pub const _SC_LEVEL4_CACHE_SIZE: ::c_int = 197;
-pub const _SC_LEVEL4_CACHE_ASSOC: ::c_int = 198;
-pub const _SC_LEVEL4_CACHE_LINESIZE: ::c_int = 199;
-pub const O_ACCMODE: ::c_int = 3;
-pub const O_DIRECT: ::c_int = 0x8000;
-pub const O_DIRECTORY: ::c_int = 0x10000;
-pub const O_NOFOLLOW: ::c_int = 0x20000;
-pub const ST_RELATIME: ::c_ulong = 4096;
-pub const NI_MAXHOST: ::socklen_t = 1025;
-
-pub const RLIMIT_NOFILE: ::c_int = 5;
-pub const RLIMIT_AS: ::c_int = 6;
-pub const RLIMIT_RSS: ::c_int = 7;
-pub const RLIMIT_NPROC: ::c_int = 8;
-pub const RLIMIT_MEMLOCK: ::c_int = 9;
-pub const RLIMIT_NLIMITS: ::c_int = 16;
-
-pub const O_APPEND: ::c_int = 8;
-pub const O_CREAT: ::c_int = 256;
-pub const O_EXCL: ::c_int = 1024;
-pub const O_NOCTTY: ::c_int = 2048;
-pub const O_NONBLOCK: ::c_int = 128;
-pub const O_SYNC: ::c_int = 0x4010;
-pub const O_RSYNC: ::c_int = 0x4010;
-pub const O_DSYNC: ::c_int = 0x10;
-pub const O_FSYNC: ::c_int = 0x4010;
-pub const O_ASYNC: ::c_int = 0x1000;
-pub const O_NDELAY: ::c_int = 0x80;
-
-pub const SOCK_NONBLOCK: ::c_int = 128;
-
-pub const EDEADLK: ::c_int = 45;
-pub const ENAMETOOLONG: ::c_int = 78;
-pub const ENOLCK: ::c_int = 46;
-pub const ENOSYS: ::c_int = 89;
-pub const ENOTEMPTY: ::c_int = 93;
-pub const ELOOP: ::c_int = 90;
-pub const ENOMSG: ::c_int = 35;
-pub const EIDRM: ::c_int = 36;
-pub const ECHRNG: ::c_int = 37;
-pub const EL2NSYNC: ::c_int = 38;
-pub const EL3HLT: ::c_int = 39;
-pub const EL3RST: ::c_int = 40;
-pub const ELNRNG: ::c_int = 41;
-pub const EUNATCH: ::c_int = 42;
-pub const ENOCSI: ::c_int = 43;
-pub const EL2HLT: ::c_int = 44;
-pub const EBADE: ::c_int = 50;
-pub const EBADR: ::c_int = 51;
-pub const EXFULL: ::c_int = 52;
-pub const ENOANO: ::c_int = 53;
-pub const EBADRQC: ::c_int = 54;
-pub const EBADSLT: ::c_int = 55;
-pub const EDEADLOCK: ::c_int = 56;
-pub const EMULTIHOP: ::c_int = 74;
-pub const EOVERFLOW: ::c_int = 79;
-pub const ENOTUNIQ: ::c_int = 80;
-pub const EBADFD: ::c_int = 81;
-pub const EBADMSG: ::c_int = 77;
-pub const EREMCHG: ::c_int = 82;
-pub const ELIBACC: ::c_int = 83;
-pub const ELIBBAD: ::c_int = 84;
-pub const ELIBSCN: ::c_int = 85;
-pub const ELIBMAX: ::c_int = 86;
-pub const ELIBEXEC: ::c_int = 87;
-pub const EILSEQ: ::c_int = 88;
-pub const ERESTART: ::c_int = 91;
-pub const ESTRPIPE: ::c_int = 92;
-pub const EUSERS: ::c_int = 94;
-pub const ENOTSOCK: ::c_int = 95;
-pub const EDESTADDRREQ: ::c_int = 96;
-pub const EMSGSIZE: ::c_int = 97;
-pub const EPROTOTYPE: ::c_int = 98;
-pub const ENOPROTOOPT: ::c_int = 99;
-pub const EPROTONOSUPPORT: ::c_int = 120;
-pub const ESOCKTNOSUPPORT: ::c_int = 121;
-pub const EOPNOTSUPP: ::c_int = 122;
-pub const ENOTSUP: ::c_int = EOPNOTSUPP;
-pub const EPFNOSUPPORT: ::c_int = 123;
-pub const EAFNOSUPPORT: ::c_int = 124;
-pub const EADDRINUSE: ::c_int = 125;
-pub const EADDRNOTAVAIL: ::c_int = 126;
-pub const ENETDOWN: ::c_int = 127;
-pub const ENETUNREACH: ::c_int = 128;
-pub const ENETRESET: ::c_int = 129;
-pub const ECONNABORTED: ::c_int = 130;
-pub const ECONNRESET: ::c_int = 131;
-pub const ENOBUFS: ::c_int = 132;
-pub const EISCONN: ::c_int = 133;
-pub const ENOTCONN: ::c_int = 134;
-pub const ESHUTDOWN: ::c_int = 143;
-pub const ETOOMANYREFS: ::c_int = 144;
-pub const ETIMEDOUT: ::c_int = 145;
-pub const ECONNREFUSED: ::c_int = 146;
-pub const EHOSTDOWN: ::c_int = 147;
-pub const EHOSTUNREACH: ::c_int = 148;
-pub const EALREADY: ::c_int = 149;
-pub const EINPROGRESS: ::c_int = 150;
-pub const ESTALE: ::c_int = 151;
-pub const EUCLEAN: ::c_int = 135;
-pub const ENOTNAM: ::c_int = 137;
-pub const ENAVAIL: ::c_int = 138;
-pub const EISNAM: ::c_int = 139;
-pub const EREMOTEIO: ::c_int = 140;
-pub const EDQUOT: ::c_int = 1133;
-pub const ENOMEDIUM: ::c_int = 159;
-pub const EMEDIUMTYPE: ::c_int = 160;
-pub const ECANCELED: ::c_int = 158;
-pub const ENOKEY: ::c_int = 161;
-pub const EKEYEXPIRED: ::c_int = 162;
-pub const EKEYREVOKED: ::c_int = 163;
-pub const EKEYREJECTED: ::c_int = 164;
-pub const EOWNERDEAD: ::c_int = 165;
-pub const ENOTRECOVERABLE: ::c_int = 166;
-pub const ERFKILL: ::c_int = 167;
-
-pub const LC_PAPER: ::c_int = 7;
-pub const LC_NAME: ::c_int = 8;
-pub const LC_ADDRESS: ::c_int = 9;
-pub const LC_TELEPHONE: ::c_int = 10;
-pub const LC_MEASUREMENT: ::c_int = 11;
-pub const LC_IDENTIFICATION: ::c_int = 12;
-pub const LC_PAPER_MASK: ::c_int = (1 << LC_PAPER);
-pub const LC_NAME_MASK: ::c_int = (1 << LC_NAME);
-pub const LC_ADDRESS_MASK: ::c_int = (1 << LC_ADDRESS);
-pub const LC_TELEPHONE_MASK: ::c_int = (1 << LC_TELEPHONE);
-pub const LC_MEASUREMENT_MASK: ::c_int = (1 << LC_MEASUREMENT);
-pub const LC_IDENTIFICATION_MASK: ::c_int = (1 << LC_IDENTIFICATION);
-pub const LC_ALL_MASK: ::c_int = ::LC_CTYPE_MASK
- | ::LC_NUMERIC_MASK
- | ::LC_TIME_MASK
- | ::LC_COLLATE_MASK
- | ::LC_MONETARY_MASK
- | ::LC_MESSAGES_MASK
- | LC_PAPER_MASK
- | LC_NAME_MASK
- | LC_ADDRESS_MASK
- | LC_TELEPHONE_MASK
- | LC_MEASUREMENT_MASK
- | LC_IDENTIFICATION_MASK;
-
-pub const MAP_NORESERVE: ::c_int = 0x400;
-pub const MAP_ANON: ::c_int = 0x800;
-pub const MAP_ANONYMOUS: ::c_int = 0x800;
-pub const MAP_GROWSDOWN: ::c_int = 0x1000;
-pub const MAP_DENYWRITE: ::c_int = 0x2000;
-pub const MAP_EXECUTABLE: ::c_int = 0x4000;
-pub const MAP_LOCKED: ::c_int = 0x8000;
-pub const MAP_POPULATE: ::c_int = 0x10000;
-pub const MAP_NONBLOCK: ::c_int = 0x20000;
-pub const MAP_STACK: ::c_int = 0x40000;
-pub const MAP_SHARED_VALIDATE: ::c_int = 0x3;
-pub const MAP_FIXED_NOREPLACE: ::c_int = 0x100000;
-
-pub const SOCK_STREAM: ::c_int = 2;
-pub const SOCK_DGRAM: ::c_int = 1;
-pub const SOCK_SEQPACKET: ::c_int = 5;
-pub const SOCK_DCCP: ::c_int = 6;
-pub const SOCK_PACKET: ::c_int = 10;
-
-pub const SOL_SOCKET: ::c_int = 0xffff;
-
-pub const SO_REUSEADDR: ::c_int = 0x0004;
-pub const SO_KEEPALIVE: ::c_int = 0x0008;
-pub const SO_DONTROUTE: ::c_int = 0x0010;
-pub const SO_BROADCAST: ::c_int = 0x0020;
-pub const SO_LINGER: ::c_int = 0x0080;
-pub const SO_OOBINLINE: ::c_int = 0x0100;
-pub const SO_REUSEPORT: ::c_int = 0x0200;
-pub const SO_TYPE: ::c_int = 0x1008;
-pub const SO_STYLE: ::c_int = SO_TYPE;
-pub const SO_ERROR: ::c_int = 0x1007;
-pub const SO_SNDBUF: ::c_int = 0x1001;
-pub const SO_RCVBUF: ::c_int = 0x1002;
-pub const SO_SNDLOWAT: ::c_int = 0x1003;
-pub const SO_RCVLOWAT: ::c_int = 0x1004;
-pub const SO_SNDTIMEO: ::c_int = 0x1005;
-pub const SO_RCVTIMEO: ::c_int = 0x1006;
-pub const SO_ACCEPTCONN: ::c_int = 0x1009;
-pub const SO_PROTOCOL: ::c_int = 0x1028;
-pub const SO_DOMAIN: ::c_int = 0x1029;
-pub const SO_NO_CHECK: ::c_int = 11;
-pub const SO_PRIORITY: ::c_int = 12;
-pub const SO_BSDCOMPAT: ::c_int = 14;
-pub const SO_PASSCRED: ::c_int = 17;
-pub const SO_PEERCRED: ::c_int = 18;
-pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
-pub const SO_BINDTODEVICE: ::c_int = 25;
-pub const SO_ATTACH_FILTER: ::c_int = 26;
-pub const SO_DETACH_FILTER: ::c_int = 27;
-pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER;
-pub const SO_PEERNAME: ::c_int = 28;
-pub const SO_TIMESTAMP: ::c_int = 29;
-pub const SO_PEERSEC: ::c_int = 30;
-pub const SO_SNDBUFFORCE: ::c_int = 31;
-pub const SO_RCVBUFFORCE: ::c_int = 33;
-pub const SO_PASSSEC: ::c_int = 34;
-pub const SO_TIMESTAMPNS: ::c_int = 35;
-pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS;
-pub const SO_MARK: ::c_int = 36;
-pub const SO_RXQ_OVFL: ::c_int = 40;
-pub const SO_WIFI_STATUS: ::c_int = 41;
-pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS;
-pub const SO_PEEK_OFF: ::c_int = 42;
-pub const SO_NOFCS: ::c_int = 43;
-pub const SO_LOCK_FILTER: ::c_int = 44;
-pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
-pub const SO_BUSY_POLL: ::c_int = 46;
-pub const SO_MAX_PACING_RATE: ::c_int = 47;
-pub const SO_BPF_EXTENSIONS: ::c_int = 48;
-pub const SO_INCOMING_CPU: ::c_int = 49;
-pub const SO_ATTACH_BPF: ::c_int = 50;
-pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER;
-
-/* DCCP socket options */
-pub const DCCP_SOCKOPT_PACKET_SIZE: ::c_int = 1;
-pub const DCCP_SOCKOPT_SERVICE: ::c_int = 2;
-pub const DCCP_SOCKOPT_CHANGE_L: ::c_int = 3;
-pub const DCCP_SOCKOPT_CHANGE_R: ::c_int = 4;
-pub const DCCP_SOCKOPT_GET_CUR_MPS: ::c_int = 5;
-pub const DCCP_SOCKOPT_SERVER_TIMEWAIT: ::c_int = 6;
-pub const DCCP_SOCKOPT_SEND_CSCOV: ::c_int = 10;
-pub const DCCP_SOCKOPT_RECV_CSCOV: ::c_int = 11;
-pub const DCCP_SOCKOPT_AVAILABLE_CCIDS: ::c_int = 12;
-pub const DCCP_SOCKOPT_CCID: ::c_int = 13;
-pub const DCCP_SOCKOPT_TX_CCID: ::c_int = 14;
-pub const DCCP_SOCKOPT_RX_CCID: ::c_int = 15;
-pub const DCCP_SOCKOPT_QPOLICY_ID: ::c_int = 16;
-pub const DCCP_SOCKOPT_QPOLICY_TXQLEN: ::c_int = 17;
-pub const DCCP_SOCKOPT_CCID_RX_INFO: ::c_int = 128;
-pub const DCCP_SOCKOPT_CCID_TX_INFO: ::c_int = 192;
-
-/// maximum number of services provided on the same listening port
-pub const DCCP_SERVICE_LIST_MAX_LEN: ::c_int = 32;
-
-pub const FIOCLEX: ::c_ulong = 0x6601;
-pub const FIONBIO: ::c_ulong = 0x667e;
-
-pub const SA_ONSTACK: ::c_int = 0x08000000;
-pub const SA_SIGINFO: ::c_int = 0x00000008;
-pub const SA_NOCLDWAIT: ::c_int = 0x00010000;
-
-pub const SIGCHLD: ::c_int = 18;
-pub const SIGBUS: ::c_int = 10;
-pub const SIGTTIN: ::c_int = 26;
-pub const SIGTTOU: ::c_int = 27;
-pub const SIGXCPU: ::c_int = 30;
-pub const SIGXFSZ: ::c_int = 31;
-pub const SIGVTALRM: ::c_int = 28;
-pub const SIGPROF: ::c_int = 29;
-pub const SIGWINCH: ::c_int = 20;
-pub const SIGUSR1: ::c_int = 16;
-pub const SIGUSR2: ::c_int = 17;
-pub const SIGCONT: ::c_int = 25;
-pub const SIGSTOP: ::c_int = 23;
-pub const SIGTSTP: ::c_int = 24;
-pub const SIGURG: ::c_int = 21;
-pub const SIGIO: ::c_int = 22;
-pub const SIGSYS: ::c_int = 12;
-pub const SIGPOLL: ::c_int = 22;
-pub const SIGPWR: ::c_int = 19;
-pub const SIG_SETMASK: ::c_int = 3;
-pub const SIG_BLOCK: ::c_int = 0x1;
-pub const SIG_UNBLOCK: ::c_int = 0x2;
-
-pub const POLLWRNORM: ::c_short = 0x004;
-pub const POLLWRBAND: ::c_short = 0x100;
-
-pub const PTHREAD_STACK_MIN: ::size_t = 131072;
-pub const PTHREAD_MUTEX_ADAPTIVE_NP: ::c_int = 3;
-
-pub const ADFS_SUPER_MAGIC: ::c_long = 0x0000adf5;
-pub const AFFS_SUPER_MAGIC: ::c_long = 0x0000adff;
-pub const CODA_SUPER_MAGIC: ::c_long = 0x73757245;
-pub const CRAMFS_MAGIC: ::c_long = 0x28cd3d45;
-pub const EFS_SUPER_MAGIC: ::c_long = 0x00414a53;
-pub const EXT2_SUPER_MAGIC: ::c_long = 0x0000ef53;
-pub const EXT3_SUPER_MAGIC: ::c_long = 0x0000ef53;
-pub const EXT4_SUPER_MAGIC: ::c_long = 0x0000ef53;
-pub const HPFS_SUPER_MAGIC: ::c_long = 0xf995e849;
-pub const HUGETLBFS_MAGIC: ::c_long = 0x958458f6;
-pub const ISOFS_SUPER_MAGIC: ::c_long = 0x00009660;
-pub const JFFS2_SUPER_MAGIC: ::c_long = 0x000072b6;
-pub const MINIX_SUPER_MAGIC: ::c_long = 0x0000137f;
-pub const MINIX_SUPER_MAGIC2: ::c_long = 0x0000138f;
-pub const MINIX2_SUPER_MAGIC: ::c_long = 0x00002468;
-pub const MINIX2_SUPER_MAGIC2: ::c_long = 0x00002478;
-pub const MSDOS_SUPER_MAGIC: ::c_long = 0x00004d44;
-pub const NCP_SUPER_MAGIC: ::c_long = 0x0000564c;
-pub const NFS_SUPER_MAGIC: ::c_long = 0x00006969;
-pub const OPENPROM_SUPER_MAGIC: ::c_long = 0x00009fa1;
-pub const PROC_SUPER_MAGIC: ::c_long = 0x00009fa0;
-pub const QNX4_SUPER_MAGIC: ::c_long = 0x0000002f;
-pub const REISERFS_SUPER_MAGIC: ::c_long = 0x52654973;
-pub const SMB_SUPER_MAGIC: ::c_long = 0x0000517b;
-pub const TMPFS_MAGIC: ::c_long = 0x01021994;
-pub const USBDEVICE_SUPER_MAGIC: ::c_long = 0x00009fa2;
-
-pub const VEOF: usize = 16;
-pub const VEOL: usize = 17;
-pub const VEOL2: usize = 6;
-pub const VMIN: usize = 4;
-pub const IEXTEN: ::tcflag_t = 0x00000100;
-pub const TOSTOP: ::tcflag_t = 0x00008000;
-pub const FLUSHO: ::tcflag_t = 0x00002000;
-pub const EXTPROC: ::tcflag_t = 0o200000;
-pub const TCSANOW: ::c_int = 0x540e;
-pub const TCSADRAIN: ::c_int = 0x540f;
-pub const TCSAFLUSH: ::c_int = 0x5410;
-
-pub const CPU_SETSIZE: ::c_int = 0x400;
-
-pub const PTRACE_TRACEME: ::c_uint = 0;
-pub const PTRACE_PEEKTEXT: ::c_uint = 1;
-pub const PTRACE_PEEKDATA: ::c_uint = 2;
-pub const PTRACE_PEEKUSER: ::c_uint = 3;
-pub const PTRACE_POKETEXT: ::c_uint = 4;
-pub const PTRACE_POKEDATA: ::c_uint = 5;
-pub const PTRACE_POKEUSER: ::c_uint = 6;
-pub const PTRACE_CONT: ::c_uint = 7;
-pub const PTRACE_KILL: ::c_uint = 8;
-pub const PTRACE_SINGLESTEP: ::c_uint = 9;
-pub const PTRACE_ATTACH: ::c_uint = 16;
-pub const PTRACE_DETACH: ::c_uint = 17;
-pub const PTRACE_SYSCALL: ::c_uint = 24;
-pub const PTRACE_SETOPTIONS: ::c_uint = 0x4200;
-pub const PTRACE_GETEVENTMSG: ::c_uint = 0x4201;
-pub const PTRACE_GETSIGINFO: ::c_uint = 0x4202;
-pub const PTRACE_SETSIGINFO: ::c_uint = 0x4203;
-pub const PTRACE_GETFPREGS: ::c_uint = 14;
-pub const PTRACE_SETFPREGS: ::c_uint = 15;
-pub const PTRACE_GETFPXREGS: ::c_uint = 18;
-pub const PTRACE_SETFPXREGS: ::c_uint = 19;
-pub const PTRACE_GETREGS: ::c_uint = 12;
-pub const PTRACE_SETREGS: ::c_uint = 13;
-
-pub const MAP_HUGETLB: ::c_int = 0x080000;
-
-pub const EFD_NONBLOCK: ::c_int = 0x80;
-
-pub const F_RDLCK: ::c_int = 0;
-pub const F_WRLCK: ::c_int = 1;
-pub const F_UNLCK: ::c_int = 2;
-pub const F_GETLK: ::c_int = 14;
-pub const F_GETOWN: ::c_int = 23;
-pub const F_SETOWN: ::c_int = 24;
-pub const F_SETLK: ::c_int = 6;
-pub const F_SETLKW: ::c_int = 7;
-
-pub const SFD_NONBLOCK: ::c_int = 0x80;
-
-pub const TCGETS: ::c_ulong = 0x540d;
-pub const TCSETS: ::c_ulong = 0x540e;
-pub const TCSETSW: ::c_ulong = 0x540f;
-pub const TCSETSF: ::c_ulong = 0x5410;
-pub const TCGETA: ::c_ulong = 0x5401;
-pub const TCSETA: ::c_ulong = 0x5402;
-pub const TCSETAW: ::c_ulong = 0x5403;
-pub const TCSETAF: ::c_ulong = 0x5404;
-pub const TCSBRK: ::c_ulong = 0x5405;
-pub const TCXONC: ::c_ulong = 0x5406;
-pub const TCFLSH: ::c_ulong = 0x5407;
-pub const TIOCGSOFTCAR: ::c_ulong = 0x5481;
-pub const TIOCSSOFTCAR: ::c_ulong = 0x5482;
-pub const TIOCINQ: ::c_ulong = 0x467f;
-pub const TIOCLINUX: ::c_ulong = 0x5483;
-pub const TIOCGSERIAL: ::c_ulong = 0x5484;
-pub const TIOCEXCL: ::c_ulong = 0x740d;
-pub const TIOCNXCL: ::c_ulong = 0x740e;
-pub const TIOCSCTTY: ::c_ulong = 0x5480;
-pub const TIOCGPGRP: ::c_ulong = 0x40047477;
-pub const TIOCSPGRP: ::c_ulong = 0x80047476;
-pub const TIOCOUTQ: ::c_ulong = 0x7472;
-pub const TIOCSTI: ::c_ulong = 0x5472;
-pub const TIOCGWINSZ: ::c_ulong = 0x40087468;
-pub const TIOCSWINSZ: ::c_ulong = 0x80087467;
-pub const TIOCMGET: ::c_ulong = 0x741d;
-pub const TIOCMBIS: ::c_ulong = 0x741b;
-pub const TIOCMBIC: ::c_ulong = 0x741c;
-pub const TIOCMSET: ::c_ulong = 0x741a;
-pub const FIONREAD: ::c_ulong = 0x467f;
-pub const TIOCCONS: ::c_ulong = 0x80047478;
-
-pub const RTLD_DEEPBIND: ::c_int = 0x10;
-pub const RTLD_GLOBAL: ::c_int = 0x4;
-pub const RTLD_NOLOAD: ::c_int = 0x8;
-
-pub const LINUX_REBOOT_MAGIC1: ::c_int = 0xfee1dead;
-pub const LINUX_REBOOT_MAGIC2: ::c_int = 672274793;
-pub const LINUX_REBOOT_MAGIC2A: ::c_int = 85072278;
-pub const LINUX_REBOOT_MAGIC2B: ::c_int = 369367448;
-pub const LINUX_REBOOT_MAGIC2C: ::c_int = 537993216;
-
-pub const LINUX_REBOOT_CMD_RESTART: ::c_int = 0x01234567;
-pub const LINUX_REBOOT_CMD_HALT: ::c_int = 0xCDEF0123;
-pub const LINUX_REBOOT_CMD_CAD_ON: ::c_int = 0x89ABCDEF;
-pub const LINUX_REBOOT_CMD_CAD_OFF: ::c_int = 0x00000000;
-pub const LINUX_REBOOT_CMD_POWER_OFF: ::c_int = 0x4321FEDC;
-pub const LINUX_REBOOT_CMD_RESTART2: ::c_int = 0xA1B2C3D4;
-pub const LINUX_REBOOT_CMD_SW_SUSPEND: ::c_int = 0xD000FCE2;
-pub const LINUX_REBOOT_CMD_KEXEC: ::c_int = 0x45584543;
-
-pub const MCL_CURRENT: ::c_int = 0x0001;
-pub const MCL_FUTURE: ::c_int = 0x0002;
-
-pub const SIGSTKSZ: ::size_t = 8192;
-pub const MINSIGSTKSZ: ::size_t = 2048;
-pub const CBAUD: ::tcflag_t = 0o0010017;
-pub const TAB1: ::tcflag_t = 0x00000800;
-pub const TAB2: ::tcflag_t = 0x00001000;
-pub const TAB3: ::tcflag_t = 0x00001800;
-pub const CR1: ::tcflag_t = 0x00000200;
-pub const CR2: ::tcflag_t = 0x00000400;
-pub const CR3: ::tcflag_t = 0x00000600;
-pub const FF1: ::tcflag_t = 0x00008000;
-pub const BS1: ::tcflag_t = 0x00002000;
-pub const VT1: ::tcflag_t = 0x00004000;
-pub const VWERASE: usize = 14;
-pub const VREPRINT: usize = 12;
-pub const VSUSP: usize = 10;
-pub const VSTART: usize = 8;
-pub const VSTOP: usize = 9;
-pub const VDISCARD: usize = 13;
-pub const VTIME: usize = 5;
-pub const IXON: ::tcflag_t = 0x00000400;
-pub const IXOFF: ::tcflag_t = 0x00001000;
-pub const ONLCR: ::tcflag_t = 0x4;
-pub const CSIZE: ::tcflag_t = 0x00000030;
-pub const CS6: ::tcflag_t = 0x00000010;
-pub const CS7: ::tcflag_t = 0x00000020;
-pub const CS8: ::tcflag_t = 0x00000030;
-pub const CSTOPB: ::tcflag_t = 0x00000040;
-pub const CREAD: ::tcflag_t = 0x00000080;
-pub const PARENB: ::tcflag_t = 0x00000100;
-pub const PARODD: ::tcflag_t = 0x00000200;
-pub const HUPCL: ::tcflag_t = 0x00000400;
-pub const CLOCAL: ::tcflag_t = 0x00000800;
-pub const ECHOKE: ::tcflag_t = 0x00000800;
-pub const ECHOE: ::tcflag_t = 0x00000010;
-pub const ECHOK: ::tcflag_t = 0x00000020;
-pub const ECHONL: ::tcflag_t = 0x00000040;
-pub const ECHOPRT: ::tcflag_t = 0x00000400;
-pub const ECHOCTL: ::tcflag_t = 0x00000200;
-pub const ISIG: ::tcflag_t = 0x00000001;
-pub const ICANON: ::tcflag_t = 0x00000002;
-pub const PENDIN: ::tcflag_t = 0x00004000;
-pub const NOFLSH: ::tcflag_t = 0x00000080;
-pub const CIBAUD: ::tcflag_t = 0o02003600000;
-pub const CBAUDEX: ::tcflag_t = 0o010000;
-pub const VSWTC: usize = 7;
-pub const OLCUC: ::tcflag_t = 0o000002;
-pub const NLDLY: ::tcflag_t = 0o000400;
-pub const CRDLY: ::tcflag_t = 0o003000;
-pub const TABDLY: ::tcflag_t = 0o014000;
-pub const BSDLY: ::tcflag_t = 0o020000;
-pub const FFDLY: ::tcflag_t = 0o100000;
-pub const VTDLY: ::tcflag_t = 0o040000;
-pub const XTABS: ::tcflag_t = 0o014000;
-
-pub const B0: ::speed_t = 0o000000;
-pub const B50: ::speed_t = 0o000001;
-pub const B75: ::speed_t = 0o000002;
-pub const B110: ::speed_t = 0o000003;
-pub const B134: ::speed_t = 0o000004;
-pub const B150: ::speed_t = 0o000005;
-pub const B200: ::speed_t = 0o000006;
-pub const B300: ::speed_t = 0o000007;
-pub const B600: ::speed_t = 0o000010;
-pub const B1200: ::speed_t = 0o000011;
-pub const B1800: ::speed_t = 0o000012;
-pub const B2400: ::speed_t = 0o000013;
-pub const B4800: ::speed_t = 0o000014;
-pub const B9600: ::speed_t = 0o000015;
-pub const B19200: ::speed_t = 0o000016;
-pub const B38400: ::speed_t = 0o000017;
-pub const EXTA: ::speed_t = B19200;
-pub const EXTB: ::speed_t = B38400;
-pub const BOTHER: ::speed_t = 0o010000;
-pub const B57600: ::speed_t = 0o010001;
-pub const B115200: ::speed_t = 0o010002;
-pub const B230400: ::speed_t = 0o010003;
-pub const B460800: ::speed_t = 0o010004;
-pub const B500000: ::speed_t = 0o010005;
-pub const B576000: ::speed_t = 0o010006;
-pub const B921600: ::speed_t = 0o010007;
-pub const B1000000: ::speed_t = 0o010010;
-pub const B1152000: ::speed_t = 0o010011;
-pub const B1500000: ::speed_t = 0o010012;
-pub const B2000000: ::speed_t = 0o010013;
-pub const B2500000: ::speed_t = 0o010014;
-pub const B3000000: ::speed_t = 0o010015;
-pub const B3500000: ::speed_t = 0o010016;
-pub const B4000000: ::speed_t = 0o010017;
-
-pub const TIOCM_LE: ::c_int = 0x001;
-pub const TIOCM_DTR: ::c_int = 0x002;
-pub const TIOCM_RTS: ::c_int = 0x004;
-pub const TIOCM_ST: ::c_int = 0x010;
-pub const TIOCM_SR: ::c_int = 0x020;
-pub const TIOCM_CTS: ::c_int = 0x040;
-pub const TIOCM_CAR: ::c_int = 0x100;
-pub const TIOCM_CD: ::c_int = TIOCM_CAR;
-pub const TIOCM_RNG: ::c_int = 0x200;
-pub const TIOCM_RI: ::c_int = TIOCM_RNG;
-pub const TIOCM_DSR: ::c_int = 0x400;
-
-pub const EHWPOISON: ::c_int = 168;
-pub const SIGEV_THREAD_ID: ::c_int = 4;
-pub const EPOLLWAKEUP: ::c_int = 0x20000000;
-
-pub const NF_NETDEV_INGRESS: ::c_int = 0;
-pub const NF_NETDEV_NUMHOOKS: ::c_int = 1;
-
-pub const NFPROTO_INET: ::c_int = 1;
-pub const NFPROTO_NETDEV: ::c_int = 5;
-
-pub const NLA_ALIGNTO: ::c_int = 4;
-
-pub const GENL_UNS_ADMIN_PERM: ::c_int = 0x10;
-
-pub const GENL_ID_VFS_DQUOT: ::c_int = ::NLMSG_MIN_TYPE + 1;
-pub const GENL_ID_PMCRAID: ::c_int = ::NLMSG_MIN_TYPE + 2;
-
-pub const NFT_TABLE_MAXNAMELEN: ::c_int = 256;
-pub const NFT_CHAIN_MAXNAMELEN: ::c_int = 256;
-pub const NFT_SET_MAXNAMELEN: ::c_int = 256;
-pub const NFT_OBJ_MAXNAMELEN: ::c_int = 256;
-pub const NFT_USERDATA_MAXLEN: ::c_int = 256;
-
-pub const NFT_REG_VERDICT: ::c_int = 0;
-pub const NFT_REG_1: ::c_int = 1;
-pub const NFT_REG_2: ::c_int = 2;
-pub const NFT_REG_3: ::c_int = 3;
-pub const NFT_REG_4: ::c_int = 4;
-pub const __NFT_REG_MAX: ::c_int = 5;
-pub const NFT_REG32_00: ::c_int = 8;
-pub const NFT_REG32_01: ::c_int = 9;
-pub const NFT_REG32_02: ::c_int = 10;
-pub const NFT_REG32_03: ::c_int = 11;
-pub const NFT_REG32_04: ::c_int = 12;
-pub const NFT_REG32_05: ::c_int = 13;
-pub const NFT_REG32_06: ::c_int = 14;
-pub const NFT_REG32_07: ::c_int = 15;
-pub const NFT_REG32_08: ::c_int = 16;
-pub const NFT_REG32_09: ::c_int = 17;
-pub const NFT_REG32_10: ::c_int = 18;
-pub const NFT_REG32_11: ::c_int = 19;
-pub const NFT_REG32_12: ::c_int = 20;
-pub const NFT_REG32_13: ::c_int = 21;
-pub const NFT_REG32_14: ::c_int = 22;
-pub const NFT_REG32_15: ::c_int = 23;
-
-pub const NFT_REG_SIZE: ::c_int = 16;
-pub const NFT_REG32_SIZE: ::c_int = 4;
-
-pub const NFT_CONTINUE: ::c_int = -1;
-pub const NFT_BREAK: ::c_int = -2;
-pub const NFT_JUMP: ::c_int = -3;
-pub const NFT_GOTO: ::c_int = -4;
-pub const NFT_RETURN: ::c_int = -5;
-
-pub const NFT_MSG_NEWTABLE: ::c_int = 0;
-pub const NFT_MSG_GETTABLE: ::c_int = 1;
-pub const NFT_MSG_DELTABLE: ::c_int = 2;
-pub const NFT_MSG_NEWCHAIN: ::c_int = 3;
-pub const NFT_MSG_GETCHAIN: ::c_int = 4;
-pub const NFT_MSG_DELCHAIN: ::c_int = 5;
-pub const NFT_MSG_NEWRULE: ::c_int = 6;
-pub const NFT_MSG_GETRULE: ::c_int = 7;
-pub const NFT_MSG_DELRULE: ::c_int = 8;
-pub const NFT_MSG_NEWSET: ::c_int = 9;
-pub const NFT_MSG_GETSET: ::c_int = 10;
-pub const NFT_MSG_DELSET: ::c_int = 11;
-pub const NFT_MSG_NEWSETELEM: ::c_int = 12;
-pub const NFT_MSG_GETSETELEM: ::c_int = 13;
-pub const NFT_MSG_DELSETELEM: ::c_int = 14;
-pub const NFT_MSG_NEWGEN: ::c_int = 15;
-pub const NFT_MSG_GETGEN: ::c_int = 16;
-pub const NFT_MSG_TRACE: ::c_int = 17;
-pub const NFT_MSG_NEWOBJ: ::c_int = 18;
-pub const NFT_MSG_GETOBJ: ::c_int = 19;
-pub const NFT_MSG_DELOBJ: ::c_int = 20;
-pub const NFT_MSG_GETOBJ_RESET: ::c_int = 21;
-pub const NFT_MSG_MAX: ::c_int = 25;
-
-pub const NFT_SET_ANONYMOUS: ::c_int = 0x1;
-pub const NFT_SET_CONSTANT: ::c_int = 0x2;
-pub const NFT_SET_INTERVAL: ::c_int = 0x4;
-pub const NFT_SET_MAP: ::c_int = 0x8;
-pub const NFT_SET_TIMEOUT: ::c_int = 0x10;
-pub const NFT_SET_EVAL: ::c_int = 0x20;
-
-pub const NFT_SET_POL_PERFORMANCE: ::c_int = 0;
-pub const NFT_SET_POL_MEMORY: ::c_int = 1;
-
-pub const NFT_SET_ELEM_INTERVAL_END: ::c_int = 0x1;
-
-pub const NFT_DATA_VALUE: ::c_uint = 0;
-pub const NFT_DATA_VERDICT: ::c_uint = 0xffffff00;
-
-pub const NFT_DATA_RESERVED_MASK: ::c_uint = 0xffffff00;
-
-pub const NFT_DATA_VALUE_MAXLEN: ::c_int = 64;
-
-pub const NFT_BYTEORDER_NTOH: ::c_int = 0;
-pub const NFT_BYTEORDER_HTON: ::c_int = 1;
-
-pub const NFT_CMP_EQ: ::c_int = 0;
-pub const NFT_CMP_NEQ: ::c_int = 1;
-pub const NFT_CMP_LT: ::c_int = 2;
-pub const NFT_CMP_LTE: ::c_int = 3;
-pub const NFT_CMP_GT: ::c_int = 4;
-pub const NFT_CMP_GTE: ::c_int = 5;
-
-pub const NFT_RANGE_EQ: ::c_int = 0;
-pub const NFT_RANGE_NEQ: ::c_int = 1;
-
-pub const NFT_LOOKUP_F_INV: ::c_int = (1 << 0);
-
-pub const NFT_DYNSET_OP_ADD: ::c_int = 0;
-pub const NFT_DYNSET_OP_UPDATE: ::c_int = 1;
-
-pub const NFT_DYNSET_F_INV: ::c_int = (1 << 0);
-
-pub const NFT_PAYLOAD_LL_HEADER: ::c_int = 0;
-pub const NFT_PAYLOAD_NETWORK_HEADER: ::c_int = 1;
-pub const NFT_PAYLOAD_TRANSPORT_HEADER: ::c_int = 2;
-
-pub const NFT_PAYLOAD_CSUM_NONE: ::c_int = 0;
-pub const NFT_PAYLOAD_CSUM_INET: ::c_int = 1;
-
-pub const NFT_META_LEN: ::c_int = 0;
-pub const NFT_META_PROTOCOL: ::c_int = 1;
-pub const NFT_META_PRIORITY: ::c_int = 2;
-pub const NFT_META_MARK: ::c_int = 3;
-pub const NFT_META_IIF: ::c_int = 4;
-pub const NFT_META_OIF: ::c_int = 5;
-pub const NFT_META_IIFNAME: ::c_int = 6;
-pub const NFT_META_OIFNAME: ::c_int = 7;
-pub const NFT_META_IIFTYPE: ::c_int = 8;
-pub const NFT_META_OIFTYPE: ::c_int = 9;
-pub const NFT_META_SKUID: ::c_int = 10;
-pub const NFT_META_SKGID: ::c_int = 11;
-pub const NFT_META_NFTRACE: ::c_int = 12;
-pub const NFT_META_RTCLASSID: ::c_int = 13;
-pub const NFT_META_SECMARK: ::c_int = 14;
-pub const NFT_META_NFPROTO: ::c_int = 15;
-pub const NFT_META_L4PROTO: ::c_int = 16;
-pub const NFT_META_BRI_IIFNAME: ::c_int = 17;
-pub const NFT_META_BRI_OIFNAME: ::c_int = 18;
-pub const NFT_META_PKTTYPE: ::c_int = 19;
-pub const NFT_META_CPU: ::c_int = 20;
-pub const NFT_META_IIFGROUP: ::c_int = 21;
-pub const NFT_META_OIFGROUP: ::c_int = 22;
-pub const NFT_META_CGROUP: ::c_int = 23;
-pub const NFT_META_PRANDOM: ::c_int = 24;
-
-pub const NFT_CT_STATE: ::c_int = 0;
-pub const NFT_CT_DIRECTION: ::c_int = 1;
-pub const NFT_CT_STATUS: ::c_int = 2;
-pub const NFT_CT_MARK: ::c_int = 3;
-pub const NFT_CT_SECMARK: ::c_int = 4;
-pub const NFT_CT_EXPIRATION: ::c_int = 5;
-pub const NFT_CT_HELPER: ::c_int = 6;
-pub const NFT_CT_L3PROTOCOL: ::c_int = 7;
-pub const NFT_CT_SRC: ::c_int = 8;
-pub const NFT_CT_DST: ::c_int = 9;
-pub const NFT_CT_PROTOCOL: ::c_int = 10;
-pub const NFT_CT_PROTO_SRC: ::c_int = 11;
-pub const NFT_CT_PROTO_DST: ::c_int = 12;
-pub const NFT_CT_LABELS: ::c_int = 13;
-pub const NFT_CT_PKTS: ::c_int = 14;
-pub const NFT_CT_BYTES: ::c_int = 15;
-
-pub const NFT_LIMIT_PKTS: ::c_int = 0;
-pub const NFT_LIMIT_PKT_BYTES: ::c_int = 1;
-
-pub const NFT_LIMIT_F_INV: ::c_int = (1 << 0);
-
-pub const NFT_QUEUE_FLAG_BYPASS: ::c_int = 0x01;
-pub const NFT_QUEUE_FLAG_CPU_FANOUT: ::c_int = 0x02;
-pub const NFT_QUEUE_FLAG_MASK: ::c_int = 0x03;
-
-pub const NFT_QUOTA_F_INV: ::c_int = (1 << 0);
-
-pub const NFT_REJECT_ICMP_UNREACH: ::c_int = 0;
-pub const NFT_REJECT_TCP_RST: ::c_int = 1;
-pub const NFT_REJECT_ICMPX_UNREACH: ::c_int = 2;
-
-pub const NFT_REJECT_ICMPX_NO_ROUTE: ::c_int = 0;
-pub const NFT_REJECT_ICMPX_PORT_UNREACH: ::c_int = 1;
-pub const NFT_REJECT_ICMPX_HOST_UNREACH: ::c_int = 2;
-pub const NFT_REJECT_ICMPX_ADMIN_PROHIBITED: ::c_int = 3;
-
-pub const NFT_NAT_SNAT: ::c_int = 0;
-pub const NFT_NAT_DNAT: ::c_int = 1;
-
-pub const NFT_TRACETYPE_UNSPEC: ::c_int = 0;
-pub const NFT_TRACETYPE_POLICY: ::c_int = 1;
-pub const NFT_TRACETYPE_RETURN: ::c_int = 2;
-pub const NFT_TRACETYPE_RULE: ::c_int = 3;
-
-pub const NFT_NG_INCREMENTAL: ::c_int = 0;
-pub const NFT_NG_RANDOM: ::c_int = 1;
-
-pub const RLIMIT_CPU: ::__rlimit_resource_t = 0;
-pub const RLIMIT_FSIZE: ::__rlimit_resource_t = 1;
-pub const RLIMIT_DATA: ::__rlimit_resource_t = 2;
-pub const RLIMIT_STACK: ::__rlimit_resource_t = 3;
-pub const RLIMIT_CORE: ::__rlimit_resource_t = 4;
-pub const RLIMIT_LOCKS: ::__rlimit_resource_t = 10;
-pub const RLIMIT_SIGPENDING: ::__rlimit_resource_t = 11;
-pub const RLIMIT_MSGQUEUE: ::__rlimit_resource_t = 12;
-pub const RLIMIT_NICE: ::__rlimit_resource_t = 13;
-pub const RLIMIT_RTPRIO: ::__rlimit_resource_t = 14;
-
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 45;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-#[allow(deprecated)]
-pub const PF_MAX: ::c_int = AF_MAX;
-
-f! {
- pub fn NLA_ALIGN(len: ::c_int) -> ::c_int {
- return ((len) + NLA_ALIGNTO - 1) & !(NLA_ALIGNTO - 1)
- }
-}
-
-#[link(name = "util")]
-extern {
- pub fn sendmmsg(sockfd: ::c_int, msgvec: *mut ::mmsghdr, vlen: ::c_uint,
- flags: ::c_int) -> ::c_int;
- pub fn recvmmsg(sockfd: ::c_int, msgvec: *mut ::mmsghdr, vlen: ::c_uint,
- flags: ::c_int, timeout: *mut ::timespec) -> ::c_int;
-
- pub fn getrlimit64(resource: ::__rlimit_resource_t,
- rlim: *mut ::rlimit64) -> ::c_int;
- pub fn setrlimit64(resource: ::__rlimit_resource_t,
- rlim: *const ::rlimit64) -> ::c_int;
- pub fn getrlimit(resource: ::__rlimit_resource_t,
- rlim: *mut ::rlimit) -> ::c_int;
- pub fn setrlimit(resource: ::__rlimit_resource_t,
- rlim: *const ::rlimit) -> ::c_int;
- pub fn prlimit(pid: ::pid_t,
- resource: ::__rlimit_resource_t, new_limit: *const ::rlimit,
- old_limit: *mut ::rlimit) -> ::c_int;
- pub fn prlimit64(pid: ::pid_t,
- resource: ::__rlimit_resource_t,
- new_limit: *const ::rlimit64,
- old_limit: *mut ::rlimit64) -> ::c_int;
- pub fn sysctl(name: *mut ::c_int,
- namelen: ::c_int,
- oldp: *mut ::c_void,
- oldlenp: *mut ::size_t,
- newp: *mut ::c_void,
- newlen: ::size_t)
- -> ::c_int;
- pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;
- pub fn backtrace(buf: *mut *mut ::c_void,
- sz: ::c_int) -> ::c_int;
- pub fn glob64(pattern: *const ::c_char,
- flags: ::c_int,
- errfunc: ::Option<extern fn(epath: *const ::c_char,
- errno: ::c_int)
- -> ::c_int>,
- pglob: *mut glob64_t) -> ::c_int;
- pub fn globfree64(pglob: *mut glob64_t);
- pub fn ptrace(request: ::c_uint, ...) -> ::c_long;
- pub fn pthread_attr_getaffinity_np(attr: *const ::pthread_attr_t,
- cpusetsize: ::size_t,
- cpuset: *mut ::cpu_set_t) -> ::c_int;
- pub fn pthread_attr_setaffinity_np(attr: *mut ::pthread_attr_t,
- cpusetsize: ::size_t,
- cpuset: *const ::cpu_set_t) -> ::c_int;
- pub fn getpriority(which: ::__priority_which_t, who: ::id_t) -> ::c_int;
- pub fn setpriority(which: ::__priority_which_t, who: ::id_t,
- prio: ::c_int) -> ::c_int;
- pub fn pthread_getaffinity_np(thread: ::pthread_t,
- cpusetsize: ::size_t,
- cpuset: *mut ::cpu_set_t) -> ::c_int;
- pub fn pthread_setaffinity_np(thread: ::pthread_t,
- cpusetsize: ::size_t,
- cpuset: *const ::cpu_set_t) -> ::c_int;
- pub fn sched_getcpu() -> ::c_int;
-}
-
-cfg_if! {
- if #[cfg(target_arch = "mips")] {
- mod mips32;
- pub use self::mips32::*;
- } else if #[cfg(target_arch = "mips64")] {
- mod mips64;
- pub use self::mips64::*;
- } else {
- // Unknown target_arch
- }
-}
-
-cfg_if! {
- if #[cfg(libc_align)] {
- mod align;
- pub use self::align::*;
- } else {
- mod no_align;
- pub use self::no_align::*;
- }
-}
diff --git a/libc/src/unix/notbsd/linux/other/align.rs b/libc/src/unix/notbsd/linux/other/align.rs
deleted file mode 100644
index 4a0e074..0000000
--- a/libc/src/unix/notbsd/linux/other/align.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-s! {
- // FIXME this is actually a union
- #[cfg_attr(target_pointer_width = "32",
- repr(align(4)))]
- #[cfg_attr(target_pointer_width = "64",
- repr(align(8)))]
- pub struct sem_t {
- #[cfg(target_pointer_width = "32")]
- __size: [::c_char; 16],
- #[cfg(target_pointer_width = "64")]
- __size: [::c_char; 32],
- }
-}
diff --git a/libc/src/unix/notbsd/linux/other/no_align.rs b/libc/src/unix/notbsd/linux/other/no_align.rs
deleted file mode 100644
index e32bf67..0000000
--- a/libc/src/unix/notbsd/linux/other/no_align.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-s! {
- // FIXME this is actually a union
- pub struct sem_t {
- #[cfg(target_pointer_width = "32")]
- __size: [::c_char; 16],
- #[cfg(target_pointer_width = "64")]
- __size: [::c_char; 32],
- __align: [::c_long; 0],
- }
-}
diff --git a/libc/src/unix/notbsd/linux/s390x/align.rs b/libc/src/unix/notbsd/linux/s390x/align.rs
deleted file mode 100644
index 21e2190..0000000
--- a/libc/src/unix/notbsd/linux/s390x/align.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-s! {
- // FIXME this is actually a union
- #[cfg_attr(target_pointer_width = "32",
- repr(align(4)))]
- #[cfg_attr(target_pointer_width = "64",
- repr(align(8)))]
- pub struct sem_t {
- __size: [::c_char; 32],
- }
-}
diff --git a/libc/src/unix/notbsd/linux/s390x/no_align.rs b/libc/src/unix/notbsd/linux/s390x/no_align.rs
deleted file mode 100644
index 8909114..0000000
--- a/libc/src/unix/notbsd/linux/s390x/no_align.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-s! {
- // FIXME this is actually a union
- pub struct sem_t {
- __size: [::c_char; 32],
- __align: [::c_long; 0],
- }
-}
diff --git a/libc/src/unix/redox/mod.rs b/libc/src/unix/redox/mod.rs
index 388918e..2591a79 100644
--- a/libc/src/unix/redox/mod.rs
+++ b/libc/src/unix/redox/mod.rs
@@ -36,6 +36,49 @@ pub type suseconds_t = ::c_int;
pub type tcflag_t = u32;
pub type time_t = ::c_long;
+#[cfg_attr(feature = "extra_traits", derive(Debug))]
+pub enum timezone {}
+impl ::Copy for timezone {}
+impl ::Clone for timezone {
+ fn clone(&self) -> timezone { *self }
+}
+
+s_no_extra_traits! {
+ #[repr(C)]
+ pub struct utsname {
+ pub sysname: [::c_char; UTSLENGTH],
+ pub nodename: [::c_char; UTSLENGTH],
+ pub release: [::c_char; UTSLENGTH],
+ pub version: [::c_char; UTSLENGTH],
+ pub machine: [::c_char; UTSLENGTH],
+ pub domainname: [::c_char; UTSLENGTH],
+ }
+
+ pub struct dirent {
+ pub d_ino: ::ino_t,
+ pub d_off: ::off_t,
+ pub d_reclen: ::c_ushort,
+ pub d_type: ::c_uchar,
+ pub d_name: [::c_char; 256],
+ }
+
+ pub struct sockaddr_un {
+ pub sun_family: ::sa_family_t,
+ pub sun_path: [::c_char; 108]
+ }
+
+ pub struct sockaddr_storage {
+ pub ss_family: ::sa_family_t,
+ __ss_padding: [
+ u8;
+ 128 -
+ ::core::mem::size_of::<sa_family_t>() -
+ ::core::mem::size_of::<c_ulong>()
+ ],
+ __ss_align: ::c_ulong,
+ }
+}
+
s! {
pub struct addrinfo {
pub ai_flags: ::c_int,
@@ -48,14 +91,6 @@ s! {
pub ai_next: *mut ::addrinfo,
}
- pub struct dirent {
- pub d_ino: ::ino_t,
- pub d_off: ::off_t,
- pub d_reclen: ::c_ushort,
- pub d_type: ::c_uchar,
- pub d_name: [::c_char; 256],
- }
-
pub struct Dl_info {
pub dli_fname: *const ::c_char,
pub dli_fbase: *mut ::c_void,
@@ -140,22 +175,6 @@ s! {
pub sin6_scope_id: u32,
}
- pub struct sockaddr_storage {
- pub ss_family: ::sa_family_t,
- __ss_padding: [
- u8;
- 128 -
- ::core::mem::size_of::<sa_family_t>() -
- ::core::mem::size_of::<c_ulong>()
- ],
- __ss_align: ::c_ulong,
- }
-
- pub struct sockaddr_un {
- pub sun_family: ::sa_family_t,
- pub sun_path: [::c_char; 108]
- }
-
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
@@ -216,63 +235,175 @@ s! {
}
}
+pub const UTSLENGTH: usize = 65;
+
+// intentionally not public, only used for fd_set
+cfg_if! {
+ if #[cfg(target_pointer_width = "32")] {
+ const ULONG_SIZE: usize = 32;
+ } else if #[cfg(target_pointer_width = "64")] {
+ const ULONG_SIZE: usize = 64;
+ } else {
+ // Unknown target_pointer_width
+ }
+}
+
+// limits.h
+pub const PATH_MAX: ::c_int = 4096;
+
+// fcntl.h
+pub const F_GETLK: ::c_int = 5;
+pub const F_SETLK: ::c_int = 6;
+pub const F_SETLKW: ::c_int = 7;
+
// TODO: relibc {
- pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void;
+pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void;
// }
// dlfcn.h
-
pub const RTLD_LAZY: ::c_int = 0x0001;
pub const RTLD_NOW: ::c_int = 0x0002;
pub const RTLD_GLOBAL: ::c_int = 0x0100;
pub const RTLD_LOCAL: ::c_int = 0x0000;
// errno.h
-pub const EPERM: ::c_int = 1;
-pub const ENOENT: ::c_int = 2;
-pub const ESRCH: ::c_int = 3;
-pub const EINTR: ::c_int = 4;
-pub const EIO: ::c_int = 5;
-pub const ENXIO: ::c_int = 6;
-pub const E2BIG: ::c_int = 7;
-pub const ENOEXEC: ::c_int = 8;
-pub const EBADF: ::c_int = 9;
-pub const ECHILD: ::c_int = 10;
-pub const EAGAIN: ::c_int = 11;
-pub const ENOMEM: ::c_int = 12;
-pub const EACCES: ::c_int = 13;
-pub const EFAULT: ::c_int = 14;
-pub const ENOTBLK: ::c_int = 15;
-pub const EBUSY: ::c_int = 16;
-pub const EEXIST: ::c_int = 17;
-pub const EXDEV: ::c_int = 18;
-pub const ENODEV: ::c_int = 19;
-pub const ENOTDIR: ::c_int = 20;
-pub const EISDIR: ::c_int = 21;
-pub const EINVAL: ::c_int = 22;
-pub const ENFILE: ::c_int = 23;
-pub const EMFILE: ::c_int = 24;
-pub const ENOTTY: ::c_int = 25;
-pub const ETXTBSY: ::c_int = 26;
-pub const EFBIG: ::c_int = 27;
-pub const ENOSPC: ::c_int = 28;
-pub const ESPIPE: ::c_int = 29;
-pub const EROFS: ::c_int = 30;
-pub const EMLINK: ::c_int = 31;
-pub const EPIPE: ::c_int = 32;
-pub const EDOM: ::c_int = 33;
-pub const ERANGE: ::c_int = 34;
-pub const EDEADLK: ::c_int = 35;
-pub const ENOSYS: ::c_int = 38;
-pub const EWOULDBLOCK: ::c_int = 41;
-pub const EADDRINUSE: ::c_int = 98;
-pub const EADDRNOTAVAIL: ::c_int = 99;
-pub const ECONNABORTED: ::c_int = 103;
-pub const ECONNRESET: ::c_int = 104;
-pub const ENOTCONN: ::c_int = 107;
-pub const ETIMEDOUT: ::c_int = 110;
-pub const ECONNREFUSED: ::c_int = 111;
-pub const EINPROGRESS: ::c_int = 115;
+pub const EPERM: ::c_int = 1; /* Operation not permitted */
+pub const ENOENT: ::c_int = 2; /* No such file or directory */
+pub const ESRCH: ::c_int = 3; /* No such process */
+pub const EINTR: ::c_int = 4; /* Interrupted system call */
+pub const EIO: ::c_int = 5; /* I/O error */
+pub const ENXIO: ::c_int = 6; /* No such device or address */
+pub const E2BIG: ::c_int = 7; /* Argument list too long */
+pub const ENOEXEC: ::c_int = 8; /* Exec format error */
+pub const EBADF: ::c_int = 9; /* Bad file number */
+pub const ECHILD: ::c_int = 10; /* No child processes */
+pub const EAGAIN: ::c_int = 11; /* Try again */
+pub const ENOMEM: ::c_int = 12; /* Out of memory */
+pub const EACCES: ::c_int = 13; /* Permission denied */
+pub const EFAULT: ::c_int = 14; /* Bad address */
+pub const ENOTBLK: ::c_int = 15; /* Block device required */
+pub const EBUSY: ::c_int = 16; /* Device or resource busy */
+pub const EEXIST: ::c_int = 17; /* File exists */
+pub const EXDEV: ::c_int = 18; /* Cross-device link */
+pub const ENODEV: ::c_int = 19; /* No such device */
+pub const ENOTDIR: ::c_int = 20; /* Not a directory */
+pub const EISDIR: ::c_int = 21; /* Is a directory */
+pub const EINVAL: ::c_int = 22; /* Invalid argument */
+pub const ENFILE: ::c_int = 23; /* File table overflow */
+pub const EMFILE: ::c_int = 24; /* Too many open files */
+pub const ENOTTY: ::c_int = 25; /* Not a typewriter */
+pub const ETXTBSY: ::c_int = 26; /* Text file busy */
+pub const EFBIG: ::c_int = 27; /* File too large */
+pub const ENOSPC: ::c_int = 28; /* No space left on device */
+pub const ESPIPE: ::c_int = 29; /* Illegal seek */
+pub const EROFS: ::c_int = 30; /* Read-only file system */
+pub const EMLINK: ::c_int = 31; /* Too many links */
+pub const EPIPE: ::c_int = 32; /* Broken pipe */
+pub const EDOM: ::c_int = 33; /* Math argument out of domain of func */
+pub const ERANGE: ::c_int = 34; /* Math result not representable */
+pub const EDEADLK: ::c_int = 35; /* Resource deadlock would occur */
+pub const ENAMETOOLONG: ::c_int = 36; /* File name too long */
+pub const ENOLCK: ::c_int = 37; /* No record locks available */
+pub const ENOSYS: ::c_int = 38; /* Function not implemented */
+pub const ENOTEMPTY: ::c_int = 39; /* Directory not empty */
+pub const ELOOP: ::c_int = 40; /* Too many symbolic links encountered */
+pub const EWOULDBLOCK: ::c_int = 41; /* Operation would block */
+pub const ENOMSG: ::c_int = 42; /* No message of desired type */
+pub const EIDRM: ::c_int = 43; /* Identifier removed */
+pub const ECHRNG: ::c_int = 44; /* Channel number out of range */
+pub const EL2NSYNC: ::c_int = 45; /* Level 2 not synchronized */
+pub const EL3HLT: ::c_int = 46; /* Level 3 halted */
+pub const EL3RST: ::c_int = 47; /* Level 3 reset */
+pub const ELNRNG: ::c_int = 48; /* Link number out of range */
+pub const EUNATCH: ::c_int = 49; /* Protocol driver not attached */
+pub const ENOCSI: ::c_int = 50; /* No CSI structure available */
+pub const EL2HLT: ::c_int = 51; /* Level 2 halted */
+pub const EBADE: ::c_int = 52; /* Invalid exchange */
+pub const EBADR: ::c_int = 53; /* Invalid request descriptor */
+pub const EXFULL: ::c_int = 54; /* Exchange full */
+pub const ENOANO: ::c_int = 55; /* No anode */
+pub const EBADRQC: ::c_int = 56; /* Invalid request code */
+pub const EBADSLT: ::c_int = 57; /* Invalid slot */
+pub const EDEADLOCK: ::c_int = 58; /* Resource deadlock would occur */
+pub const EBFONT: ::c_int = 59; /* Bad font file format */
+pub const ENOSTR: ::c_int = 60; /* Device not a stream */
+pub const ENODATA: ::c_int = 61; /* No data available */
+pub const ETIME: ::c_int = 62; /* Timer expired */
+pub const ENOSR: ::c_int = 63; /* Out of streams resources */
+pub const ENONET: ::c_int = 64; /* Machine is not on the network */
+pub const ENOPKG: ::c_int = 65; /* Package not installed */
+pub const EREMOTE: ::c_int = 66; /* Object is remote */
+pub const ENOLINK: ::c_int = 67; /* Link has been severed */
+pub const EADV: ::c_int = 68; /* Advertise error */
+pub const ESRMNT: ::c_int = 69; /* Srmount error */
+pub const ECOMM: ::c_int = 70; /* Communication error on send */
+pub const EPROTO: ::c_int = 71; /* Protocol error */
+pub const EMULTIHOP: ::c_int = 72; /* Multihop attempted */
+pub const EDOTDOT: ::c_int = 73; /* RFS specific error */
+pub const EBADMSG: ::c_int = 74; /* Not a data message */
+pub const EOVERFLOW: ::c_int = 75; /* Value too large for defined data type */
+pub const ENOTUNIQ: ::c_int = 76; /* Name not unique on network */
+pub const EBADFD: ::c_int = 77; /* File descriptor in bad state */
+pub const EREMCHG: ::c_int = 78; /* Remote address changed */
+pub const ELIBACC: ::c_int = 79; /* Can not access a needed shared library */
+pub const ELIBBAD: ::c_int = 80; /* Accessing a corrupted shared library */
+pub const ELIBSCN: ::c_int = 81; /* .lib section in a.out corrupted */
+/* Attempting to link in too many shared libraries */
+pub const ELIBMAX: ::c_int = 82;
+pub const ELIBEXEC: ::c_int = 83; /* Cannot exec a shared library directly */
+pub const EILSEQ: ::c_int = 84; /* Illegal byte sequence */
+/* Interrupted system call should be restarted */
+pub const ERESTART: ::c_int = 85;
+pub const ESTRPIPE: ::c_int = 86; /* Streams pipe error */
+pub const EUSERS: ::c_int = 87; /* Too many users */
+pub const ENOTSOCK: ::c_int = 88; /* Socket operation on non-socket */
+pub const EDESTADDRREQ: ::c_int = 89; /* Destination address required */
+pub const EMSGSIZE: ::c_int = 90; /* Message too long */
+pub const EPROTOTYPE: ::c_int = 91; /* Protocol wrong type for socket */
+pub const ENOPROTOOPT: ::c_int = 92; /* Protocol not available */
+pub const EPROTONOSUPPORT: ::c_int = 93; /* Protocol not supported */
+pub const ESOCKTNOSUPPORT: ::c_int = 94; /* Socket type not supported */
+/* Operation not supported on transport endpoint */
+pub const EOPNOTSUPP: ::c_int = 95;
+pub const EPFNOSUPPORT: ::c_int = 96; /* Protocol family not supported */
+/* Address family not supported by protocol */
+pub const EAFNOSUPPORT: ::c_int = 97;
+pub const EADDRINUSE: ::c_int = 98; /* Address already in use */
+pub const EADDRNOTAVAIL: ::c_int = 99; /* Cannot assign requested address */
+pub const ENETDOWN: ::c_int = 100; /* Network is down */
+pub const ENETUNREACH: ::c_int = 101; /* Network is unreachable */
+/* Network dropped connection because of reset */
+pub const ENETRESET: ::c_int = 102;
+pub const ECONNABORTED: ::c_int = 103; /* Software caused connection abort */
+pub const ECONNRESET: ::c_int = 104; /* Connection reset by peer */
+pub const ENOBUFS: ::c_int = 105; /* No buffer space available */
+pub const EISCONN: ::c_int = 106; /* Transport endpoint is already connected */
+pub const ENOTCONN: ::c_int = 107; /* Transport endpoint is not connected */
+/* Cannot send after transport endpoint shutdown */
+pub const ESHUTDOWN: ::c_int = 108;
+pub const ETOOMANYREFS: ::c_int = 109; /* Too many references: cannot splice */
+pub const ETIMEDOUT: ::c_int = 110; /* Connection timed out */
+pub const ECONNREFUSED: ::c_int = 111; /* Connection refused */
+pub const EHOSTDOWN: ::c_int = 112; /* Host is down */
+pub const EHOSTUNREACH: ::c_int = 113; /* No route to host */
+pub const EALREADY: ::c_int = 114; /* Operation already in progress */
+pub const EINPROGRESS: ::c_int = 115; /* Operation now in progress */
+pub const ESTALE: ::c_int = 116; /* Stale NFS file handle */
+pub const EUCLEAN: ::c_int = 117; /* Structure needs cleaning */
+pub const ENOTNAM: ::c_int = 118; /* Not a XENIX named type file */
+pub const ENAVAIL: ::c_int = 119; /* No XENIX semaphores available */
+pub const EISNAM: ::c_int = 120; /* Is a named type file */
+pub const EREMOTEIO: ::c_int = 121; /* Remote I/O error */
+pub const EDQUOT: ::c_int = 122; /* Quota exceeded */
+pub const ENOMEDIUM: ::c_int = 123; /* No medium found */
+pub const EMEDIUMTYPE: ::c_int = 124; /* Wrong medium type */
+pub const ECANCELED: ::c_int = 125; /* Operation Canceled */
+pub const ENOKEY: ::c_int = 126; /* Required key not available */
+pub const EKEYEXPIRED: ::c_int = 127; /* Key has expired */
+pub const EKEYREVOKED: ::c_int = 128; /* Key has been revoked */
+pub const EKEYREJECTED: ::c_int = 129; /* Key was rejected by service */
+pub const EOWNERDEAD: ::c_int = 130; /* Owner died */
+pub const ENOTRECOVERABLE: ::c_int = 131; /* State not recoverable */
// fcntl.h
pub const F_DUPFD: ::c_int = 0;
@@ -281,7 +412,7 @@ pub const F_SETFD: ::c_int = 2;
pub const F_GETFL: ::c_int = 3;
pub const F_SETFL: ::c_int = 4;
// TODO: relibc {
- pub const F_DUPFD_CLOEXEC: ::c_int = ::F_DUPFD;
+pub const F_DUPFD_CLOEXEC: ::c_int = ::F_DUPFD;
// }
pub const FD_CLOEXEC: ::c_int = 0x0100_0000;
pub const O_RDONLY: ::c_int = 0x0001_0000;
@@ -310,25 +441,25 @@ pub const EAI_SYSTEM: ::c_int = -11;
// netinet/in.h
// TODO: relibc {
- pub const IP_TTL: ::c_int = 2;
- pub const IPV6_UNICAST_HOPS: ::c_int = 16;
- pub const IPV6_MULTICAST_IF: ::c_int = 17;
- pub const IPV6_MULTICAST_HOPS: ::c_int = 18;
- 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 IP_MULTICAST_IF: ::c_int = 32;
- pub const IP_MULTICAST_TTL: ::c_int = 33;
- pub const IP_MULTICAST_LOOP: ::c_int = 34;
- pub const IP_ADD_MEMBERSHIP: ::c_int = 35;
- pub const IP_DROP_MEMBERSHIP: ::c_int = 36;
+pub const IP_TTL: ::c_int = 2;
+pub const IPV6_UNICAST_HOPS: ::c_int = 16;
+pub const IPV6_MULTICAST_IF: ::c_int = 17;
+pub const IPV6_MULTICAST_HOPS: ::c_int = 18;
+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 IP_MULTICAST_IF: ::c_int = 32;
+pub const IP_MULTICAST_TTL: ::c_int = 33;
+pub const IP_MULTICAST_LOOP: ::c_int = 34;
+pub const IP_ADD_MEMBERSHIP: ::c_int = 35;
+pub const IP_DROP_MEMBERSHIP: ::c_int = 36;
// }
// netinet/tcp.h
pub const TCP_NODELAY: ::c_int = 1;
// TODO: relibc {
- pub const TCP_KEEPIDLE: ::c_int = 1;
+pub const TCP_KEEPIDLE: ::c_int = 1;
// }
// poll.h
@@ -345,7 +476,7 @@ pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1;
pub const PTHREAD_MUTEX_INITIALIZER: ::pthread_mutex_t = -1isize as *mut _;
pub const PTHREAD_COND_INITIALIZER: ::pthread_cond_t = -1isize as *mut _;
pub const PTHREAD_RWLOCK_INITIALIZER: ::pthread_rwlock_t = -1isize as *mut _;
-pub const PTHREAD_STACK_MIN : ::size_t = 4096;
+pub const PTHREAD_STACK_MIN: ::size_t = 4096;
// signal.h
pub const SIG_BLOCK: ::c_int = 0;
@@ -384,6 +515,15 @@ pub const SIGPWR: ::c_int = 30;
pub const SIGSYS: ::c_int = 31;
pub const NSIG: ::c_int = 32;
+pub const SA_NOCLDSTOP: ::c_ulong = 0x00000001;
+pub const SA_NOCLDWAIT: ::c_ulong = 0x00000002;
+pub const SA_SIGINFO: ::c_ulong = 0x00000004;
+pub const SA_RESTORER: ::c_ulong = 0x04000000;
+pub const SA_ONSTACK: ::c_ulong = 0x08000000;
+pub const SA_RESTART: ::c_ulong = 0x10000000;
+pub const SA_NODEFER: ::c_ulong = 0x40000000;
+pub const SA_RESETHAND: ::c_ulong = 0x80000000;
+
// sys/epoll.h
pub const EPOLL_CLOEXEC: ::c_int = 0x0100_0000;
pub const EPOLL_CTL_ADD: ::c_int = 1;
@@ -434,8 +574,8 @@ pub const EXIT_FAILURE: ::c_int = 1;
// sys/ioctl.h
// TODO: relibc {
- pub const FIONBIO: ::c_ulong = 0x5421;
- pub const FIOCLEX: ::c_ulong = 0x5451;
+pub const FIONBIO: ::c_ulong = 0x5421;
+pub const FIOCLEX: ::c_ulong = 0x5451;
// }
pub const TCGETS: ::c_ulong = 0x5401;
pub const TCSETS: ::c_ulong = 0x5402;
@@ -472,6 +612,17 @@ pub const SOL_SOCKET: ::c_int = 1;
// sys/wait.h
pub const WNOHANG: ::c_int = 1;
+pub const WUNTRACED: ::c_int = 2;
+
+pub const WSTOPPED: ::c_int = 2;
+pub const WEXITED: ::c_int = 4;
+pub const WCONTINUED: ::c_int = 8;
+pub const WNOWAIT: ::c_int = 0x0100_0000;
+
+pub const __WNOTHREAD: ::c_int = 0x2000_0000;
+pub const __WALL: ::c_int = 0x4000_0000;
+#[allow(overflowing_literals)]
+pub const __WCLONE: ::c_int = 0x8000_0000;
// termios.h
pub const NCCS: usize = 32;
@@ -481,7 +632,34 @@ pub const CLOCK_REALTIME: ::c_int = 1;
pub const CLOCK_MONOTONIC: ::c_int = 4;
// unistd.h
+// POSIX.1 {
+pub const _SC_ARG_MAX: ::c_int = 0;
+pub const _SC_CHILD_MAX: ::c_int = 1;
+pub const _SC_CLK_TCK: ::c_int = 2;
+pub const _SC_NGROUPS_MAX: ::c_int = 3;
+pub const _SC_OPEN_MAX: ::c_int = 4;
+pub const _SC_STREAM_MAX: ::c_int = 5;
+pub const _SC_TZNAME_MAX: ::c_int = 6;
+// ...
+pub const _SC_VERSION: ::c_int = 29;
pub const _SC_PAGESIZE: ::c_int = 30;
+pub const _SC_PAGE_SIZE: ::c_int = 30;
+// ...
+pub const _SC_RE_DUP_MAX: ::c_int = 44;
+// ...
+pub const _SC_LOGIN_NAME_MAX: ::c_int = 71;
+pub const _SC_TTY_NAME_MAX: ::c_int = 72;
+// ...
+pub const _SC_SYMLOOP_MAX: ::c_int = 173;
+// ...
+pub const _SC_HOST_NAME_MAX: ::c_int = 180;
+// } POSIX.1
+
+pub const F_OK: ::c_int = 0;
+pub const R_OK: ::c_int = 4;
+pub const W_OK: ::c_int = 2;
+pub const X_OK: ::c_int = 1;
+
pub const SEEK_SET: ::c_int = 0;
pub const SEEK_CUR: ::c_int = 1;
pub const SEEK_END: ::c_int = 2;
@@ -489,108 +667,327 @@ pub const STDIN_FILENO: ::c_int = 0;
pub const STDOUT_FILENO: ::c_int = 1;
pub const STDERR_FILENO: ::c_int = 2;
-// wait.h
-pub fn WIFSTOPPED(status: ::c_int) -> bool {
- (status & 0xff) == 0x7f
-}
+pub const _PC_LINK_MAX: ::c_int = 0;
+pub const _PC_MAX_CANON: ::c_int = 1;
+pub const _PC_MAX_INPUT: ::c_int = 2;
+pub const _PC_NAME_MAX: ::c_int = 3;
+pub const _PC_PATH_MAX: ::c_int = 4;
+pub const _PC_PIPE_BUF: ::c_int = 5;
+pub const _PC_CHOWN_RESTRICTED: ::c_int = 6;
+pub const _PC_NO_TRUNC: ::c_int = 7;
+pub const _PC_VDISABLE: ::c_int = 8;
+pub const _PC_SYNC_IO: ::c_int = 9;
+pub const _PC_ASYNC_IO: ::c_int = 10;
+pub const _PC_PRIO_IO: ::c_int = 11;
+pub const _PC_SOCK_MAXBUF: ::c_int = 12;
+pub const _PC_FILESIZEBITS: ::c_int = 13;
+pub const _PC_REC_INCR_XFER_SIZE: ::c_int = 14;
+pub const _PC_REC_MAX_XFER_SIZE: ::c_int = 15;
+pub const _PC_REC_MIN_XFER_SIZE: ::c_int = 16;
+pub const _PC_REC_XFER_ALIGN: ::c_int = 17;
+pub const _PC_ALLOC_SIZE_MIN: ::c_int = 18;
+pub const _PC_SYMLINK_MAX: ::c_int = 19;
+pub const _PC_2_SYMLINKS: ::c_int = 20;
-pub fn WSTOPSIG(status: ::c_int) -> ::c_int {
- (status >> 8) & 0xff
-}
+// wait.h
+f! {
+ pub fn WIFSTOPPED(status: ::c_int) -> bool {
+ (status & 0xff) == 0x7f
+ }
-pub fn WIFCONTINUED(status: ::c_int) -> bool {
- status == 0xffff
-}
+ pub fn WSTOPSIG(status: ::c_int) -> ::c_int {
+ (status >> 8) & 0xff
+ }
-pub fn WIFSIGNALED(status: ::c_int) -> bool {
- ((status & 0x7f) + 1) as i8 >= 2
-}
+ pub fn WIFCONTINUED(status: ::c_int) -> bool {
+ status == 0xffff
+ }
-pub fn WTERMSIG(status: ::c_int) -> ::c_int {
- status & 0x7f
-}
+ pub fn WIFSIGNALED(status: ::c_int) -> bool {
+ ((status & 0x7f) + 1) as i8 >= 2
+ }
-pub fn WIFEXITED(status: ::c_int) -> bool {
- (status & 0x7f) == 0
-}
+ pub fn WTERMSIG(status: ::c_int) -> ::c_int {
+ status & 0x7f
+ }
-pub fn WEXITSTATUS(status: ::c_int) -> ::c_int {
- (status >> 8) & 0xff
-}
+ pub fn WIFEXITED(status: ::c_int) -> bool {
+ (status & 0x7f) == 0
+ }
-pub fn WCOREDUMP(status: ::c_int) -> bool {
- (status & 0x80) != 0
-}
+ pub fn WEXITSTATUS(status: ::c_int) -> ::c_int {
+ (status >> 8) & 0xff
+ }
-// intentionally not public, only used for fd_set
-cfg_if! {
- if #[cfg(target_pointer_width = "32")] {
- const ULONG_SIZE: usize = 32;
- } else if #[cfg(target_pointer_width = "64")] {
- const ULONG_SIZE: usize = 64;
- } else {
- // Unknown target_pointer_width
+ pub fn WCOREDUMP(status: ::c_int) -> bool {
+ (status & 0x80) != 0
}
}
extern {
- pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;
- pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;
-
+ // errno.h
+ pub fn __errno_location() -> *mut ::c_int;
pub fn strerror_r(errnum: ::c_int, buf: *mut c_char,
buflen: ::size_t) -> ::c_int;
+ // unistd.h
+ pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int;
+
// malloc.h
pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void;
// pthread.h
- pub fn pthread_atfork(prepare: ::Option<unsafe extern fn()>,
- parent: ::Option<unsafe extern fn()>,
- child: ::Option<unsafe extern fn()>) -> ::c_int;
- pub fn pthread_create(tid: *mut ::pthread_t,
- attr: *const ::pthread_attr_t,
- start: extern fn(*mut ::c_void) -> *mut ::c_void,
- arg: *mut ::c_void) -> ::c_int;
- pub fn pthread_condattr_setclock(attr: *mut pthread_condattr_t,
- clock_id: ::clockid_t) -> ::c_int;
+ pub fn pthread_atfork(
+ prepare: ::Option<unsafe extern fn()>,
+ parent: ::Option<unsafe extern fn()>,
+ child: ::Option<unsafe extern fn()>,
+ ) -> ::c_int;
+ pub fn pthread_create(
+ tid: *mut ::pthread_t,
+ attr: *const ::pthread_attr_t,
+ start: extern fn(*mut ::c_void) -> *mut ::c_void,
+ arg: *mut ::c_void,
+ ) -> ::c_int;
+ pub fn pthread_condattr_setclock(
+ attr: *mut pthread_condattr_t,
+ clock_id: ::clockid_t,
+ ) -> ::c_int;
+
+ // pwd.h
+ pub fn getpwuid_r(uid: ::uid_t,
+ pwd: *mut passwd,
+ buf: *mut ::c_char,
+ buflen: ::size_t,
+ result: *mut *mut passwd) -> ::c_int;
// signal.h
- pub fn pthread_sigmask(how: ::c_int,
- set: *const ::sigset_t,
- oldset: *mut ::sigset_t) -> ::c_int;
+ pub fn pthread_sigmask(
+ how: ::c_int,
+ set: *const ::sigset_t,
+ oldset: *mut ::sigset_t,
+ ) -> ::c_int;
// sys/epoll.h
pub fn epoll_create(size: ::c_int) -> ::c_int;
pub fn epoll_create1(flags: ::c_int) -> ::c_int;
- pub fn epoll_wait(epfd: ::c_int,
- events: *mut ::epoll_event,
- maxevents: ::c_int,
- timeout: ::c_int) -> ::c_int;
- pub fn epoll_ctl(epfd: ::c_int,
- op: ::c_int,
- fd: ::c_int,
- event: *mut ::epoll_event) -> ::c_int;
+ pub fn epoll_wait(
+ epfd: ::c_int,
+ events: *mut ::epoll_event,
+ maxevents: ::c_int,
+ timeout: ::c_int,
+ ) -> ::c_int;
+ pub fn epoll_ctl(
+ epfd: ::c_int,
+ op: ::c_int,
+ fd: ::c_int,
+ event: *mut ::epoll_event,
+ ) -> ::c_int;
// sys/ioctl.h
pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;
+ // sys/resource.h
+ pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;
+ pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;
+
// sys/socket.h
- pub fn bind(socket: ::c_int, address: *const ::sockaddr,
- address_len: ::socklen_t) -> ::c_int;
- pub fn recvfrom(socket: ::c_int, buf: *mut ::c_void, len: ::size_t,
- flags: ::c_int, addr: *mut ::sockaddr,
- addrlen: *mut ::socklen_t) -> ::ssize_t;
+ pub fn bind(
+ socket: ::c_int,
+ address: *const ::sockaddr,
+ address_len: ::socklen_t,
+ ) -> ::c_int;
+ pub fn recvfrom(
+ socket: ::c_int,
+ buf: *mut ::c_void,
+ len: ::size_t,
+ flags: ::c_int,
+ addr: *mut ::sockaddr,
+ addrlen: *mut ::socklen_t,
+ ) -> ::ssize_t;
+
+ // sys/stat.h
+ pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;
// sys/uio.h
- pub fn readv(fd: ::c_int,
- iov: *const ::iovec,
- iovcnt: ::c_int) -> ::ssize_t;
- pub fn writev(fd: ::c_int,
- iov: *const ::iovec,
- iovcnt: ::c_int) -> ::ssize_t;
+ pub fn readv(
+ fd: ::c_int,
+ iov: *const ::iovec,
+ iovcnt: ::c_int,
+ ) -> ::ssize_t;
+ pub fn writev(
+ fd: ::c_int,
+ iov: *const ::iovec,
+ iovcnt: ::c_int,
+ ) -> ::ssize_t;
+
+ // sys/utsname.h
+ pub fn uname(utsname: *mut utsname) -> ::c_int;
// time.h
pub fn gettimeofday(tp: *mut ::timeval,
tz: *mut ::timezone) -> ::c_int;
pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;
}
+
+cfg_if! {
+ if #[cfg(feature = "extra_traits")] {
+ impl PartialEq for dirent {
+ fn eq(&self, other: &dirent) -> bool {
+ self.d_ino == other.d_ino
+ && self.d_off == other.d_off
+ && self.d_reclen == other.d_reclen
+ && self.d_type == other.d_type
+ && self
+ .d_name
+ .iter()
+ .zip(other.d_name.iter())
+ .all(|(a,b)| a == b)
+ }
+ }
+
+ impl Eq for dirent {}
+
+ impl ::fmt::Debug for dirent {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("dirent")
+ .field("d_ino", &self.d_ino)
+ .field("d_off", &self.d_off)
+ .field("d_reclen", &self.d_reclen)
+ .field("d_type", &self.d_type)
+ // FIXME: .field("d_name", &self.d_name)
+ .finish()
+ }
+ }
+
+ impl ::hash::Hash for dirent {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.d_ino.hash(state);
+ self.d_off.hash(state);
+ self.d_reclen.hash(state);
+ self.d_type.hash(state);
+ self.d_name.hash(state);
+ }
+ }
+
+ impl PartialEq for sockaddr_un {
+ fn eq(&self, other: &sockaddr_un) -> bool {
+ self.sun_family == other.sun_family
+ && self
+ .sun_path
+ .iter()
+ .zip(other.sun_path.iter())
+ .all(|(a,b)| a == b)
+ }
+ }
+
+ impl Eq for sockaddr_un {}
+
+ impl ::fmt::Debug for sockaddr_un {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("sockaddr_un")
+ .field("sun_family", &self.sun_family)
+ // FIXME: .field("sun_path", &self.sun_path)
+ .finish()
+ }
+ }
+
+ impl ::hash::Hash for sockaddr_un {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.sun_family.hash(state);
+ self.sun_path.hash(state);
+ }
+ }
+
+ impl PartialEq for sockaddr_storage {
+ fn eq(&self, other: &sockaddr_storage) -> bool {
+ self.ss_family == other.ss_family
+ && self.__ss_align == self.__ss_align
+ && self
+ .__ss_padding
+ .iter()
+ .zip(other.__ss_padding.iter())
+ .all(|(a,b)| a == b)
+ }
+ }
+
+ impl Eq for sockaddr_storage {}
+
+ impl ::fmt::Debug for sockaddr_storage {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("sockaddr_storage")
+ .field("ss_family", &self.ss_family)
+ .field("__ss_align", &self.__ss_align)
+ // FIXME: .field("__ss_padding", &self.__ss_padding)
+ .finish()
+ }
+ }
+
+ impl ::hash::Hash for sockaddr_storage {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.ss_family.hash(state);
+ self.__ss_padding.hash(state);
+ self.__ss_align.hash(state);
+ }
+ }
+
+ impl PartialEq for utsname {
+ fn eq(&self, other: &utsname) -> bool {
+ self.sysname
+ .iter()
+ .zip(other.sysname.iter())
+ .all(|(a, b)| a == b)
+ && self
+ .nodename
+ .iter()
+ .zip(other.nodename.iter())
+ .all(|(a, b)| a == b)
+ && self
+ .release
+ .iter()
+ .zip(other.release.iter())
+ .all(|(a, b)| a == b)
+ && self
+ .version
+ .iter()
+ .zip(other.version.iter())
+ .all(|(a, b)| a == b)
+ && self
+ .machine
+ .iter()
+ .zip(other.machine.iter())
+ .all(|(a, b)| a == b)
+ && self
+ .domainname
+ .iter()
+ .zip(other.domainname.iter())
+ .all(|(a, b)| a == b)
+ }
+ }
+
+ impl Eq for utsname {}
+
+ impl ::fmt::Debug for utsname {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("utsname")
+ // FIXME: .field("sysname", &self.sysname)
+ // FIXME: .field("nodename", &self.nodename)
+ // FIXME: .field("release", &self.release)
+ // FIXME: .field("version", &self.version)
+ // FIXME: .field("machine", &self.machine)
+ // FIXME: .field("domainname", &self.domainname)
+ .finish()
+ }
+ }
+
+ impl ::hash::Hash for utsname {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.sysname.hash(state);
+ self.nodename.hash(state);
+ self.release.hash(state);
+ self.version.hash(state);
+ self.machine.hash(state);
+ self.domainname.hash(state);
+ }
+ }
+ }
+}
diff --git a/libc/src/unix/solarish/mod.rs b/libc/src/unix/solarish/mod.rs
index 49f76ea..7895614 100644
--- a/libc/src/unix/solarish/mod.rs
+++ b/libc/src/unix/solarish/mod.rs
@@ -31,9 +31,13 @@ pub type pthread_t = ::c_uint;
pub type pthread_key_t = ::c_uint;
pub type blksize_t = ::c_int;
pub type nl_item = ::c_int;
+pub type mqd_t = *mut ::c_void;
pub type id_t = ::c_int;
pub type idtype_t = ::c_uint;
+pub type door_attr_t = ::c_uint;
+pub type door_id_t = ::c_ulonglong;
+
#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum timezone {}
impl ::Copy for timezone {}
@@ -210,15 +214,6 @@ s! {
pub sa_mask: sigset_t,
}
- pub struct sigevent {
- pub sigev_notify: ::c_int,
- pub sigev_signo: ::c_int,
- pub sigev_value: ::sigval,
- pub ss_sp: *mut ::c_void,
- pub sigev_notify_attributes: *const ::pthread_attr_t,
- __sigev_pad2: ::c_int,
- }
-
pub struct stack_t {
pub ss_sp: *mut ::c_void,
pub ss_size: ::size_t,
@@ -331,6 +326,14 @@ s! {
pub if_name: *mut ::c_char,
}
+ pub struct mq_attr {
+ pub mq_flags: ::c_long,
+ pub mq_maxmsg: ::c_long,
+ pub mq_msgsize: ::c_long,
+ pub mq_curmsgs: ::c_long,
+ _pad: [::c_int; 4]
+ }
+
pub struct port_event {
pub portev_events: ::c_int,
pub portev_source: ::c_ushort,
@@ -338,6 +341,11 @@ s! {
pub portev_object: ::uintptr_t,
pub portev_user: *mut ::c_void,
}
+
+ pub struct door_desc_t__d_data__d_desc {
+ pub d_descriptor: ::c_int,
+ pub d_id: ::door_id_t
+ }
}
s_no_extra_traits! {
@@ -392,6 +400,34 @@ s_no_extra_traits! {
pub sdl_slen: ::c_uchar,
pub sdl_data: [::c_char; 244],
}
+
+ pub struct sigevent {
+ pub sigev_notify: ::c_int,
+ pub sigev_signo: ::c_int,
+ pub sigev_value: ::sigval,
+ pub ss_sp: *mut ::c_void,
+ pub sigev_notify_attributes: *const ::pthread_attr_t,
+ __sigev_pad2: ::c_int,
+ }
+
+ pub union door_desc_t__d_data {
+ pub d_desc: door_desc_t__d_data__d_desc,
+ d_resv: [::c_int; 5], /* Check out /usr/include/sys/door.h */
+ }
+
+ pub struct door_desc_t {
+ pub d_attributes: door_attr_t,
+ pub d_data: door_desc_t__d_data,
+ }
+
+ pub struct door_arg_t {
+ pub data_ptr: *const ::c_char,
+ pub data_size: ::size_t,
+ pub desc_ptr: *const door_desc_t,
+ pub dec_num: ::c_uint,
+ pub rbuf: *const ::c_char,
+ pub rsize: ::size_t,
+ }
}
cfg_if! {
@@ -627,6 +663,40 @@ cfg_if! {
self.sdl_data.hash(state);
}
}
+
+ impl PartialEq for sigevent {
+ fn eq(&self, other: &sigevent) -> bool {
+ self.sigev_notify == other.sigev_notify
+ && self.sigev_signo == other.sigev_signo
+ && self.sigev_value == other.sigev_value
+ && self.ss_sp == other.ss_sp
+ && self.sigev_notify_attributes
+ == other.sigev_notify_attributes
+ }
+ }
+ impl Eq for sigevent {}
+ impl ::fmt::Debug for sigevent {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("sigevent")
+ .field("sigev_notify", &self.sigev_notify)
+ .field("sigev_signo", &self.sigev_signo)
+ .field("sigev_value", &self.sigev_value)
+ .field("ss_sp", &self.ss_sp)
+ .field("sigev_notify_attributes",
+ &self.sigev_notify_attributes)
+ .finish()
+ }
+ }
+ impl ::hash::Hash for sigevent {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.sigev_notify.hash(state);
+ self.sigev_signo.hash(state);
+ self.sigev_value.hash(state);
+ self.ss_sp.hash(state);
+ self.sigev_notify_attributes.hash(state);
+ }
+ }
+
}
}
@@ -1176,13 +1246,6 @@ pub const AF_TRILL: ::c_int = 31;
pub const AF_PACKET: ::c_int = 32;
pub const AF_LX_NETLINK: ::c_int = 33;
-#[doc(hidden)]
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 33;
pub const SOCK_DGRAM: ::c_int = 1;
pub const SOCK_STREAM: ::c_int = 2;
pub const SOCK_RAW: ::c_int = 4;
@@ -1937,6 +2000,31 @@ extern {
pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int)
-> ::ssize_t;
+ pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t;
+ pub fn mq_close(mqd: ::mqd_t) -> ::c_int;
+ pub fn mq_unlink(name: *const ::c_char) -> ::c_int;
+ pub fn mq_receive(mqd: ::mqd_t,
+ msg_ptr: *mut ::c_char,
+ msg_len: ::size_t,
+ msq_prio: *mut ::c_uint) -> ::ssize_t;
+ pub fn mq_timedreceive(mqd: ::mqd_t,
+ msg_ptr: *mut ::c_char,
+ msg_len: ::size_t,
+ msq_prio: *mut ::c_uint,
+ abs_timeout: *const ::timespec) -> ::ssize_t;
+ pub fn mq_send(mqd: ::mqd_t,
+ msg_ptr: *const ::c_char,
+ msg_len: ::size_t,
+ msq_prio: ::c_uint) -> ::c_int;
+ pub fn mq_timedsend(mqd: ::mqd_t,
+ msg_ptr: *const ::c_char,
+ msg_len: ::size_t,
+ msq_prio: ::c_uint,
+ abs_timeout: *const ::timespec) -> ::c_int;
+ pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int;
+ pub fn mq_setattr(mqd: ::mqd_t,
+ newattr: *const ::mq_attr,
+ oldattr: *mut ::mq_attr) -> ::c_int;
pub fn port_create() -> ::c_int;
pub fn port_associate(port: ::c_int, source: ::c_int, object: ::uintptr_t,
events: ::c_int, user: *mut ::c_void) -> ::c_int;
@@ -2040,6 +2128,19 @@ extern {
pub fn dup3(src: ::c_int, dst: ::c_int, flags: ::c_int) -> ::c_int;
pub fn uname(buf: *mut ::utsname) -> ::c_int;
pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int;
+ pub fn door_call(d: ::c_int, params: *const door_arg_t) -> ::c_int;
+ pub fn door_return(data_ptr: *const ::c_char,
+ data_size: ::size_t,
+ desc_ptr: *const door_desc_t,
+ num_desc: ::c_uint);
+ pub fn door_create(server_procedure: extern fn(cookie: *const ::c_void,
+ argp: *const ::c_char,
+ arg_size: ::size_t,
+ dp: *const door_desc_t,
+ n_desc: ::c_uint),
+ cookie: *const ::c_void,
+ attributes: door_attr_t) -> ::c_int;
+ pub fn fattach(fildes: ::c_int, path: *const ::c_char) -> ::c_int;
}
mod compat;
diff --git a/libc/src/unix/uclibc/arm/mod.rs b/libc/src/unix/uclibc/arm/mod.rs
index 1651285..7680dcf 100644
--- a/libc/src/unix/uclibc/arm/mod.rs
+++ b/libc/src/unix/uclibc/arm/mod.rs
@@ -51,9 +51,12 @@ s! {
pub st_size: ::off_t,
pub st_blksize: ::blksize_t,
pub st_blocks: ::blkcnt_t,
- pub st_atim: ::timespec,
- pub st_mtim: ::timespec,
- pub st_ctim: ::timespec,
+ pub st_atime: ::time_t,
+ pub st_atime_nsec: ::c_ulong,
+ pub st_mtime: ::time_t,
+ pub st_mtime_nsec: ::c_ulong,
+ pub st_ctime: ::time_t,
+ pub st_ctime_nsec: ::c_ulong,
pub __unused4: ::c_ulong,
pub __unused5: ::c_ulong,
}
@@ -72,9 +75,12 @@ s! {
pub st_size: ::off64_t,
pub st_blksize: ::blksize_t,
pub st_blocks: ::blkcnt64_t,
- pub st_atim: ::timespec,
- pub st_mtim: ::timespec,
- pub st_ctim: ::timespec,
+ pub st_atime: ::time_t,
+ pub st_atime_nsec: ::c_ulong,
+ pub st_mtime: ::time_t,
+ pub st_mtime_nsec: ::c_ulong,
+ pub st_ctime: ::time_t,
+ pub st_ctime_nsec: ::c_ulong,
pub st_ino: ::ino64_t,
}
@@ -134,8 +140,8 @@ s! {
pub struct stack_t {
pub ss_sp: *mut ::c_void,
- ss_flags: ::c_int,
- ss_size: ::size_t,
+ pub ss_flags: ::c_int,
+ pub ss_size: ::size_t,
}
pub struct ipc_perm {
@@ -215,8 +221,8 @@ pub const CLONE_NEWCGROUP: ::c_int = 0x02000000; // from linux/mod.rs
pub const EPOLLEXCLUSIVE: ::c_int = 0x10000000; // from linux/mod.rs
pub const EPOLLWAKEUP: ::c_int = 0x20000000; // from linux/other/mod.rs
pub const EXTPROC: ::tcflag_t = 0o200000; // from asm-generic/termbits.h
-pub const F_GETPIPE_SZ: ::c_int = 1032; // from notbsd/mod.rs
-pub const F_SETPIPE_SZ: ::c_int = 1031; // from notbsd/mod.rs
+pub const F_GETPIPE_SZ: ::c_int = 1032; // from linux_like/mod.rs
+pub const F_SETPIPE_SZ: ::c_int = 1031; // from linux_like/mod.rs
pub const LIO_NOP: ::c_int = 2; // from linux/mod.rs
pub const LIO_NOWAIT: ::c_int = 1; // from linux/mod.rs
pub const LIO_READ: ::c_int = 0; // from linux/mod.rs
@@ -226,12 +232,12 @@ pub const MAP_HUGETLB: ::c_int = 0x040000; // from linux/other/mod.rs
pub const O_TMPFILE: ::c_int = 0o20000000 | O_DIRECTORY;
pub const RB_KEXEC: ::c_int = 0x45584543u32 as i32; // from linux/mod.rs
pub const RB_SW_SUSPEND: ::c_int = 0xd000fce2u32 as i32; // from linux/mod.rs
-pub const SO_BUSY_POLL: ::c_int = 46; // from src/unix/notbsd/mod.rs
-pub const SO_PEEK_OFF: ::c_int = 42; // from src/unix/notbsd/mod.rs
-pub const SO_REUSEPORT: ::c_int = 15; // from src/unix/notbsd/mod.rs
-pub const SOL_NETLINK: ::c_int = 270; // from src/unix/notbsd/mod.rs
+pub const SO_BUSY_POLL: ::c_int = 46; // from src/unix/linux_like/mod.rs
+pub const SO_PEEK_OFF: ::c_int = 42; // from src/unix/linux_like/mod.rs
+pub const SO_REUSEPORT: ::c_int = 15; // from src/unix/linux_like/mod.rs
+pub const SOL_NETLINK: ::c_int = 270; // from src/unix/linux_like/mod.rs
pub const _POSIX_VDISABLE: ::cc_t = 0; // from linux/mod.rs
-pub const AT_EMPTY_PATH: ::c_int = 0x1000; // from notbsd/mod.rs
+pub const AT_EMPTY_PATH: ::c_int = 0x1000; // from linux_like/mod.rs
// autogenerated constants with hand tuned types
pub const AT_NO_AUTOMOUNT: ::c_int = 0x800;
@@ -394,6 +400,7 @@ pub const FF1: ::c_int = 0x8000;
pub const FFDLY: ::c_int = 0x8000;
pub const FIONBIO: ::c_ulong = 0x5421;
pub const FIOCLEX: ::c_ulong = 0x5451;
+pub const FIONCLEX: ::c_ulong = 0x5450;
pub const FLUSHO: ::tcflag_t = 0x1000;
pub const F_GETLK: ::c_int = 0x5;
pub const F_SETLK: ::c_int = 0x6;
@@ -462,6 +469,7 @@ pub const POLLRDBAND: ::c_short = 0x80;
pub const POLLRDNORM: ::c_short = 0x40;
pub const POLLWRBAND: ::c_short = 0x200;
pub const POLLWRNORM: ::c_short = 0x100;
+pub const PTHREAD_STACK_MIN: ::size_t = 16384;
pub const QIF_ALL: u32 = 0x3f;
pub const QIF_BLIMITS: u32 = 0x1;
pub const QIF_BTIME: u32 = 0x10;
@@ -488,6 +496,7 @@ pub const SIGIO: ::c_int = 0x1d;
pub const SIGPROF: ::c_int = 0x1b;
pub const SIGPWR: ::c_int = 0x1e;
pub const SIGSTKFLT: ::c_int = 0x10;
+pub const SIGSTKSZ: ::size_t = 8192;
pub const SIGSTOP: ::c_int = 0x13;
pub const SIGSYS: ::c_int = 0x1f;
pub const SIGTSTP: ::c_int = 0x14;
@@ -534,7 +543,6 @@ pub const SO_SNDLOWAT: ::c_int = 0x13;
pub const SO_SNDTIMEO: ::c_int = 0x15;
pub const SO_TIMESTAMP: ::c_int = 0x1d;
pub const SO_TYPE: ::c_int = 0x3;
-pub const SYS_gettid: ::c_int = 0xe0;
pub const TAB1: ::c_int = 0x800;
pub const TAB2: ::c_int = 0x1000;
pub const TAB3: ::c_int = 0x1800;
@@ -611,6 +619,358 @@ pub const _SC_V6_LP64_OFF64: ::c_int = 0xb2;
pub const _SC_V6_LPBIG_OFFBIG: ::c_int = 0xb3;
pub const _SC_XOPEN_STREAMS: ::c_int = 0xf6;
+// Syscall table is copied from src/unix/notbsd/linux/musl/b32/arm.rs
+pub const SYS_restart_syscall: ::c_long = 0;
+pub const SYS_exit: ::c_long = 1;
+pub const SYS_fork: ::c_long = 2;
+pub const SYS_read: ::c_long = 3;
+pub const SYS_write: ::c_long = 4;
+pub const SYS_open: ::c_long = 5;
+pub const SYS_close: ::c_long = 6;
+pub const SYS_creat: ::c_long = 8;
+pub const SYS_link: ::c_long = 9;
+pub const SYS_unlink: ::c_long = 10;
+pub const SYS_execve: ::c_long = 11;
+pub const SYS_chdir: ::c_long = 12;
+pub const SYS_mknod: ::c_long = 14;
+pub const SYS_chmod: ::c_long = 15;
+pub const SYS_lchown: ::c_long = 16;
+pub const SYS_lseek: ::c_long = 19;
+pub const SYS_getpid: ::c_long = 20;
+pub const SYS_mount: ::c_long = 21;
+pub const SYS_setuid: ::c_long = 23;
+pub const SYS_getuid: ::c_long = 24;
+pub const SYS_ptrace: ::c_long = 26;
+pub const SYS_pause: ::c_long = 29;
+pub const SYS_access: ::c_long = 33;
+pub const SYS_nice: ::c_long = 34;
+pub const SYS_sync: ::c_long = 36;
+pub const SYS_kill: ::c_long = 37;
+pub const SYS_rename: ::c_long = 38;
+pub const SYS_mkdir: ::c_long = 39;
+pub const SYS_rmdir: ::c_long = 40;
+pub const SYS_dup: ::c_long = 41;
+pub const SYS_pipe: ::c_long = 42;
+pub const SYS_times: ::c_long = 43;
+pub const SYS_brk: ::c_long = 45;
+pub const SYS_setgid: ::c_long = 46;
+pub const SYS_getgid: ::c_long = 47;
+pub const SYS_geteuid: ::c_long = 49;
+pub const SYS_getegid: ::c_long = 50;
+pub const SYS_acct: ::c_long = 51;
+pub const SYS_umount2: ::c_long = 52;
+pub const SYS_ioctl: ::c_long = 54;
+pub const SYS_fcntl: ::c_long = 55;
+pub const SYS_setpgid: ::c_long = 57;
+pub const SYS_umask: ::c_long = 60;
+pub const SYS_chroot: ::c_long = 61;
+pub const SYS_ustat: ::c_long = 62;
+pub const SYS_dup2: ::c_long = 63;
+pub const SYS_getppid: ::c_long = 64;
+pub const SYS_getpgrp: ::c_long = 65;
+pub const SYS_setsid: ::c_long = 66;
+pub const SYS_sigaction: ::c_long = 67;
+pub const SYS_setreuid: ::c_long = 70;
+pub const SYS_setregid: ::c_long = 71;
+pub const SYS_sigsuspend: ::c_long = 72;
+pub const SYS_sigpending: ::c_long = 73;
+pub const SYS_sethostname: ::c_long = 74;
+pub const SYS_setrlimit: ::c_long = 75;
+pub const SYS_getrusage: ::c_long = 77;
+pub const SYS_gettimeofday: ::c_long = 78;
+pub const SYS_settimeofday: ::c_long = 79;
+pub const SYS_getgroups: ::c_long = 80;
+pub const SYS_setgroups: ::c_long = 81;
+pub const SYS_symlink: ::c_long = 83;
+pub const SYS_readlink: ::c_long = 85;
+pub const SYS_uselib: ::c_long = 86;
+pub const SYS_swapon: ::c_long = 87;
+pub const SYS_reboot: ::c_long = 88;
+pub const SYS_munmap: ::c_long = 91;
+pub const SYS_truncate: ::c_long = 92;
+pub const SYS_ftruncate: ::c_long = 93;
+pub const SYS_fchmod: ::c_long = 94;
+pub const SYS_fchown: ::c_long = 95;
+pub const SYS_getpriority: ::c_long = 96;
+pub const SYS_setpriority: ::c_long = 97;
+pub const SYS_statfs: ::c_long = 99;
+pub const SYS_fstatfs: ::c_long = 100;
+pub const SYS_syslog: ::c_long = 103;
+pub const SYS_setitimer: ::c_long = 104;
+pub const SYS_getitimer: ::c_long = 105;
+pub const SYS_stat: ::c_long = 106;
+pub const SYS_lstat: ::c_long = 107;
+pub const SYS_fstat: ::c_long = 108;
+pub const SYS_vhangup: ::c_long = 111;
+pub const SYS_wait4: ::c_long = 114;
+pub const SYS_swapoff: ::c_long = 115;
+pub const SYS_sysinfo: ::c_long = 116;
+pub const SYS_fsync: ::c_long = 118;
+pub const SYS_sigreturn: ::c_long = 119;
+pub const SYS_clone: ::c_long = 120;
+pub const SYS_setdomainname: ::c_long = 121;
+pub const SYS_uname: ::c_long = 122;
+pub const SYS_adjtimex: ::c_long = 124;
+pub const SYS_mprotect: ::c_long = 125;
+pub const SYS_sigprocmask: ::c_long = 126;
+pub const SYS_init_module: ::c_long = 128;
+pub const SYS_delete_module: ::c_long = 129;
+pub const SYS_quotactl: ::c_long = 131;
+pub const SYS_getpgid: ::c_long = 132;
+pub const SYS_fchdir: ::c_long = 133;
+pub const SYS_bdflush: ::c_long = 134;
+pub const SYS_sysfs: ::c_long = 135;
+pub const SYS_personality: ::c_long = 136;
+pub const SYS_setfsuid: ::c_long = 138;
+pub const SYS_setfsgid: ::c_long = 139;
+pub const SYS__llseek: ::c_long = 140;
+pub const SYS_getdents: ::c_long = 141;
+pub const SYS__newselect: ::c_long = 142;
+pub const SYS_flock: ::c_long = 143;
+pub const SYS_msync: ::c_long = 144;
+pub const SYS_readv: ::c_long = 145;
+pub const SYS_writev: ::c_long = 146;
+pub const SYS_getsid: ::c_long = 147;
+pub const SYS_fdatasync: ::c_long = 148;
+pub const SYS__sysctl: ::c_long = 149;
+pub const SYS_mlock: ::c_long = 150;
+pub const SYS_munlock: ::c_long = 151;
+pub const SYS_mlockall: ::c_long = 152;
+pub const SYS_munlockall: ::c_long = 153;
+pub const SYS_sched_setparam: ::c_long = 154;
+pub const SYS_sched_getparam: ::c_long = 155;
+pub const SYS_sched_setscheduler: ::c_long = 156;
+pub const SYS_sched_getscheduler: ::c_long = 157;
+pub const SYS_sched_yield: ::c_long = 158;
+pub const SYS_sched_get_priority_max: ::c_long = 159;
+pub const SYS_sched_get_priority_min: ::c_long = 160;
+pub const SYS_sched_rr_get_interval: ::c_long = 161;
+pub const SYS_nanosleep: ::c_long = 162;
+pub const SYS_mremap: ::c_long = 163;
+pub const SYS_setresuid: ::c_long = 164;
+pub const SYS_getresuid: ::c_long = 165;
+pub const SYS_poll: ::c_long = 168;
+pub const SYS_nfsservctl: ::c_long = 169;
+pub const SYS_setresgid: ::c_long = 170;
+pub const SYS_getresgid: ::c_long = 171;
+pub const SYS_prctl: ::c_long = 172;
+pub const SYS_rt_sigreturn: ::c_long = 173;
+pub const SYS_rt_sigaction: ::c_long = 174;
+pub const SYS_rt_sigprocmask: ::c_long = 175;
+pub const SYS_rt_sigpending: ::c_long = 176;
+pub const SYS_rt_sigtimedwait: ::c_long = 177;
+pub const SYS_rt_sigqueueinfo: ::c_long = 178;
+pub const SYS_rt_sigsuspend: ::c_long = 179;
+pub const SYS_pread64: ::c_long = 180;
+pub const SYS_pwrite64: ::c_long = 181;
+pub const SYS_chown: ::c_long = 182;
+pub const SYS_getcwd: ::c_long = 183;
+pub const SYS_capget: ::c_long = 184;
+pub const SYS_capset: ::c_long = 185;
+pub const SYS_sigaltstack: ::c_long = 186;
+pub const SYS_sendfile: ::c_long = 187;
+pub const SYS_vfork: ::c_long = 190;
+pub const SYS_ugetrlimit: ::c_long = 191;
+pub const SYS_mmap2: ::c_long = 192;
+pub const SYS_truncate64: ::c_long = 193;
+pub const SYS_ftruncate64: ::c_long = 194;
+pub const SYS_stat64: ::c_long = 195;
+pub const SYS_lstat64: ::c_long = 196;
+pub const SYS_fstat64: ::c_long = 197;
+pub const SYS_lchown32: ::c_long = 198;
+pub const SYS_getuid32: ::c_long = 199;
+pub const SYS_getgid32: ::c_long = 200;
+pub const SYS_geteuid32: ::c_long = 201;
+pub const SYS_getegid32: ::c_long = 202;
+pub const SYS_setreuid32: ::c_long = 203;
+pub const SYS_setregid32: ::c_long = 204;
+pub const SYS_getgroups32: ::c_long = 205;
+pub const SYS_setgroups32: ::c_long = 206;
+pub const SYS_fchown32: ::c_long = 207;
+pub const SYS_setresuid32: ::c_long = 208;
+pub const SYS_getresuid32: ::c_long = 209;
+pub const SYS_setresgid32: ::c_long = 210;
+pub const SYS_getresgid32: ::c_long = 211;
+pub const SYS_chown32: ::c_long = 212;
+pub const SYS_setuid32: ::c_long = 213;
+pub const SYS_setgid32: ::c_long = 214;
+pub const SYS_setfsuid32: ::c_long = 215;
+pub const SYS_setfsgid32: ::c_long = 216;
+pub const SYS_getdents64: ::c_long = 217;
+pub const SYS_pivot_root: ::c_long = 218;
+pub const SYS_mincore: ::c_long = 219;
+pub const SYS_madvise: ::c_long = 220;
+pub const SYS_fcntl64: ::c_long = 221;
+pub const SYS_gettid: ::c_long = 224;
+pub const SYS_readahead: ::c_long = 225;
+pub const SYS_setxattr: ::c_long = 226;
+pub const SYS_lsetxattr: ::c_long = 227;
+pub const SYS_fsetxattr: ::c_long = 228;
+pub const SYS_getxattr: ::c_long = 229;
+pub const SYS_lgetxattr: ::c_long = 230;
+pub const SYS_fgetxattr: ::c_long = 231;
+pub const SYS_listxattr: ::c_long = 232;
+pub const SYS_llistxattr: ::c_long = 233;
+pub const SYS_flistxattr: ::c_long = 234;
+pub const SYS_removexattr: ::c_long = 235;
+pub const SYS_lremovexattr: ::c_long = 236;
+pub const SYS_fremovexattr: ::c_long = 237;
+pub const SYS_tkill: ::c_long = 238;
+pub const SYS_sendfile64: ::c_long = 239;
+pub const SYS_futex: ::c_long = 240;
+pub const SYS_sched_setaffinity: ::c_long = 241;
+pub const SYS_sched_getaffinity: ::c_long = 242;
+pub const SYS_io_setup: ::c_long = 243;
+pub const SYS_io_destroy: ::c_long = 244;
+pub const SYS_io_getevents: ::c_long = 245;
+pub const SYS_io_submit: ::c_long = 246;
+pub const SYS_io_cancel: ::c_long = 247;
+pub const SYS_exit_group: ::c_long = 248;
+pub const SYS_lookup_dcookie: ::c_long = 249;
+pub const SYS_epoll_create: ::c_long = 250;
+pub const SYS_epoll_ctl: ::c_long = 251;
+pub const SYS_epoll_wait: ::c_long = 252;
+pub const SYS_remap_file_pages: ::c_long = 253;
+pub const SYS_set_tid_address: ::c_long = 256;
+pub const SYS_timer_create: ::c_long = 257;
+pub const SYS_timer_settime: ::c_long = 258;
+pub const SYS_timer_gettime: ::c_long = 259;
+pub const SYS_timer_getoverrun: ::c_long = 260;
+pub const SYS_timer_delete: ::c_long = 261;
+pub const SYS_clock_settime: ::c_long = 262;
+pub const SYS_clock_gettime: ::c_long = 263;
+pub const SYS_clock_getres: ::c_long = 264;
+pub const SYS_clock_nanosleep: ::c_long = 265;
+pub const SYS_statfs64: ::c_long = 266;
+pub const SYS_fstatfs64: ::c_long = 267;
+pub const SYS_tgkill: ::c_long = 268;
+pub const SYS_utimes: ::c_long = 269;
+pub const SYS_pciconfig_iobase: ::c_long = 271;
+pub const SYS_pciconfig_read: ::c_long = 272;
+pub const SYS_pciconfig_write: ::c_long = 273;
+pub const SYS_mq_open: ::c_long = 274;
+pub const SYS_mq_unlink: ::c_long = 275;
+pub const SYS_mq_timedsend: ::c_long = 276;
+pub const SYS_mq_timedreceive: ::c_long = 277;
+pub const SYS_mq_notify: ::c_long = 278;
+pub const SYS_mq_getsetattr: ::c_long = 279;
+pub const SYS_waitid: ::c_long = 280;
+pub const SYS_socket: ::c_long = 281;
+pub const SYS_bind: ::c_long = 282;
+pub const SYS_connect: ::c_long = 283;
+pub const SYS_listen: ::c_long = 284;
+pub const SYS_accept: ::c_long = 285;
+pub const SYS_getsockname: ::c_long = 286;
+pub const SYS_getpeername: ::c_long = 287;
+pub const SYS_socketpair: ::c_long = 288;
+pub const SYS_send: ::c_long = 289;
+pub const SYS_sendto: ::c_long = 290;
+pub const SYS_recv: ::c_long = 291;
+pub const SYS_recvfrom: ::c_long = 292;
+pub const SYS_shutdown: ::c_long = 293;
+pub const SYS_setsockopt: ::c_long = 294;
+pub const SYS_getsockopt: ::c_long = 295;
+pub const SYS_sendmsg: ::c_long = 296;
+pub const SYS_recvmsg: ::c_long = 297;
+pub const SYS_semop: ::c_long = 298;
+pub const SYS_semget: ::c_long = 299;
+pub const SYS_semctl: ::c_long = 300;
+pub const SYS_msgsnd: ::c_long = 301;
+pub const SYS_msgrcv: ::c_long = 302;
+pub const SYS_msgget: ::c_long = 303;
+pub const SYS_msgctl: ::c_long = 304;
+pub const SYS_shmat: ::c_long = 305;
+pub const SYS_shmdt: ::c_long = 306;
+pub const SYS_shmget: ::c_long = 307;
+pub const SYS_shmctl: ::c_long = 308;
+pub const SYS_add_key: ::c_long = 309;
+pub const SYS_request_key: ::c_long = 310;
+pub const SYS_keyctl: ::c_long = 311;
+pub const SYS_semtimedop: ::c_long = 312;
+pub const SYS_vserver: ::c_long = 313;
+pub const SYS_ioprio_set: ::c_long = 314;
+pub const SYS_ioprio_get: ::c_long = 315;
+pub const SYS_inotify_init: ::c_long = 316;
+pub const SYS_inotify_add_watch: ::c_long = 317;
+pub const SYS_inotify_rm_watch: ::c_long = 318;
+pub const SYS_mbind: ::c_long = 319;
+pub const SYS_get_mempolicy: ::c_long = 320;
+pub const SYS_set_mempolicy: ::c_long = 321;
+pub const SYS_openat: ::c_long = 322;
+pub const SYS_mkdirat: ::c_long = 323;
+pub const SYS_mknodat: ::c_long = 324;
+pub const SYS_fchownat: ::c_long = 325;
+pub const SYS_futimesat: ::c_long = 326;
+pub const SYS_fstatat64: ::c_long = 327;
+pub const SYS_unlinkat: ::c_long = 328;
+pub const SYS_renameat: ::c_long = 329;
+pub const SYS_linkat: ::c_long = 330;
+pub const SYS_symlinkat: ::c_long = 331;
+pub const SYS_readlinkat: ::c_long = 332;
+pub const SYS_fchmodat: ::c_long = 333;
+pub const SYS_faccessat: ::c_long = 334;
+pub const SYS_pselect6: ::c_long = 335;
+pub const SYS_ppoll: ::c_long = 336;
+pub const SYS_unshare: ::c_long = 337;
+pub const SYS_set_robust_list: ::c_long = 338;
+pub const SYS_get_robust_list: ::c_long = 339;
+pub const SYS_splice: ::c_long = 340;
+pub const SYS_tee: ::c_long = 342;
+pub const SYS_vmsplice: ::c_long = 343;
+pub const SYS_move_pages: ::c_long = 344;
+pub const SYS_getcpu: ::c_long = 345;
+pub const SYS_epoll_pwait: ::c_long = 346;
+pub const SYS_kexec_load: ::c_long = 347;
+pub const SYS_utimensat: ::c_long = 348;
+pub const SYS_signalfd: ::c_long = 349;
+pub const SYS_timerfd_create: ::c_long = 350;
+pub const SYS_eventfd: ::c_long = 351;
+pub const SYS_fallocate: ::c_long = 352;
+pub const SYS_timerfd_settime: ::c_long = 353;
+pub const SYS_timerfd_gettime: ::c_long = 354;
+pub const SYS_signalfd4: ::c_long = 355;
+pub const SYS_eventfd2: ::c_long = 356;
+pub const SYS_epoll_create1: ::c_long = 357;
+pub const SYS_dup3: ::c_long = 358;
+pub const SYS_pipe2: ::c_long = 359;
+pub const SYS_inotify_init1: ::c_long = 360;
+pub const SYS_preadv: ::c_long = 361;
+pub const SYS_pwritev: ::c_long = 362;
+pub const SYS_rt_tgsigqueueinfo: ::c_long = 363;
+pub const SYS_perf_event_open: ::c_long = 364;
+pub const SYS_recvmmsg: ::c_long = 365;
+pub const SYS_accept4: ::c_long = 366;
+pub const SYS_fanotify_init: ::c_long = 367;
+pub const SYS_fanotify_mark: ::c_long = 368;
+pub const SYS_prlimit64: ::c_long = 369;
+pub const SYS_name_to_handle_at: ::c_long = 370;
+pub const SYS_open_by_handle_at: ::c_long = 371;
+pub const SYS_clock_adjtime: ::c_long = 372;
+pub const SYS_syncfs: ::c_long = 373;
+pub const SYS_sendmmsg: ::c_long = 374;
+pub const SYS_setns: ::c_long = 375;
+pub const SYS_process_vm_readv: ::c_long = 376;
+pub const SYS_process_vm_writev: ::c_long = 377;
+pub const SYS_kcmp: ::c_long = 378;
+pub const SYS_finit_module: ::c_long = 379;
+pub const SYS_sched_setattr: ::c_long = 380;
+pub const SYS_sched_getattr: ::c_long = 381;
+pub const SYS_renameat2: ::c_long = 382;
+pub const SYS_seccomp: ::c_long = 383;
+pub const SYS_getrandom: ::c_long = 384;
+pub const SYS_memfd_create: ::c_long = 385;
+pub const SYS_bpf: ::c_long = 386;
+pub const SYS_execveat: ::c_long = 387;
+pub const SYS_userfaultfd: ::c_long = 388;
+pub const SYS_membarrier: ::c_long = 389;
+pub const SYS_mlock2: ::c_long = 390;
+pub const SYS_copy_file_range: ::c_long = 391;
+pub const SYS_preadv2: ::c_long = 392;
+pub const SYS_pwritev2: ::c_long = 393;
+pub const SYS_pkey_mprotect: ::c_long = 394;
+pub const SYS_pkey_alloc: ::c_long = 395;
+pub const SYS_pkey_free: ::c_long = 396;
+
fn CMSG_ALIGN(len: usize) -> usize {
len + ::mem::size_of::<usize>() - 1 & !(::mem::size_of::<usize>() - 1)
}
diff --git a/libc/src/unix/uclibc/mips/mod.rs b/libc/src/unix/uclibc/mips/mod.rs
index fa4b0cb..6a9b41c 100644
--- a/libc/src/unix/uclibc/mips/mod.rs
+++ b/libc/src/unix/uclibc/mips/mod.rs
@@ -224,6 +224,7 @@ pub const SO_MAX_PACING_RATE: ::c_int = 47;
pub const SO_BPF_EXTENSIONS: ::c_int = 48;
pub const FIOCLEX: ::c_ulong = 0x6601;
+pub const FIONCLEX: ::c_ulong = 0x6602;
pub const FIONBIO: ::c_ulong = 0x667e;
pub const SA_ONSTACK: ::c_uint = 0x08000000;
diff --git a/libc/src/unix/uclibc/mod.rs b/libc/src/unix/uclibc/mod.rs
index 568e0bc..e1eda9b 100644
--- a/libc/src/unix/uclibc/mod.rs
+++ b/libc/src/unix/uclibc/mod.rs
@@ -146,19 +146,6 @@ s! {
pub int_n_sign_posn: ::c_char,
}
- pub struct sigevent {
- pub sigev_value: ::sigval,
- pub sigev_signo: ::c_int,
- pub sigev_notify: ::c_int,
- // Actually a union. We only expose sigev_notify_thread_id because it's
- // the most useful member
- pub sigev_notify_thread_id: ::c_int,
- #[cfg(target_pointer_width = "64")]
- __unused1: [::c_int; 11],
- #[cfg(target_pointer_width = "32")]
- __unused1: [::c_int; 12]
- }
-
pub struct rlimit64 {
pub rlim_cur: rlim64_t,
pub rlim_max: rlim64_t,
@@ -368,6 +355,19 @@ s_no_extra_traits! {
pub nl_pid: u32,
pub nl_groups: u32
}
+
+ pub struct sigevent {
+ pub sigev_value: ::sigval,
+ pub sigev_signo: ::c_int,
+ pub sigev_notify: ::c_int,
+ // Actually a union. We only expose sigev_notify_thread_id because it's
+ // the most useful member
+ pub sigev_notify_thread_id: ::c_int,
+ #[cfg(target_pointer_width = "64")]
+ __unused1: [::c_int; 11],
+ #[cfg(target_pointer_width = "32")]
+ __unused1: [::c_int; 12]
+ }
}
cfg_if! {
@@ -424,6 +424,36 @@ cfg_if! {
self.nl_groups.hash(state);
}
}
+
+ impl PartialEq for sigevent {
+ fn eq(&self, other: &sigevent) -> bool {
+ self.sigev_value == other.sigev_value
+ && self.sigev_signo == other.sigev_signo
+ && self.sigev_notify == other.sigev_notify
+ && self.sigev_notify_thread_id
+ == other.sigev_notify_thread_id
+ }
+ }
+ impl Eq for sigevent {}
+ impl ::fmt::Debug for sigevent {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("sigevent")
+ .field("sigev_value", &self.sigev_value)
+ .field("sigev_signo", &self.sigev_signo)
+ .field("sigev_notify", &self.sigev_notify)
+ .field("sigev_notify_thread_id",
+ &self.sigev_notify_thread_id)
+ .finish()
+ }
+ }
+ impl ::hash::Hash for sigevent {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.sigev_value.hash(state);
+ self.sigev_signo.hash(state);
+ self.sigev_notify.hash(state);
+ self.sigev_notify_thread_id.hash(state);
+ }
+ }
}
}
@@ -1445,13 +1475,6 @@ pub const NOSTR: ::nl_item = 0x503;
pub const FILENAME_MAX: ::c_uint = 4095;
-#[deprecated(
- since = "0.2.55",
- note = "If you are using this report to: \
- https://github.com/rust-lang/libc/issues/665"
-)]
-pub const AF_MAX: ::c_int = 39;
-
f! {
pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () {
let fd = fd as usize;
diff --git a/libc/src/vxworks/aarch64.rs b/libc/src/vxworks/aarch64.rs
new file mode 100644
index 0000000..577c8be
--- /dev/null
+++ b/libc/src/vxworks/aarch64.rs
@@ -0,0 +1,3 @@
+pub type c_char = u8;
+pub type c_long = i64;
+pub type c_ulong = u64;
diff --git a/libc/src/vxworks/arm.rs b/libc/src/vxworks/arm.rs
new file mode 100644
index 0000000..cfdce82
--- /dev/null
+++ b/libc/src/vxworks/arm.rs
@@ -0,0 +1,3 @@
+pub type c_char = u8;
+pub type c_long = i32;
+pub type c_ulong = u32;
diff --git a/libc/src/vxworks/armv7.rs b/libc/src/vxworks/armv7.rs
new file mode 100644
index 0000000..9b0b338
--- /dev/null
+++ b/libc/src/vxworks/armv7.rs
@@ -0,0 +1,2 @@
+pub type c_long = i32;
+pub type c_ulong = u32;
diff --git a/libc/src/vxworks/mod.rs b/libc/src/vxworks/mod.rs
new file mode 100755
index 0000000..19aa2b6
--- /dev/null
+++ b/libc/src/vxworks/mod.rs
@@ -0,0 +1,2319 @@
+//! Hacking together the definitions for VxWorks Bindings
+use core::mem::size_of;
+use core::ptr::null_mut;
+
+#[cfg_attr(feature = "extra_traits", derive(Debug))]
+pub enum DIR {}
+impl ::Copy for DIR {}
+impl ::Clone for DIR {
+ fn clone(&self) -> DIR {
+ *self
+ }
+}
+
+pub type c_schar = i8;
+pub type c_uchar = u8;
+pub type c_short = i16;
+pub type c_ushort = u16;
+pub type c_int = i32;
+pub type c_uint = u32;
+pub type c_float = f32;
+pub type c_double = f64;
+pub type c_longlong = i64;
+pub type c_ulonglong = u64;
+pub type intmax_t = i64;
+pub type uintmax_t = u64;
+
+pub type size_t = usize;
+pub type ptrdiff_t = isize;
+pub type intptr_t = isize;
+pub type uintptr_t = usize;
+pub type ssize_t = isize;
+
+pub type pid_t = i32;
+pub type in_addr_t = u32;
+pub type in_port_t = u16;
+pub type sighandler_t = ::size_t;
+pub type cc_t = ::c_uchar;
+
+pub type blkcnt_t = ::c_long;
+pub type blksize_t = ::c_long;
+pub type ino_t = ::c_ulong;
+pub type ino32_t = u32;
+pub type off_t = ::c_longlong;
+
+pub type rlim_t = ::c_ulonglong;
+pub type suseconds_t = ::c_long;
+pub type time_t = ::c_long;
+pub type wchar_t = ::c_int;
+pub type errno_t = ::c_int;
+
+pub type useconds_t = ::c_ulong;
+
+pub type socklen_t = ::c_int;
+
+pub type pthread_t = ::c_ulong;
+
+pub type clockid_t = ::c_int;
+
+//defined for the structs
+pub type dev_t = ::c_ulong;
+pub type mode_t = ::c_int;
+pub type nlink_t = ::c_ulong;
+pub type uid_t = ::c_ushort;
+pub type gid_t = ::c_ushort;
+pub type sigset_t = ::c_ulonglong;
+pub type key_t = ::c_long;
+pub type shmatt_t = ::c_ulong;
+
+pub type mqd_t = ::c_int;
+
+pub type nfds_t = ::c_uint;
+pub type nl_item = ::c_int;
+pub type stat64 = ::stat;
+
+pub type pthread_key_t = ::c_ulong;
+
+// From b_off_t.h
+pub type off64_t = ::c_longlong;
+pub type off_t64 = ::c_longlong;
+
+// From b_BOOL.h
+pub type BOOL = ::c_int; // excuse me what
+
+//Straight from vxWind.h ..
+pub type _Vx_OBJ_HANDLE = ::c_int;
+pub type _Vx_TASK_ID = ::_Vx_OBJ_HANDLE;
+pub type _Vx_MSG_Q_ID = ::_Vx_OBJ_HANDLE;
+pub type _Vx_SEM_ID_KERNEL = ::_Vx_OBJ_HANDLE;
+pub type _Vx_RTP_ID = ::_Vx_OBJ_HANDLE;
+pub type _Vx_SD_ID = ::_Vx_OBJ_HANDLE;
+pub type _Vx_CONDVAR_ID = ::_Vx_OBJ_HANDLE;
+pub type _Vx_SEM_ID = *mut ::_Vx_semaphore;
+pub type OBJ_HANDLE = ::_Vx_OBJ_HANDLE;
+pub type TASK_ID = ::OBJ_HANDLE;
+pub type MSG_Q_ID = ::OBJ_HANDLE;
+pub type SEM_ID_KERNEL = ::OBJ_HANDLE;
+pub type RTP_ID = ::OBJ_HANDLE;
+pub type SD_ID = ::OBJ_HANDLE;
+pub type CONDVAR_ID = ::OBJ_HANDLE;
+
+// From vxTypes.h
+pub type _Vx_usr_arg_t = ::ssize_t; // c_int for LP32
+pub type _Vx_exit_code_t = ::ssize_t; // c_int for LP32
+pub type _Vx_ticks_t = ::c_uint;
+pub type _Vx_ticks64_t = ::c_ulonglong;
+
+// From vxTypesBase.h
+pub type va_list = *mut ::c_char;
+
+pub type sa_family_t = ::c_uchar;
+
+// structs that only exist in userspace
+s! {
+ // b_struct_vx_eventsResourceCb.h
+ pub struct _Vx_EVENTS_RSRC {
+ pub registered : ::c_uint,
+ pub taskId : ::c_int,
+ pub options : ::c_uchar,
+ pub pad : [::c_uchar; 3],
+ }
+
+ // b_struct_vx_semaphore.h
+ pub struct _Vx_semaphore {
+ pub magic : ::c_uint,
+ pub semType: ::c_uint,
+ pub options: ::c_uint,
+ pub recurse: ::c_uint,
+ pub owned_k: ::c_uint, // owned_k is volatile
+ pub semId_k: ::_Vx_SEM_ID_KERNEL,
+ pub state : ::c_uint, //state is union of _Vx_UINT and _Vx_UINT
+ pub events : ::_Vx_EVENTS_RSRC,
+ }
+
+ // b_pthread_condattr_t.h
+ pub struct pthread_condattr_t {
+ pub condAttrStatus: ::c_int,
+ pub condAttrPshared: ::c_int,
+ pub _CondAttrClockId: ::clockid_t,
+ }
+
+ // b_pthread_cond_t.h
+ pub struct pthread_cond_t{
+ pub condSemId: ::_Vx_SEM_ID,
+ pub condValid: ::c_int,
+ pub condInitted: ::c_int,
+ pub condRefCount: ::c_int,
+ pub condMutex: *mut ::pthread_mutex_t,
+ pub condAttr: ::pthread_condattr_t,
+ pub condSemName: [::c_char; PTHREAD_SHARED_SEM_NAME_MAX]
+ }
+
+ // b_pthread_rwlockattr_t.h
+ pub struct pthread_rwlockattr_t {
+ pub rwlockAttrStatus: ::c_int,
+ pub rwlockAttrMaxReaders: ::c_uint,
+ }
+
+ // b_pthread_rwlock_t.h
+ pub struct pthread_rwlock_t {
+ pub rwlockSemId: :: _Vx_SEM_ID,
+ pub rwlockReadersRefCount: ::c_int,
+ pub rwlockValid: ::c_int,
+ pub rwlockInitted: ::c_int,
+ pub rwlockAttr: ::pthread_rwlockattr_t,
+ pub rwlockName: [::c_char; PTHREAD_SHARED_SEM_NAME_MAX]
+ }
+
+ // b_struct_timeval.h
+ pub struct timeval {
+ pub tv_sec: ::time_t,
+ pub tv_usec: ::suseconds_t,
+ }
+
+ // socket.h
+ pub struct sockaddr {
+ pub sa_len : ::c_uchar,
+ pub sa_family : sa_family_t,
+ pub sa_data : [::c_char; 14],
+ }
+
+ // socket.h
+ pub struct sockaddr_storage {
+ pub ss_len : ::c_uchar,
+ pub ss_family : ::sa_family_t,
+ pub __ss_pad1 : [::c_char; _SS_PAD1SIZE],
+ pub __ss_align : i32,
+ // pub __ss_pad2 : [::c_char; _SS_PAD2SIZE],
+ pub __ss_pad2 : [::c_char; 32],
+ pub __ss_pad3 : [::c_char; 32],
+ pub __ss_pad4 : [::c_char; 32],
+ pub __ss_pad5 : [::c_char; 32],
+ }
+ pub struct iovec {
+ pub iov_base: *mut ::c_void,
+ pub iov_len: ::size_t,
+ }
+
+ // poll.h
+ pub struct pollfd {
+ pub fd : ::c_int,
+ pub events : ::c_short,
+ pub revents : ::c_short,
+ }
+
+ // dirent.h
+ pub struct dirent {
+ pub d_ino : ::ino_t,
+ // pub d_name : [::c_char; (_PARM_NAME_MAX + 1)],
+ pub d_name : [::c_char; 32],
+ pub d_name1 : [::c_char; 32],
+ pub d_name2 : [::c_char; 32],
+ pub d_name3 : [::c_char; 32],
+ pub d_name4 : [::c_char; 32],
+ pub d_name5 : [::c_char; 32],
+ pub d_name6 : [::c_char; 32],
+ pub d_name7 : [::c_char; 32],
+ }
+
+ pub struct dirent64 {
+ pub d_ino : ::ino_t,
+ pub d_off : ::off64_t,
+ pub d_reclen : u16,
+ pub d_type : u8,
+ // pub d_name : [::c_char; 256],
+ pub d_name : [::c_char; 32],
+ pub d_name1 : [::c_char; 32],
+ pub d_name2 : [::c_char; 32],
+ pub d_name3 : [::c_char; 32],
+ pub d_name4 : [::c_char; 32],
+ pub d_name5 : [::c_char; 32],
+ pub d_name6 : [::c_char; 32],
+ pub d_name7 : [::c_char; 32],
+ } // Doesn't seem like it exists anymore
+
+ // resource.h
+ pub struct rlimit { /* Is this really needed? Questionable ... */
+ pub rlim_cur : ::size_t,
+ pub rlim_max : ::size_t,
+ }
+
+ // stat.h
+ pub struct stat {
+ pub st_dev : ::dev_t,
+ pub st_ino : ::ino_t,
+ pub st_mode : ::mode_t,
+ pub st_nlink : ::nlink_t,
+ pub st_uid : ::uid_t,
+ pub st_gid : ::gid_t,
+ pub st_rdev : ::dev_t,
+ pub st_size : ::off64_t,
+ pub st_atime : ::time_t,
+ pub st_mtime : ::time_t,
+ pub st_ctime : ::time_t,
+ pub st_blksize : ::blksize_t,
+ pub st_blocks : ::blkcnt_t,
+ pub st_attrib : ::c_uchar,
+ pub st_reserved1 : ::c_int,
+ pub st_reserved2 : ::c_int,
+ pub st_reserved3 : ::c_int,
+ pub st_reserved4 : ::c_int,
+ }
+
+ //b_struct__Timespec.h
+ pub struct _Timespec {
+ pub tv_sec : ::time_t,
+ pub tv_nsec : ::c_long,
+ }
+
+ // b_struct__Sched_param.h
+ pub struct _Sched_param {
+ pub sched_priority: ::c_int, /* scheduling priority */
+ pub sched_ss_low_priority: ::c_int, /* low scheduling priority */
+ pub sched_ss_repl_period: ::_Timespec, /* replenishment period */
+ pub sched_ss_init_budget: ::_Timespec, /* initial budget */
+ pub sched_ss_max_repl: ::c_int, /* max pending replenishment */
+
+ }
+
+ // b_pthread_attr_t.h
+ pub struct pthread_attr_t {
+ pub threadAttrStatus : ::c_int,
+ pub threadAttrStacksize : ::size_t,
+ pub threadAttrStackaddr : *mut ::c_void,
+ pub threadAttrGuardsize : ::size_t,
+ pub threadAttrDetachstate : ::c_int,
+ pub threadAttrContentionscope : ::c_int,
+ pub threadAttrInheritsched : ::c_int,
+ pub threadAttrSchedpolicy : ::c_int,
+ pub threadAttrName : *mut ::c_char,
+ pub threadAttrOptions : ::c_int,
+ pub threadAttrSchedparam : ::_Sched_param,
+ }
+
+ // signal.h
+ pub struct sigaction { // pulled from kernel side,
+ pub sa_u : ::size_t,
+ // This is a union of two function pointers.
+ // Under the assumption that function pointers are the same
+ // size as other pointers, we can replace the union with size_t
+ pub sa_mask : ::sigset_t,
+ pub sa_flags : ::c_int,
+ }
+
+ // b_stack_t.h
+ pub struct stack_t {
+ pub ss_sp : *mut ::c_void,
+ pub ss_size : ::size_t,
+ pub ss_flags : ::c_int,
+ }
+
+ // signal.h
+ pub struct siginfo_t {
+ pub si_signo : ::c_int,
+ pub si_code : ::c_int,
+ // This field is a union of int and void * in vxworks
+ // The size has been set to the larger of the two
+ pub si_value : ::size_t,
+ }
+
+ pub struct ipc_perm {
+ pub __key : key_t,
+ pub uid : uid_t,
+ pub gid : gid_t,
+ pub cuid : uid_t,
+ pub cgid : gid_t,
+ pub mode : ::c_ushort,
+ pub __seq : ::c_ushort,
+ }
+
+ pub struct shmid_ds {
+ pub shm_perm : ipc_perm,
+ pub shm_segsz : ::c_int,
+ }
+
+ // pthread.h (krnl)
+ // b_pthread_mutexattr_t.h (usr)
+ pub struct pthread_mutexattr_t {
+ mutexAttrStatus : ::c_int,
+ mutexAttrPshared : ::c_int,
+ mutexAttrProtocol : ::c_int,
+ mutexAttrPrioceiling : ::c_int,
+ mutexAttrType : ::c_int,
+ }
+
+ // pthread.h (krnl)
+ // b_pthread_mutex_t.h (usr)
+ pub struct pthread_mutex_t {
+ pub mutexSemId: ::_Vx_SEM_ID, /*_Vx_SEM_ID ..*/
+ pub mutexValid: ::c_int,
+ pub mutexInitted: ::c_int,
+ pub mutexCondRefCount: ::c_int,
+ pub mutexSavPriority: ::c_int,
+ pub mutexAttr: ::pthread_mutexattr_t,
+ pub mutexSemName: [::c_char; PTHREAD_SHARED_SEM_NAME_MAX],
+ }
+
+ // b_struct_timespec.h
+ pub struct timespec {
+ pub tv_sec: ::time_t,
+ pub tv_nsec: ::c_long,
+ }
+
+ // in.h
+ pub struct in_addr {
+ pub s_addr: in_addr_t,
+ }
+
+ // in.h
+ pub struct ip_mreq {
+ pub imr_multiaddr: in_addr,
+ pub imr_interface: in_addr,
+ }
+
+ // in6.h
+ pub struct in6_addr {
+ pub s6_addr: [u8; 16],
+ }
+
+ // in6.h
+ pub struct ipv6_mreq {
+ pub ipv6mr_multiaddr: in6_addr,
+ pub ipv6mr_interface: ::c_uint,
+ }
+
+ // netdb.h
+ pub struct addrinfo {
+ pub ai_flags : ::c_int,
+ pub ai_family : ::c_int,
+ pub ai_socktype : ::c_int,
+ pub ai_protocol : ::c_int,
+ pub ai_addrlen : ::size_t,
+ pub ai_canonname: *mut ::c_char,
+ pub ai_addr : *mut ::sockaddr,
+ pub ai_next : *mut ::addrinfo,
+ }
+
+ // in.h
+ pub struct sockaddr_in {
+ pub sin_len : u8,
+ pub sin_family: u8,
+ pub sin_port : u16,
+ pub sin_addr : ::in_addr,
+ pub sin_zero : [::c_char; 8],
+ }
+
+ // in6.h
+ // There is a different implementation in ipv6.h in
+ // krnl directory, but this seems to only happen
+ // when the VSB is built for ipv6 only.
+ pub struct sockaddr_in6 {
+ pub sin6_len : u8,
+ pub sin6_family : u8,
+ pub sin6_port : u16,
+ pub sin6_flowinfo: u32,
+ pub sin6_addr : ::in6_addr,
+ pub sin6_scope_id: u32,
+ }
+
+ pub struct sockaddr_un {
+ pub sun_family: sa_family_t,
+ //pub sun_path: [::c_char; 108]
+ pub sun_path: [::c_char; 32],
+ pub sun_path1: [::c_char; 32],
+ pub sun_path2: [::c_char; 32],
+ pub sun_path3: [::c_char; 12],
+ }
+
+ pub struct passwd {
+ pub pw_name: *mut ::c_char,
+ pub pw_uid: ::uid_t,
+ pub pw_gid: ::gid_t,
+ pub pw_dir: *mut ::c_char,
+ pub pw_shell: *mut ::c_char,
+ }
+
+ // rtpLibCommon.h
+ pub struct RTP_DESC {
+ pub status : ::c_int,
+ pub options : u32,
+ pub entrAddr : *mut ::c_void,
+ pub initTaskId: ::TASK_ID,
+ pub parentId : ::RTP_ID,
+ //pub pathName : [::c_char; (VX_RTP_NAME_LENGTH + 1)],
+ pub pathName : [::c_char; 32],
+ pub pathName1 : [::c_char; 32],
+ pub pathName2 : [::c_char; 32],
+ pub pathName3 : [::c_char; 32],
+ pub pathName4 : [::c_char; 32],
+ pub pathName5 : [::c_char; 32],
+ pub pathName6 : [::c_char; 32],
+ pub pathName7 : [::c_char; 32],
+ pub taskCnt : u32,
+ pub textStart : *mut ::c_void,
+ pub textEnd : *mut ::c_void,
+ }
+
+ pub struct Dl_info {
+ pub dli_fname: *const ::c_char,
+ pub dli_fbase: *mut ::c_void,
+ pub dli_sname: *const ::c_char,
+ pub dli_saddr: *mut ::c_void,
+ }
+}
+
+pub const STDIN_FILENO: ::c_int = 0;
+pub const STDOUT_FILENO: ::c_int = 1;
+pub const STDERR_FILENO: ::c_int = 2;
+
+pub const EXIT_SUCCESS: ::c_int = 0;
+pub const EXIT_FAILURE: ::c_int = 1;
+
+pub const EAI_SERVICE: ::c_int = 9;
+pub const EAI_SOCKTYPE: ::c_int = 10;
+pub const EAI_SYSTEM: ::c_int = 11;
+
+pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void;
+
+//Clock Lib Stuff
+pub const CLOCK_REALTIME: ::c_int = 0x0;
+pub const CLOCK_MONOTONIC: ::c_int = 0x1;
+pub const CLOCK_PROCESS_CPUTIME_ID: ::c_int = 0x2;
+pub const CLOCK_THREAD_CPUTIME_ID: ::c_int = 0x3;
+pub const TIMER_ABSTIME: ::c_int = 0x1;
+pub const TIME_RELTIME: ::c_int = 0xFFFFFFFE;
+
+// PTHREAD STUFF
+pub const PTHREAD_INITIALIZED_OBJ: ::c_int = 0xF70990EF;
+pub const PTHREAD_DESTROYED_OBJ: ::c_int = -1;
+pub const PTHREAD_VALID_OBJ: ::c_int = 0xEC542A37;
+pub const PTHREAD_INVALID_OBJ: ::c_int = -1;
+pub const PTHREAD_UNUSED_YET_OBJ: ::c_int = -1;
+
+pub const PTHREAD_PRIO_NONE: ::c_int = 0;
+pub const PTHREAD_PRIO_INHERIT: ::c_int = 1;
+pub const PTHREAD_PRIO_PROTECT: ::c_int = 2;
+
+pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0;
+pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 1;
+pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 2;
+pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_NORMAL;
+pub const PTHREAD_STACK_MIN: usize = 4096;
+pub const PTHREAD_SHARED_SEM_NAME_MAX: usize = 30;
+
+pub const EFAULT: ::c_int = 14;
+pub const EBUSY: ::c_int = 16;
+pub const EEXIST: ::c_int = 17;
+pub const ENODEV: ::c_int = 19;
+pub const EINVAL: ::c_int = 22;
+pub const EPIPE: ::c_int = 32;
+pub const ERANGE: ::c_int = 34;
+
+// ERRNO STUFF
+pub const EPERM: ::c_int = 1; /* Not owner */
+pub const ENOENT: ::c_int = 2; /* No such file or directory */
+pub const ESRCH: ::c_int = 3; /* No such process */
+pub const EINTR: ::c_int = 4; /* Interrupted system call */
+pub const EIOA: ::c_int = 5; /* I/O error */
+pub const ENXIO: ::c_int = 6; /* No such device or address */
+pub const E2BIG: ::c_int = 7; /* Arg list too long */
+pub const ENOEXEC: ::c_int = 8; /* Exec format error */
+pub const EBADF: ::c_int = 9; /* Bad file number */
+pub const CHILD: ::c_int = 10; /* No children */
+pub const EAGAIN: ::c_int = 11; /* No more processes */
+pub const ENOMEM: ::c_int = 12; /* Not enough core */
+pub const EACCES: ::c_int = 13; /* Permission denied */
+pub const EDEADLK: ::c_int = 33;
+pub const EINPROGRESS: ::c_int = 68;
+pub const EALREADY: ::c_int = 69;
+pub const EWOULDBLOCK: ::c_int = 70;
+pub const ENOSYS: ::c_int = 71;
+pub const EDESTADDRREQ: ::c_int = 40;
+pub const EPROTOTYPE: ::c_int = 41;
+pub const ENOPROTOOPT: ::c_int = 42;
+pub const EPROTONOSUPPORT: ::c_int = 43;
+pub const ESOCKTNOSUPPORT: ::c_int = 44;
+pub const EOPNOTSUPP: ::c_int = 45;
+pub const EPFNOSUPPORT: ::c_int = 46;
+pub const EAFNOSUPPORT: ::c_int = 47;
+pub const EADDRINUSE: ::c_int = 48;
+pub const EADDRNOTAVAIL: ::c_int = 49;
+pub const ENOTSOCK: ::c_int = 50;
+pub const ENETUNREACH: ::c_int = 51;
+pub const ENETRESET: ::c_int = 52;
+pub const ECONNABORTED: ::c_int = 53;
+pub const ECONNRESET: ::c_int = 54;
+pub const ENOBUFS: ::c_int = 55;
+pub const EISCONN: ::c_int = 56;
+pub const ENOTCONN: ::c_int = 57;
+pub const ESHUTDOWN: ::c_int = 58;
+pub const ETOOMANYREFS: ::c_int = 59;
+pub const ETIMEDOUT: ::c_int = 60;
+pub const ECONNREFUSED: ::c_int = 61;
+
+// NFS errnos: Refer to pkgs_v2/storage/fs/nfs/h/nfs/nfsCommon.h
+const M_nfsStat: ::c_int = 48 << 16;
+enum nfsstat {
+ NFS_OK = 0,
+ NFSERR_PERM = 1,
+ NFSERR_NOENT = 2,
+ NFSERR_IO = 5,
+ NFSERR_NXIO = 6,
+ NFSERR_ACCESS = 13,
+ NFSERR_EXIST = 17,
+ NFSERR_XDEV = 18,
+ NFSERR_NODEV = 19,
+ NFSERR_NOTDIR = 20,
+ NFSERR_ISDIR = 21,
+ NFSERR_INVAL = 22,
+ NFSERR_FBIG = 27,
+ NFSERR_NOSPC = 28,
+ NFSERR_ROFS = 30,
+ NFSERR_MLINK = 31,
+ NFSERR_NAMETOOLONG = 63,
+ NFSERR_NOTEMPTY = 66,
+ NFSERR_DQUOT = 69,
+ NFSERR_STALE = 70,
+ NFSERR_REMOTE = 71,
+ NFSERR_WFLUSH = 99,
+ NFSERR_BADHANDLE = 10001,
+ NFSERR_NOT_SYNC = 10002,
+ NFSERR_BAD_COOKIE = 10003,
+ NFSERR_NOTSUPP = 10004,
+ NFSERR_TOOSMALL = 10005,
+ NFSERR_SERVERFAULT = 10006,
+ NFSERR_BADTYPE = 10007,
+ NFSERR_JUKEBOX = 10008,
+}
+
+pub const S_nfsLib_NFS_OK: ::c_int = M_nfsStat | nfsstat::NFS_OK as ::c_int;
+pub const S_nfsLib_NFSERR_PERM: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_PERM as ::c_int;
+pub const S_nfsLib_NFSERR_NOENT: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_NOENT as ::c_int;
+pub const S_nfsLib_NFSERR_IO: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_IO as ::c_int;
+pub const S_nfsLib_NFSERR_NXIO: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_NXIO as ::c_int;
+pub const S_nfsLib_NFSERR_ACCESS: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_ACCESS as ::c_int;
+pub const S_nfsLib_NFSERR_EXIST: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_EXIST as ::c_int;
+pub const S_nfsLib_NFSERR_XDEV: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_XDEV as ::c_int;
+pub const S_nfsLib_NFSERR_NODEV: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_NODEV as ::c_int;
+pub const S_nfsLib_NFSERR_NOTDIR: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_NOTDIR as ::c_int;
+pub const S_nfsLib_NFSERR_ISDIR: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_ISDIR as ::c_int;
+pub const S_nfsLib_NFSERR_INVAL: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_INVAL as ::c_int;
+pub const S_nfsLib_NFSERR_FBIG: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_FBIG as ::c_int;
+pub const S_nfsLib_NFSERR_NOSPC: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_NOSPC as ::c_int;
+pub const S_nfsLib_NFSERR_ROFS: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_ROFS as ::c_int;
+pub const S_nfsLib_NFSERR_MLINK: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_MLINK as ::c_int;
+pub const S_nfsLib_NFSERR_NAMETOOLONG: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_NAMETOOLONG as ::c_int;
+pub const S_nfsLib_NFSERR_NOTEMPTY: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_NOTEMPTY as ::c_int;
+pub const S_nfsLib_NFSERR_DQUOT: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_DQUOT as ::c_int;
+pub const S_nfsLib_NFSERR_STALE: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_STALE as ::c_int;
+pub const S_nfsLib_NFSERR_WFLUSH: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_WFLUSH as ::c_int;
+pub const S_nfsLib_NFSERR_REMOTE: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_REMOTE as ::c_int;
+pub const S_nfsLib_NFSERR_BADHANDLE: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_BADHANDLE as ::c_int;
+pub const S_nfsLib_NFSERR_NOT_SYNC: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_NOT_SYNC as ::c_int;
+pub const S_nfsLib_NFSERR_BAD_COOKIE: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_BAD_COOKIE as ::c_int;
+pub const S_nfsLib_NFSERR_NOTSUPP: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_NOTSUPP as ::c_int;
+pub const S_nfsLib_NFSERR_TOOSMALL: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_TOOSMALL as ::c_int;
+pub const S_nfsLib_NFSERR_SERVERFAULT: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_SERVERFAULT as ::c_int;
+pub const S_nfsLib_NFSERR_BADTYPE: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_BADTYPE as ::c_int;
+pub const S_nfsLib_NFSERR_JUKEBOX: ::c_int =
+ M_nfsStat | nfsstat::NFSERR_JUKEBOX as ::c_int;
+
+// IP Stuff? These are allll guesswork
+pub const IPPROTO_IP: ::c_int = 0;
+pub const IP_TTL: ::c_int = 4; // not sure if this is right
+pub const IP_ADD_MEMBERSHIP: ::c_int = 11;
+pub const IP_DROP_MEMBERSHIP: ::c_int = 12;
+pub const IPV6_V6ONLY: ::c_int = 26;
+pub const IP_MULTICAST_TTL: ::c_int = 33;
+pub const IP_MULTICAST_LOOP: ::c_int = 34;
+pub const IPV6_MULTICAST_LOOP: ::c_int = 19;
+pub const IPPROTO_IPV6: ::c_int = 41; // or this one, for that matter
+
+// STAT Stuff
+pub const S_IFMT: ::c_int = 0xf000;
+pub const S_IFIFO: ::c_int = 0x1000;
+pub const S_IFCHR: ::c_int = 0x2000;
+pub const S_IFDIR: ::c_int = 0x4000;
+pub const S_IFBLK: ::c_int = 0x6000;
+pub const S_IFREG: ::c_int = 0x8000;
+pub const S_IFLNK: ::c_int = 0xa000;
+pub const S_IFSHM: ::c_int = 0xb000;
+pub const S_IFDEVMEM: ::c_int = 0xd000;
+pub const S_IFSOCK: ::c_int = 0xc000;
+pub const S_ISUID: ::c_int = 0x0800;
+pub const S_ISGID: ::c_int = 0x0400;
+pub const S_ISTXT: ::c_int = 0x0200;
+pub const S_IRUSR: ::c_int = 0x0100;
+pub const S_IWUSR: ::c_int = 0x0080;
+pub const S_IXUSR: ::c_int = 0x0040;
+pub const S_IRWXU: ::c_int = 0x01c0;
+pub const S_IRGRP: ::c_int = 0x0020;
+pub const S_IWGRP: ::c_int = 0x0010;
+pub const S_IXGRP: ::c_int = 0x0008;
+pub const S_IRWXG: ::c_int = 0x0038;
+pub const S_IROTH: ::c_int = 0x0004;
+pub const S_IWOTH: ::c_int = 0x0002;
+pub const S_IXOTH: ::c_int = 0x0001;
+pub const S_IRWXO: ::c_int = 0x0007;
+
+pub const SOL_SOCKET: ::c_int = 0xffff;
+pub const SO_BROADCAST: ::c_int = 0x001e;
+pub const SO_SNDTIMEO: ::c_int = 0x1005;
+pub const SO_RCVTIMEO: ::c_int = 0x1006;
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SOCK_DGRAM: ::c_int = 2;
+pub const SOCK_RAW: ::c_int = 3;
+pub const SOCK_RDM: ::c_int = 4;
+pub const SOCK_SEQPACKET: ::c_int = 5;
+pub const SOCK_PACKET: ::c_int = 10;
+pub const SO_DEBUG: ::c_int = 0x0001;
+pub const SO_REUSEADDR: ::c_int = 0x0004;
+pub const SO_KEEPALIVE: ::c_int = 0x0008;
+pub const SO_DONTROUTE: ::c_int = 0x0010;
+pub const SO_RCVLOWAT: ::c_int = 0x0012;
+
+pub const _SS_MAXSIZE: usize = 128;
+pub const _SS_ALIGNSIZE: usize = size_of::<u32>();
+pub const _SS_PAD1SIZE: usize =
+ (_SS_ALIGNSIZE - size_of::<::c_uchar>() - size_of::<::sa_family_t>());
+pub const _SS_PAD2SIZE: usize = (_SS_MAXSIZE
+ - size_of::<::c_uchar>()
+ - size_of::<::sa_family_t>()
+ - _SS_PAD1SIZE
+ - _SS_ALIGNSIZE);
+
+pub const MSG_OOB: ::c_int = 0x0001;
+pub const MSG_PEEK: ::c_int = 0x0002;
+pub const MSG_DONTROUTE: ::c_int = 0x0004;
+pub const MSG_EOR: ::c_int = 0x0008;
+pub const MSG_TRUNC: ::c_int = 0x0010;
+pub const MSG_CTRUNC: ::c_int = 0x0020;
+pub const MSG_WAITALL: ::c_int = 0x0040;
+pub const MSG_DONTWAIT: ::c_int = 0x0080;
+pub const MSG_EOF: ::c_int = 0x0100;
+pub const MSG_EXP: ::c_int = 0x0200;
+pub const MSG_MBUF: ::c_int = 0x0400;
+pub const MSG_NOTIFICATION: ::c_int = 0x0800;
+pub const MSG_COMPAT: ::c_int = 0x8000;
+
+pub const AF_UNSPEC: ::c_int = 0;
+pub const AF_LOCAL: ::c_int = 1;
+pub const AF_UNIX: ::c_int = AF_LOCAL;
+pub const AF_INET: ::c_int = 2;
+pub const AF_NETLINK: ::c_int = 16;
+pub const AF_ROUTE: ::c_int = 17;
+pub const AF_LINK: ::c_int = 18;
+pub const AF_PACKET: ::c_int = 19;
+pub const pseudo_AF_KEY: ::c_int = 27;
+pub const AF_KEY: ::c_int = pseudo_AF_KEY;
+pub const AF_INET6: ::c_int = 28;
+pub const AF_SOCKDEV: ::c_int = 31;
+pub const AF_TIPC: ::c_int = 33;
+pub const AF_MIPC: ::c_int = 34;
+pub const AF_MIPC_SAFE: ::c_int = 35;
+pub const AF_MAX: ::c_int = 36;
+
+pub const SHUT_RD: ::c_int = 0;
+pub const SHUT_WR: ::c_int = 1;
+pub const SHUT_RDWR: ::c_int = 2;
+
+pub const IPPROTO_TCP: ::c_int = 6;
+pub const TCP_NODELAY: ::c_int = 1;
+pub const TCP_MAXSEG: ::c_int = 2;
+pub const TCP_NOPUSH: ::c_int = 3;
+pub const TCP_KEEPIDLE: ::c_int = 4;
+pub const TCP_KEEPINTVL: ::c_int = 5;
+pub const TCP_KEEPCNT: ::c_int = 6;
+pub const SO_ERROR: ::c_int = 4;
+
+// IO Lib Definitions:
+
+pub const FIONREAD: ::c_int = 1;
+pub const FIOFLUSH: ::c_int = 2;
+pub const FIOOPTIONS: ::c_int = 3;
+pub const FIOBAUDRATE: ::c_int = 4;
+pub const FIODISKFORMAT: ::c_int = 5;
+pub const FIODISKINIT: ::c_int = 6;
+pub const FIOSEEK: ::c_int = 7;
+pub const FIOWHERE: ::c_int = 8;
+pub const FIODIRENTRY: ::c_int = 9;
+pub const FIORENAME: ::c_int = 10;
+pub const FIOREADYCHANGE: ::c_int = 11;
+pub const FIOWRITE: ::c_int = 12;
+pub const FIODISKCHANGE: ::c_int = 13;
+pub const FIOCANCEL: ::c_int = 14;
+pub const FIOSQUEEZE: ::c_int = 15;
+pub const FIONBIO: ::c_int = -1878786032; // it goes on ...
+pub const _POSIX_PATH_MAX: ::c_int = 256;
+
+// Some poll stuff
+pub const POLLIN: ::c_short = 0x0001;
+pub const POLLPRI: ::c_short = 0x0002;
+pub const POLLOUT: ::c_short = 0x0004;
+pub const POLLRDNORM: ::c_short = 0x0040;
+pub const POLLWRNORM: ::c_short = POLLOUT;
+pub const POLLRDBAND: ::c_short = 0x0080;
+pub const POLLWRBAND: ::c_short = 0x0100;
+pub const POLLER: ::c_short = 0x0008;
+pub const POLLHUP: ::c_short = 0x0010;
+pub const POLLNVAL: ::c_short = 0x0020;
+
+//Some Fcntlcom Stuff (look at fcntlcom.h to find definitions)
+pub const FD_CLOEXEC: ::c_int = 1;
+pub const F_DUPFD: ::c_int = 0;
+pub const F_GETFD: ::c_int = 1;
+pub const F_SETFD: ::c_int = 2;
+pub const F_GETFL: ::c_int = 3;
+pub const F_SETFL: ::c_int = 4;
+pub const F_GETOWN: ::c_int = 5;
+pub const F_SETOWN: ::c_int = 6;
+pub const F_GETLK: ::c_int = 7;
+pub const F_SETLK: ::c_int = 8;
+pub const F_SETLKW: ::c_int = 9;
+pub const F_DUPFD_CLOEXEC: ::c_int = 14;
+
+//Some Dirent.h stuff
+pub const DT_UNKNOWN: ::c_uchar = 0x0;
+pub const DT_FIFO: ::c_uchar = 0x1;
+pub const DT_CHR: ::c_uchar = 0x2;
+pub const DT_DIR: ::c_uchar = 0x4;
+pub const DT_BLK: ::c_uchar = 0x6;
+pub const DT_REG: ::c_uchar = 0x8;
+pub const DT_LNK: ::c_uchar = 0xA;
+pub const DT_SOCK: ::c_uchar = 0xC;
+pub const DT_WHT: ::c_uchar = 0xE;
+
+// Other Random Stuff
+pub const VXSIM_EWOULDBLOCK: ::c_int = 70;
+pub const IPV6_ADD_MEMBERSHIP: ::c_int = 20;
+pub const IPV6_DROP_MEMBERSHIP: ::c_int = 21;
+
+pub const SIG_DFL: sighandler_t = 0 as sighandler_t;
+pub const SIG_IGN: sighandler_t = 1 as sighandler_t;
+pub const SIG_ERR: sighandler_t = !0 as sighandler_t;
+
+pub const SIGHUP: ::c_int = 1;
+pub const SIGINT: ::c_int = 2;
+pub const SIGQUIT: ::c_int = 3;
+pub const SIGILL: ::c_int = 4;
+pub const SIGTRAP: ::c_int = 5;
+pub const SIGABRT: ::c_int = 6;
+pub const SIGEMT: ::c_int = 7;
+pub const SIGFPE: ::c_int = 8;
+pub const SIGKILL: ::c_int = 9;
+pub const SIGBUS: ::c_int = 10;
+pub const SIGSEGV: ::c_int = 11;
+pub const SIGFMT: ::c_int = 12;
+pub const SIGPIPE: ::c_int = 13;
+pub const SIGALRM: ::c_int = 14;
+pub const SIGTERM: ::c_int = 15;
+pub const SIGCNCL: ::c_int = 16;
+pub const SIGSTOP: ::c_int = 17;
+pub const SIGTSTP: ::c_int = 18;
+pub const SIGCONT: ::c_int = 19;
+pub const SIGCHLD: ::c_int = 20;
+pub const SIGTTIN: ::c_int = 21;
+pub const SIGTTOU: ::c_int = 22;
+
+pub const SIG_BLOCK: ::c_int = 1;
+pub const SIG_UNBLOCK: ::c_int = 2;
+pub const SIG_SETMASK: ::c_int = 3;
+
+pub const SI_SYNC: ::c_int = 0;
+pub const SI_USER: ::c_int = -1;
+pub const SI_QUEUE: ::c_int = -2;
+pub const SI_TIMER: ::c_int = -3;
+pub const SI_ASYNCIO: ::c_int = -4;
+pub const SI_MESGQ: ::c_int = -5;
+pub const SI_CHILD: ::c_int = -6;
+pub const SI_KILL: ::c_int = SI_USER;
+
+// vxParams.h definitions
+pub const _PARM_NAME_MAX: usize = 255;
+pub const _PARM_PATH_MAX: usize = 1024;
+
+// WAIT STUFF
+pub const WNOHANG: ::c_int = 0x01;
+pub const WUNTRACED: ::c_int = 0x02;
+
+const PTHREAD_MUTEXATTR_INITIALIZER: pthread_mutexattr_t =
+ pthread_mutexattr_t {
+ mutexAttrStatus: PTHREAD_INITIALIZED_OBJ,
+ mutexAttrProtocol: PTHREAD_PRIO_NONE,
+ mutexAttrPrioceiling: 0,
+ mutexAttrType: PTHREAD_MUTEX_DEFAULT,
+ mutexAttrPshared: 1,
+ };
+pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t {
+ mutexSemId: null_mut(),
+ mutexValid: PTHREAD_VALID_OBJ,
+ mutexInitted: PTHREAD_UNUSED_YET_OBJ,
+ mutexCondRefCount: 0,
+ mutexSavPriority: 0,
+ mutexAttr: PTHREAD_MUTEXATTR_INITIALIZER,
+ mutexSemName: [0; PTHREAD_SHARED_SEM_NAME_MAX],
+};
+
+const PTHREAD_CONDATTR_INITIALIZER: pthread_condattr_t = pthread_condattr_t {
+ condAttrStatus: 0,
+ condAttrPshared: 0,
+ _CondAttrClockId: CLOCK_REALTIME,
+};
+pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t {
+ condSemId: null_mut(),
+ condValid: PTHREAD_VALID_OBJ,
+ condInitted: PTHREAD_UNUSED_YET_OBJ,
+ condRefCount: 0,
+ condMutex: null_mut(),
+ condAttr: PTHREAD_CONDATTR_INITIALIZER,
+ condSemName: [0; PTHREAD_SHARED_SEM_NAME_MAX],
+};
+
+const PTHREAD_RWLOCKATTR_INITIALIZER: pthread_rwlockattr_t =
+ pthread_rwlockattr_t {
+ rwlockAttrStatus: PTHREAD_INITIALIZED_OBJ,
+ rwlockAttrMaxReaders: 0,
+ };
+pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t {
+ rwlockSemId: null_mut(),
+ rwlockReadersRefCount: 0,
+ rwlockValid: PTHREAD_VALID_OBJ,
+ rwlockInitted: PTHREAD_UNUSED_YET_OBJ,
+ rwlockAttr: PTHREAD_RWLOCKATTR_INITIALIZER,
+ rwlockName: [0; PTHREAD_SHARED_SEM_NAME_MAX],
+};
+
+pub const SEEK_SET: ::c_int = 0;
+pub const SEEK_CUR: ::c_int = 1;
+pub const SEEK_END: ::c_int = 2;
+
+// rtpLibCommon.h
+pub const VX_RTP_NAME_LENGTH: usize = 255;
+
+//Some unsupported stuff
+pub const _SC_GETPW_R_SIZE_MAX: ::c_int = -1; // Via unistd.h
+pub const _SC_PAGESIZE: ::c_int = 64;
+pub const O_ACCMODE: ::c_int = 3;
+pub const O_CLOEXEC: ::c_int = 0x100000; // fcntlcom
+pub const O_EXCL: ::c_int = 0x0800;
+pub const O_CREAT: ::c_int = 0x0200;
+pub const O_TRUNC: ::c_int = 0x0400;
+pub const O_APPEND: ::c_int = 0x0008;
+pub const O_RDWR: ::c_int = 2;
+pub const O_WRONLY: ::c_int = 1;
+pub const O_RDONLY: ::c_int = 0;
+pub const O_NONBLOCK: ::c_int = 0x4;
+
+#[cfg_attr(feature = "extra_traits", derive(Debug))]
+pub enum FILE {}
+impl ::Copy for FILE {}
+impl ::Clone for FILE {
+ fn clone(&self) -> FILE {
+ *self
+ }
+}
+#[cfg_attr(feature = "extra_traits", derive(Debug))]
+pub enum fpos_t {} // TODO: fill this out with a struct
+impl ::Copy for fpos_t {}
+impl ::Clone for fpos_t {
+ fn clone(&self) -> fpos_t {
+ *self
+ }
+}
+
+extern {
+ pub fn isalnum(c: c_int) -> c_int;
+ pub fn isalpha(c: c_int) -> c_int;
+ pub fn iscntrl(c: c_int) -> c_int;
+ pub fn isdigit(c: c_int) -> c_int;
+ pub fn isgraph(c: c_int) -> c_int;
+ pub fn islower(c: c_int) -> c_int;
+ pub fn isprint(c: c_int) -> c_int;
+ pub fn ispunct(c: c_int) -> c_int;
+ pub fn isspace(c: c_int) -> c_int;
+ pub fn isupper(c: c_int) -> c_int;
+ pub fn isxdigit(c: c_int) -> c_int;
+ pub fn tolower(c: c_int) -> c_int;
+ pub fn toupper(c: c_int) -> c_int;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "fopen$UNIX2003"
+ )]
+ pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "freopen$UNIX2003"
+ )]
+ pub fn freopen(
+ filename: *const c_char,
+ mode: *const c_char,
+ file: *mut FILE,
+ ) -> *mut FILE;
+ pub fn fflush(file: *mut FILE) -> c_int;
+ pub fn fclose(file: *mut FILE) -> c_int;
+ pub fn remove(filename: *const c_char) -> c_int;
+ pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int;
+ pub fn tmpfile() -> *mut FILE;
+ pub fn setvbuf(
+ stream: *mut FILE,
+ buffer: *mut c_char,
+ mode: c_int,
+ size: size_t,
+ ) -> c_int;
+ pub fn setbuf(stream: *mut FILE, buf: *mut c_char);
+ pub fn getchar() -> c_int;
+ pub fn putchar(c: c_int) -> c_int;
+ pub fn fgetc(stream: *mut FILE) -> c_int;
+ pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE)
+ -> *mut c_char;
+ pub fn fputc(c: c_int, stream: *mut FILE) -> c_int;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "fputs$UNIX2003"
+ )]
+ pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int;
+ pub fn puts(s: *const c_char) -> c_int;
+ pub fn ungetc(c: c_int, stream: *mut FILE) -> c_int;
+ pub fn fread(
+ ptr: *mut c_void,
+ size: size_t,
+ nobj: size_t,
+ stream: *mut FILE,
+ ) -> size_t;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "fwrite$UNIX2003"
+ )]
+ pub fn fwrite(
+ ptr: *const c_void,
+ size: size_t,
+ nobj: size_t,
+ stream: *mut FILE,
+ ) -> size_t;
+ pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int;
+ pub fn ftell(stream: *mut FILE) -> c_long;
+ pub fn rewind(stream: *mut FILE);
+ #[cfg_attr(target_os = "netbsd", link_name = "__fgetpos50")]
+ pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int;
+ #[cfg_attr(target_os = "netbsd", link_name = "__fsetpos50")]
+ pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int;
+ 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 atoi(s: *const c_char) -> c_int;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "strtod$UNIX2003"
+ )]
+ pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;
+ pub fn strtol(
+ s: *const c_char,
+ endp: *mut *mut c_char,
+ base: c_int,
+ ) -> c_long;
+ pub fn strtoul(
+ s: *const c_char,
+ endp: *mut *mut c_char,
+ base: c_int,
+ ) -> c_ulong;
+ pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;
+ pub fn malloc(size: size_t) -> *mut c_void;
+ pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;
+ pub fn free(p: *mut c_void);
+ pub fn abort() -> !;
+ pub fn exit(status: c_int) -> !;
+ // pub fn _exit(status: c_int) -> !;
+ pub fn atexit(cb: extern fn()) -> c_int;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "system$UNIX2003"
+ )]
+ pub fn system(s: *const c_char) -> c_int;
+ pub fn getenv(s: *const c_char) -> *mut c_char;
+
+ pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;
+ pub fn strncpy(
+ dst: *mut c_char,
+ src: *const c_char,
+ n: size_t,
+ ) -> *mut c_char;
+ pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;
+ pub fn strncat(
+ s: *mut c_char,
+ ct: *const c_char,
+ n: size_t,
+ ) -> *mut c_char;
+ pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;
+ pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int;
+ pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;
+ pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;
+ pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;
+ pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;
+ pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;
+ pub fn strdup(cs: *const c_char) -> *mut c_char;
+ pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;
+ pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;
+ pub fn strcasecmp(s1: *const c_char, s2: *const c_char) -> c_int;
+ pub fn strncasecmp(
+ s1: *const c_char,
+ s2: *const c_char,
+ n: size_t,
+ ) -> c_int;
+ pub fn strlen(cs: *const c_char) -> size_t;
+ pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "strerror$UNIX2003"
+ )]
+ pub fn strerror(n: c_int) -> *mut c_char;
+ pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;
+ pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;
+ pub fn wcslen(buf: *const wchar_t) -> size_t;
+ pub fn wcstombs(
+ dest: *mut c_char,
+ src: *const wchar_t,
+ n: size_t,
+ ) -> ::size_t;
+
+ pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void;
+ pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int;
+ pub fn memcpy(
+ dest: *mut c_void,
+ src: *const c_void,
+ n: size_t,
+ ) -> *mut c_void;
+ pub fn memmove(
+ dest: *mut c_void,
+ src: *const c_void,
+ n: size_t,
+ ) -> *mut c_void;
+ pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void;
+}
+
+extern {
+ #[cfg_attr(target_os = "netbsd", link_name = "__getpwnam50")]
+ pub fn getpwnam(name: *const ::c_char) -> *mut passwd;
+ #[cfg_attr(target_os = "netbsd", link_name = "__getpwuid50")]
+ pub fn getpwuid(uid: ::uid_t) -> *mut passwd;
+
+ pub fn fprintf(
+ stream: *mut ::FILE,
+ format: *const ::c_char,
+ ...
+ ) -> ::c_int;
+ pub fn printf(format: *const ::c_char, ...) -> ::c_int;
+ pub fn snprintf(
+ s: *mut ::c_char,
+ n: ::size_t,
+ format: *const ::c_char,
+ ...
+ ) -> ::c_int;
+ pub fn sprintf(s: *mut ::c_char, format: *const ::c_char, ...) -> ::c_int;
+ pub fn fscanf(
+ stream: *mut ::FILE,
+ format: *const ::c_char,
+ ...
+ ) -> ::c_int;
+ pub fn scanf(format: *const ::c_char, ...) -> ::c_int;
+ pub fn sscanf(s: *const ::c_char, format: *const ::c_char, ...)
+ -> ::c_int;
+ pub fn getchar_unlocked() -> ::c_int;
+ pub fn putchar_unlocked(c: ::c_int) -> ::c_int;
+
+ pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int;
+
+ pub fn pclose(stream: *mut ::FILE) -> ::c_int;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "fdopen$UNIX2003"
+ )]
+ pub fn fdopen(fd: ::c_int, mode: *const c_char) -> *mut ::FILE;
+ pub fn fileno(stream: *mut ::FILE) -> ::c_int;
+
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "open$UNIX2003"
+ )]
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "creat$UNIX2003"
+ )]
+ pub fn creat(path: *const c_char, mode: mode_t) -> ::c_int;
+
+ pub fn fdopendir(fd: ::c_int) -> *mut ::DIR;
+
+ pub fn rewinddir(dirp: *mut ::DIR);
+
+ pub fn openat(
+ dirfd: ::c_int,
+ pathname: *const ::c_char,
+ flags: ::c_int,
+ ...
+ ) -> ::c_int;
+ pub fn fchmodat(
+ dirfd: ::c_int,
+ pathname: *const ::c_char,
+ mode: ::mode_t,
+ flags: ::c_int,
+ ) -> ::c_int;
+ pub fn fchown(fd: ::c_int, owner: ::uid_t, group: ::gid_t) -> ::c_int;
+ pub fn fchownat(
+ dirfd: ::c_int,
+ pathname: *const ::c_char,
+ owner: ::uid_t,
+ group: ::gid_t,
+ flags: ::c_int,
+ ) -> ::c_int;
+ #[cfg_attr(target_os = "macos", link_name = "fstatat$INODE64")]
+ #[cfg_attr(target_os = "freebsd", link_name = "fstatat@FBSD_1.1")]
+ pub fn fstatat(
+ dirfd: ::c_int,
+ pathname: *const ::c_char,
+ buf: *mut stat,
+ flags: ::c_int,
+ ) -> ::c_int;
+ pub fn linkat(
+ olddirfd: ::c_int,
+ oldpath: *const ::c_char,
+ newdirfd: ::c_int,
+ newpath: *const ::c_char,
+ flags: ::c_int,
+ ) -> ::c_int;
+ pub fn mkdirat(
+ dirfd: ::c_int,
+ pathname: *const ::c_char,
+ mode: ::mode_t,
+ ) -> ::c_int;
+ pub fn readlinkat(
+ dirfd: ::c_int,
+ pathname: *const ::c_char,
+ buf: *mut ::c_char,
+ bufsiz: ::size_t,
+ ) -> ::ssize_t;
+ pub fn renameat(
+ olddirfd: ::c_int,
+ oldpath: *const ::c_char,
+ newdirfd: ::c_int,
+ newpath: *const ::c_char,
+ ) -> ::c_int;
+ pub fn symlinkat(
+ target: *const ::c_char,
+ newdirfd: ::c_int,
+ linkpath: *const ::c_char,
+ ) -> ::c_int;
+
+ pub fn access(path: *const c_char, amode: ::c_int) -> ::c_int;
+ pub fn alarm(seconds: ::c_uint) -> ::c_uint;
+ pub fn fchdir(dirfd: ::c_int) -> ::c_int;
+ pub fn chown(path: *const c_char, uid: uid_t, gid: gid_t) -> ::c_int;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "lchown$UNIX2003"
+ )]
+ pub fn lchown(path: *const c_char, uid: uid_t, gid: gid_t) -> ::c_int;
+ pub fn execl(path: *const c_char, arg0: *const c_char, ...) -> ::c_int;
+ pub fn execle(
+ path: *const ::c_char,
+ arg0: *const ::c_char,
+ ...
+ ) -> ::c_int;
+ pub fn execlp(
+ file: *const ::c_char,
+ arg0: *const ::c_char,
+ ...
+ ) -> ::c_int;
+ pub fn execv(prog: *const c_char, argv: *const *const c_char) -> ::c_int;
+ pub fn execve(
+ prog: *const c_char,
+ argv: *const *const c_char,
+ envp: *const *const c_char,
+ ) -> ::c_int;
+ /*
+ pub fn execvp(c: *const c_char,
+ argv: *const *const c_char) -> ::c_int;
+ */
+ // pub fn fork() -> pid_t;
+ pub fn fpathconf(filedes: ::c_int, name: ::c_int) -> c_long;
+ pub fn getegid() -> gid_t;
+ pub fn geteuid() -> uid_t;
+ pub fn getgroups(ngroups_max: ::c_int, groups: *mut gid_t) -> ::c_int;
+ pub fn getlogin() -> *mut c_char;
+ pub fn getopt(
+ argc: ::c_int,
+ argv: *const *mut c_char,
+ optstr: *const c_char,
+ ) -> ::c_int;
+ pub fn pathconf(path: *const c_char, name: ::c_int) -> c_long;
+ pub fn pause() -> ::c_int;
+ pub fn seteuid(uid: uid_t) -> ::c_int;
+ pub fn setegid(gid: gid_t) -> ::c_int;
+ pub fn setpgid(pid: pid_t, pgid: pid_t) -> ::c_int;
+ pub fn setsid() -> pid_t;
+ pub fn sleep(secs: ::c_uint) -> ::c_uint;
+ pub fn tcgetpgrp(fd: ::c_int) -> pid_t;
+ pub fn tcsetpgrp(fd: ::c_int, pgrp: ::pid_t) -> ::c_int;
+ pub fn ttyname(fd: ::c_int) -> *mut c_char;
+ pub fn wait(status: *mut ::c_int) -> pid_t;
+ /*
+ pub fn pread(fd: ::c_int, buf: *mut ::c_void, count: ::size_t,
+ offset: off_t) -> ::ssize_t;
+ #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+ link_name = "pwrite$UNIX2003")]
+ pub fn pwrite(fd: ::c_int, buf: *const ::c_void, count: ::size_t,
+ offset: off_t) -> ::ssize_t;
+ */
+ pub fn umask(mask: mode_t) -> mode_t;
+
+ // #[cfg_attr(target_os = "netbsd", link_name = "__utime50")]
+ // pub fn utime(file: *const c_char, buf: *const utimbuf) -> ::c_int;
+
+ /*
+ #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+ link_name = "kill$UNIX2003")]
+ pub fn kill(pid: pid_t, sig: ::c_int) -> ::c_int;
+ */
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "killpg$UNIX2003"
+ )]
+ pub fn killpg(pgrp: pid_t, sig: ::c_int) -> ::c_int;
+
+ pub fn mlock(addr: *const ::c_void, len: ::size_t) -> ::c_int;
+ pub fn munlock(addr: *const ::c_void, len: ::size_t) -> ::c_int;
+ pub fn mlockall(flags: ::c_int) -> ::c_int;
+ pub fn munlockall() -> ::c_int;
+
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "mmap$UNIX2003"
+ )]
+ pub fn mmap(
+ addr: *mut ::c_void,
+ len: ::size_t,
+ prot: ::c_int,
+ flags: ::c_int,
+ fd: ::c_int,
+ offset: off_t,
+ ) -> *mut ::c_void;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "munmap$UNIX2003"
+ )]
+ pub fn munmap(addr: *mut ::c_void, len: ::size_t) -> ::c_int;
+
+ pub fn if_nametoindex(ifname: *const c_char) -> ::c_uint;
+ pub fn if_indextoname(
+ ifindex: ::c_uint,
+ ifname: *mut ::c_char,
+ ) -> *mut ::c_char;
+
+ pub fn truncate(path: *const c_char, length: off_t) -> ::c_int;
+
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "getrlimit$UNIX2003"
+ )]
+ pub fn getrlimit(resource: ::c_int, rlim: *mut rlimit) -> ::c_int;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "setrlimit$UNIX2003"
+ )]
+ pub fn setrlimit(resource: ::c_int, rlim: *const rlimit) -> ::c_int;
+ // #[cfg_attr(target_os = "netbsd", link_name = "__getrusage50")]
+ // pub fn getrusage(resource: ::c_int, usage: *mut rusage) -> ::c_int;
+
+ /*
+ #[cfg_attr(any(target_os = "macos", target_os = "ios"),
+ link_name = "realpath$DARWIN_EXTSN")]
+ pub fn realpath(pathname: *const ::c_char, resolved: *mut ::c_char)
+ -> *mut ::c_char;
+ */
+ pub fn flock(fd: ::c_int, operation: ::c_int) -> ::c_int;
+
+ #[cfg_attr(target_os = "netbsd", link_name = "__gettimeofday50")]
+ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;
+ pub fn pthread_exit(value: *mut ::c_void);
+ pub fn pthread_attr_setdetachstate(
+ attr: *mut ::pthread_attr_t,
+ state: ::c_int,
+ ) -> ::c_int;
+
+ pub fn strerror_r(
+ errnum: ::c_int,
+ buf: *mut c_char,
+ buflen: ::size_t,
+ ) -> ::c_int;
+
+ pub fn sigaction(
+ signum: ::c_int,
+ act: *const sigaction,
+ oldact: *mut sigaction,
+ ) -> ::c_int;
+
+ #[cfg_attr(target_os = "netbsd", link_name = "__utimes50")]
+ pub fn utimes(
+ filename: *const ::c_char,
+ times: *const ::timeval,
+ ) -> ::c_int;
+ pub fn dlopen(filename: *const ::c_char, flag: ::c_int) -> *mut ::c_void;
+ pub fn dlerror() -> *mut ::c_char;
+ pub fn dlsym(
+ handle: *mut ::c_void,
+ symbol: *const ::c_char,
+ ) -> *mut ::c_void;
+ pub fn dlclose(handle: *mut ::c_void) -> ::c_int;
+ pub fn res_init() -> ::c_int;
+ /*
+ #[cfg_attr(target_os = "netbsd", link_name = "__gmtime_r50")]
+ pub fn gmtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
+ #[cfg_attr(target_os = "netbsd", link_name = "__localtime_r50")]
+ pub fn localtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
+ #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+ link_name = "mktime$UNIX2003")]
+ #[cfg_attr(target_os = "netbsd", link_name = "__mktime50")]
+ pub fn mktime(tm: *mut tm) -> time_t;
+ #[cfg_attr(target_os = "netbsd", link_name = "__time50")]
+ pub fn time(time: *mut time_t) -> time_t;
+ #[cfg_attr(target_os = "netbsd", link_name = "__gmtime50")]
+ pub fn gmtime(time_p: *const time_t) -> *mut tm;
+ #[cfg_attr(target_os = "netbsd", link_name = "__locatime50")]
+ pub fn localtime(time_p: *const time_t) -> *mut tm;
+ */
+ #[cfg_attr(target_os = "netbsd", link_name = "__difftime50")]
+ pub fn difftime(time1: time_t, time0: time_t) -> ::c_double;
+
+ #[cfg_attr(target_os = "netbsd", link_name = "__mknod50")]
+ #[cfg_attr(target_os = "freebsd", link_name = "mknod@FBSD_1.0")]
+ pub fn mknod(
+ pathname: *const ::c_char,
+ mode: ::mode_t,
+ dev: ::dev_t,
+ ) -> ::c_int;
+ pub fn gethostname(name: *mut ::c_char, len: ::size_t) -> ::c_int;
+ // pub fn getservbyname(name: *const ::c_char,
+ // proto: *const ::c_char) -> *mut servent;
+ // pub fn getprotobyname(name: *const ::c_char) -> *mut protoent;
+ // pub fn getprotobynumber(proto: ::c_int) -> *mut protoent;
+ pub fn chroot(name: *const ::c_char) -> ::c_int;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "usleep$UNIX2003"
+ )]
+ pub fn usleep(secs: ::c_uint) -> ::c_int;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "putenv$UNIX2003"
+ )]
+ pub fn putenv(string: *mut c_char) -> ::c_int;
+ #[cfg_attr(target_os = "netbsd", link_name = "__select50")]
+ // pub fn select(nfds: ::c_int,
+ // readfs: *mut fd_set,
+ // writefds: *mut fd_set,
+ // errorfds: *mut fd_set,
+ // timeout: *mut timeval) -> ::c_int;
+ #[cfg_attr(target_os = "netbsd", link_name = "__setlocale50")]
+ pub fn setlocale(
+ category: ::c_int,
+ locale: *const ::c_char,
+ ) -> *mut ::c_char;
+ // pub fn localeconv() -> *mut lconv;
+
+ pub fn sigprocmask(
+ how: ::c_int,
+ set: *const sigset_t,
+ oldset: *mut sigset_t,
+ ) -> ::c_int;
+ #[cfg_attr(target_os = "netbsd", link_name = "__sigpending14")]
+ pub fn sigpending(set: *mut sigset_t) -> ::c_int;
+
+ pub fn getsid(pid: pid_t) -> pid_t;
+
+ pub fn mkfifo(path: *const c_char, mode: mode_t) -> ::c_int;
+
+ pub fn fseeko(
+ stream: *mut ::FILE,
+ offset: ::off_t,
+ whence: ::c_int,
+ ) -> ::c_int;
+ pub fn ftello(stream: *mut ::FILE) -> ::off_t;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "tcdrain$UNIX2003"
+ )]
+ pub fn tcdrain(fd: ::c_int) -> ::c_int;
+ pub fn tcflow(fd: ::c_int, action: ::c_int) -> ::c_int;
+ pub fn tcflush(fd: ::c_int, action: ::c_int) -> ::c_int;
+ pub fn tcgetsid(fd: ::c_int) -> ::pid_t;
+ pub fn tcsendbreak(fd: ::c_int, duration: ::c_int) -> ::c_int;
+ pub fn mkstemp(template: *mut ::c_char) -> ::c_int;
+ pub fn mkdtemp(template: *mut ::c_char) -> *mut ::c_char;
+
+ pub fn tmpnam(ptr: *mut ::c_char) -> *mut ::c_char;
+
+ pub fn openlog(ident: *const ::c_char, logopt: ::c_int, facility: ::c_int);
+ pub fn closelog();
+ pub fn setlogmask(maskpri: ::c_int) -> ::c_int;
+ #[cfg_attr(target_os = "macos", link_name = "syslog$DARWIN_EXTSN")]
+ pub fn syslog(priority: ::c_int, message: *const ::c_char, ...);
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "nice$UNIX2003"
+ )]
+ pub fn nice(incr: ::c_int) -> ::c_int;
+
+ pub fn grantpt(fd: ::c_int) -> ::c_int;
+ pub fn posix_openpt(flags: ::c_int) -> ::c_int;
+ pub fn ptsname(fd: ::c_int) -> *mut ::c_char;
+ pub fn unlockpt(fd: ::c_int) -> ::c_int;
+
+ pub fn strcasestr(cs: *const c_char, ct: *const c_char) -> *mut c_char;
+ pub fn getline(
+ lineptr: *mut *mut c_char,
+ n: *mut size_t,
+ stream: *mut FILE,
+ ) -> ssize_t;
+
+ pub fn _rtld_dladdr(addr: *const ::c_void, info: *mut Dl_info) -> ::c_int;
+}
+
+extern {
+ // this is gonna be a big one
+
+ // stdlib.h
+ // This function may not be defined for armv7
+ pub fn memalign(block_size: ::size_t, size_arg: ::size_t)
+ -> *mut ::c_void;
+
+ // ioLib.h
+ pub fn getcwd(buf: *mut ::c_char, size: ::size_t) -> *mut ::c_char;
+
+ // ioLib.h
+ pub fn chdir(attr: *const ::c_char) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_mutexattr_init(
+ /* PTHREAD STUFF */
+ attr: *mut pthread_mutexattr_t,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_mutexattr_destroy(
+ attr: *mut pthread_mutexattr_t,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_mutexattr_settype(
+ pAttr: *mut ::pthread_mutexattr_t,
+ pType: ::c_int,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_mutex_init(
+ mutex: *mut pthread_mutex_t,
+ attr: *const pthread_mutexattr_t,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_mutex_destroy(mutex: *mut pthread_mutex_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_mutex_lock(mutex: *mut pthread_mutex_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_mutex_trylock(mutex: *mut pthread_mutex_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_mutex_timedlock(
+ attr: *mut pthread_mutex_t,
+ spec: *const timespec,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_mutex_unlock(mutex: *mut pthread_mutex_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_attr_setname(
+ pAttr: *mut ::pthread_attr_t,
+ name: *mut ::c_char,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_attr_setstacksize(
+ attr: *mut ::pthread_attr_t,
+ stacksize: ::size_t,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_attr_getstacksize(
+ attr: *const ::pthread_attr_t,
+ size: *mut ::size_t,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_attr_init(attr: *mut ::pthread_attr_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_create(
+ pThread: *mut ::pthread_t,
+ pAttr: *const ::pthread_attr_t,
+ start_routine: extern fn(*mut ::c_void) -> *mut ::c_void,
+ value: *mut ::c_void,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_attr_destroy(thread: *mut ::pthread_attr_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_detach(thread: ::pthread_t) -> ::c_int;
+
+ // int pthread_atfork (void (*)(void), void (*)(void), void (*)(void));
+ pub fn pthread_atfork(
+ prepare: ::Option<unsafe extern fn()>,
+ parent: ::Option<unsafe extern fn()>,
+ child: ::Option<unsafe extern fn()>,
+ ) -> ::c_int;
+ // stat.h
+ pub fn fstat(fildes: ::c_int, buf: *mut stat) -> ::c_int;
+
+ // stat.h
+ pub fn lstat(path: *const ::c_char, buf: *mut stat) -> ::c_int;
+
+ // unistd.h
+ pub fn ftruncate(fd: ::c_int, length: off_t) -> ::c_int;
+
+ // dirent.h
+ pub fn readdir_r(
+ pDir: *mut ::DIR,
+ entry: *mut ::dirent,
+ result: *mut *mut ::dirent,
+ ) -> ::c_int;
+
+ // dirent.h
+ pub fn readdir(pDir: *mut ::DIR) -> *mut ::dirent;
+
+ // fcntl.h or
+ // ioLib.h
+ pub fn open(
+ // this might be hacked
+ path: *const ::c_char,
+ oflag: ::c_int,
+ ...
+ ) -> ::c_int;
+
+ // poll.h
+ pub fn poll(fds: *mut pollfd, nfds: nfds_t, timeout: ::c_int) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_condattr_init(attr: *mut ::pthread_condattr_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_condattr_destroy(
+ attr: *mut ::pthread_condattr_t,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_condattr_getclock(
+ pAttr: *const ::pthread_condattr_t,
+ pClockId: *mut ::clockid_t,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_condattr_setclock(
+ pAttr: *mut ::pthread_condattr_t,
+ clockId: ::clockid_t,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_cond_init(
+ cond: *mut ::pthread_cond_t,
+ attr: *const ::pthread_condattr_t,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_cond_destroy(cond: *mut pthread_cond_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_cond_signal(cond: *mut ::pthread_cond_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_cond_broadcast(cond: *mut ::pthread_cond_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_cond_wait(
+ cond: *mut ::pthread_cond_t,
+ mutex: *mut ::pthread_mutex_t,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_rwlockattr_init(
+ attr: *mut ::pthread_rwlockattr_t,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_rwlockattr_destroy(
+ attr: *mut ::pthread_rwlockattr_t,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_rwlockattr_setmaxreaders(
+ attr: *mut ::pthread_rwlockattr_t,
+ attr2: ::c_uint,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_rwlock_init(
+ attr: *mut ::pthread_rwlock_t,
+ host: *const ::pthread_rwlockattr_t,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_rwlock_destroy(attr: *mut ::pthread_rwlock_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_rwlock_rdlock(attr: *mut ::pthread_rwlock_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_rwlock_tryrdlock(attr: *mut ::pthread_rwlock_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_rwlock_timedrdlock(
+ attr: *mut ::pthread_rwlock_t,
+ host: *const ::timespec,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_rwlock_wrlock(attr: *mut ::pthread_rwlock_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_rwlock_trywrlock(attr: *mut ::pthread_rwlock_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_rwlock_timedwrlock(
+ attr: *mut ::pthread_rwlock_t,
+ host: *const ::timespec,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_rwlock_unlock(attr: *mut ::pthread_rwlock_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_key_create(
+ key: *mut ::pthread_key_t,
+ dtor: ::Option<unsafe extern fn(*mut ::c_void)>,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_key_delete(key: ::pthread_key_t) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_setspecific(
+ key: ::pthread_key_t,
+ value: *const ::c_void,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_getspecific(key: ::pthread_key_t) -> *mut ::c_void;
+
+ // pthread.h
+ pub fn pthread_cond_timedwait(
+ cond: *mut ::pthread_cond_t,
+ mutex: *mut ::pthread_mutex_t,
+ abstime: *const ::timespec,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_attr_getname(
+ attr: *mut ::pthread_attr_t,
+ name: *mut *mut ::c_char,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_join(
+ thread: ::pthread_t,
+ status: *mut *mut ::c_void,
+ ) -> ::c_int;
+
+ // pthread.h
+ pub fn pthread_self() -> ::pthread_t;
+
+ // clockLib.h
+ pub fn clock_gettime(
+ clock_id: ::clockid_t,
+ tp: *mut ::timespec,
+ ) -> ::c_int;
+
+ // clockLib.h
+ pub fn clock_settime(
+ clock_id: ::clockid_t,
+ tp: *const ::timespec,
+ ) -> ::c_int;
+
+ // clockLib.h
+ pub fn clock_getres(
+ clock_id: ::clockid_t,
+ res: *mut ::timespec,
+ ) -> ::c_int;
+
+ // clockLib.h
+ pub fn clock_nanosleep(
+ clock_id: ::clockid_t,
+ flags: ::c_int,
+ rqtp: *const ::timespec,
+ rmtp: *mut ::timespec,
+ ) -> ::c_int;
+
+ // timerLib.h
+ pub fn nanosleep(
+ rqtp: *const ::timespec,
+ rmtp: *mut ::timespec,
+ ) -> ::c_int;
+
+ // socket.h
+ pub fn accept(
+ s: ::c_int,
+ addr: *mut ::sockaddr,
+ addrlen: *mut ::socklen_t,
+ ) -> ::c_int;
+
+ // socket.h
+ pub fn bind(fd: ::c_int, addr: *const sockaddr, len: socklen_t)
+ -> ::c_int;
+
+ // socket.h
+ pub fn connect(
+ s: ::c_int,
+ name: *const ::sockaddr,
+ namelen: ::socklen_t,
+ ) -> ::c_int;
+
+ // socket.h
+ pub fn getpeername(
+ s: ::c_int,
+ name: *mut ::sockaddr,
+ namelen: *mut ::socklen_t,
+ ) -> ::c_int;
+
+ // socket.h
+ pub fn getsockname(
+ socket: ::c_int,
+ address: *mut sockaddr,
+ address_len: *mut socklen_t,
+ ) -> ::c_int;
+
+ // socket.h
+ pub fn getsockopt(
+ sockfd: ::c_int,
+ level: ::c_int,
+ optname: ::c_int,
+ optval: *mut ::c_void,
+ optlen: *mut ::socklen_t,
+ ) -> ::c_int;
+
+ // socket.h
+ pub fn listen(socket: ::c_int, backlog: ::c_int) -> ::c_int;
+
+ // socket.h
+ pub fn recv(
+ s: ::c_int,
+ buf: *mut ::c_void,
+ bufLen: ::size_t,
+ flags: ::c_int,
+ ) -> ::ssize_t;
+
+ // socket.h
+ pub fn recvfrom(
+ s: ::c_int,
+ buf: *mut ::c_void,
+ bufLen: ::size_t,
+ flags: ::c_int,
+ from: *mut ::sockaddr,
+ pFromLen: *mut ::socklen_t,
+ ) -> ::ssize_t;
+
+ // socket.h
+ pub fn send(
+ socket: ::c_int,
+ buf: *const ::c_void,
+ len: ::size_t,
+ flags: ::c_int,
+ ) -> ::ssize_t;
+
+ // socket.h
+ pub fn sendto(
+ socket: ::c_int,
+ buf: *const ::c_void,
+ len: ::size_t,
+ flags: ::c_int,
+ addr: *const sockaddr,
+ addrlen: socklen_t,
+ ) -> ::ssize_t;
+
+ // socket.h
+ pub fn setsockopt(
+ socket: ::c_int,
+ level: ::c_int,
+ name: ::c_int,
+ value: *const ::c_void,
+ option_len: socklen_t,
+ ) -> ::c_int;
+
+ // socket.h
+ pub fn shutdown(s: ::c_int, how: ::c_int) -> ::c_int;
+
+ // socket.h
+ pub fn socket(
+ domain: ::c_int,
+ _type: ::c_int,
+ protocol: ::c_int,
+ ) -> ::c_int;
+
+ pub fn socketpair(
+ // Doesn't exist
+ domain: ::c_int,
+ type_: ::c_int,
+ protocol: ::c_int,
+ socket_vector: *mut ::c_int,
+ ) -> ::c_int;
+
+ // icotl.h
+ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
+
+ // fcntl.h
+ pub fn fcntl(fd: ::c_int, cmd: ::c_int, ...) -> ::c_int;
+
+ // ntp_rfc2553.h for kernel
+ // netdb.h for user
+ pub fn gai_strerror(errcode: ::c_int) -> *mut ::c_char;
+
+ // ioLib.h or
+ // unistd.h
+ pub fn close(fd: ::c_int) -> ::c_int;
+
+ // ioLib.h or
+ // unistd.h
+ pub fn read(
+ // Since this is from FD< big errors might happen
+ fd: ::c_int,
+ buf: *mut ::c_void,
+ count: ::size_t,
+ ) -> ::ssize_t;
+
+ // ioLib.h or
+ // unistd.h
+ pub fn write(
+ fd: ::c_int,
+ buf: *const ::c_void,
+ count: ::size_t,
+ ) -> ::ssize_t;
+
+ // ioLib.h or
+ // unistd.h
+ pub fn isatty(fd: ::c_int) -> ::c_int;
+
+ // ioLib.h or
+ // unistd.h
+ pub fn dup(src: ::c_int) -> ::c_int;
+
+ // ioLib.h or
+ // unistd.h
+ pub fn dup2(src: ::c_int, dst: ::c_int) -> ::c_int;
+
+ // ioLib.h or
+ // unistd.h
+ pub fn pipe(fds: *mut ::c_int) -> ::c_int;
+
+ // ioLib.h or
+ // unistd.h
+ pub fn unlink(pathname: *const ::c_char) -> ::c_int;
+
+ // unistd.h and
+ // ioLib.h
+ pub fn lseek(fd: ::c_int, offset: off_t, whence: ::c_int) -> off_t;
+
+ // netdb.h
+ pub fn getaddrinfo(
+ node: *const ::c_char,
+ service: *const ::c_char,
+ hints: *const addrinfo,
+ res: *mut *mut addrinfo,
+ ) -> ::c_int;
+
+ // netdb.h
+ pub fn freeaddrinfo(res: *mut addrinfo);
+
+ // signal.h
+ pub fn signal(
+ // Probably wrong ...
+ signum: ::c_int,
+ handler: sighandler_t,
+ ) -> sighandler_t;
+
+ // unistd.h
+ pub fn getpid() -> ::c_int; //should be pid_t, but is being dodged
+
+ // unistd.h
+ pub fn getppid() -> ::c_int;
+
+ // wait.h
+ pub fn waitpid(
+ pid: ::c_int, //should be pid_t, but is being dodged
+ status: *mut ::c_int,
+ optons: ::c_int,
+ ) -> ::c_int; //should be pid_t, but is being dodged
+
+ // unistd.h
+ pub fn sysconf(attr: ::c_int) -> ::c_long;
+
+ // unistd.h
+ // For user space, return value is static inline int
+ // For kernel space, exactly how it should be
+ pub fn getpagesize() -> ::c_int;
+
+ // stdlib.h
+ pub fn setenv(
+ // setenv.c
+ envVarName: *const ::c_char,
+ envVarValue: *const ::c_char,
+ overwrite: ::c_int,
+ ) -> ::c_int;
+
+ // stdlib.h
+ pub fn unsetenv(
+ // setenv.c
+ envVarName: *const ::c_char,
+ ) -> ::c_int;
+
+ // unistd.h
+ pub fn link(src: *const ::c_char, dst: *const ::c_char) -> ::c_int;
+
+ // unistd.h
+ pub fn readlink(
+ path: *const ::c_char,
+ buf: *mut ::c_char,
+ bufsize: ::size_t,
+ ) -> ::ssize_t;
+
+ // unistd.h
+ pub fn symlink(path1: *const ::c_char, path2: *const ::c_char) -> ::c_int;
+
+ // dirent.h
+ pub fn opendir(name: *const ::c_char) -> *mut ::DIR;
+
+ // unistd.h
+ pub fn rmdir(path: *const ::c_char) -> ::c_int;
+
+ // stat.h
+ pub fn mkdir(dirName: *const ::c_char, mode: ::mode_t) -> ::c_int;
+
+ // stat.h
+ pub fn chmod(path: *const ::c_char, mode: ::mode_t) -> ::c_int;
+
+ // stat.h
+ pub fn fchmod(attr1: ::c_int, attr2: ::mode_t) -> ::c_int;
+
+ // unistd.h
+ pub fn fsync(fd: ::c_int) -> ::c_int;
+
+ // dirent.h
+ pub fn closedir(ptr: *mut ::DIR) -> ::c_int;
+
+ pub fn pwrite64(
+ fd: ::c_int, // if you want to use fd, you gotta fix these
+ buf: *const ::c_void,
+ count: ::size_t,
+ offset: off64_t,
+ ) -> ::ssize_t;
+
+ pub fn pread64(
+ fd: ::c_int,
+ buf: *const ::c_void,
+ count: ::size_t,
+ offset: off64_t,
+ ) -> ::ssize_t;
+
+ // sched.h
+ pub fn sched_yield() -> ::c_int;
+
+ // errnoLib.h
+ pub fn errnoSet(err: ::c_int) -> ::c_int;
+
+ // errnoLib.h
+ pub fn errnoGet() -> ::c_int;
+
+ pub fn fork(// Does not exist at all
+ ) -> ::c_int;
+
+ // unistd.h
+ pub fn _exit(status: ::c_int) -> !;
+
+ // unistd.h
+ pub fn setgid(gid: ::gid_t) -> ::c_int;
+
+ // unistd.h
+ pub fn getgid() -> ::gid_t;
+
+ // unistd.h
+ pub fn setuid(uid: ::uid_t) -> ::c_int;
+
+ // unistd.h
+ pub fn getuid() -> ::uid_t;
+
+ pub fn setgroups(
+ // Does not exist at all
+ ngroups: ::c_int,
+ grouplist: *const ::gid_t,
+ ) -> ::c_int;
+
+ // signal.h
+ pub fn sigemptyset(__set: *mut sigset_t) -> ::c_int;
+
+ // pthread.h for kernel
+ // signal.h for user
+ pub fn pthread_sigmask(
+ __how: ::c_int,
+ __set: *const sigset_t,
+ __oset: *mut sigset_t,
+ ) -> ::c_int;
+
+ pub fn execvp(
+ // Does not exist at all
+ c: *const ::c_char,
+ argv: *const *const ::c_char,
+ ) -> ::c_int;
+
+ // signal.h for user
+ pub fn kill(
+ __pid: ::c_int, //should be pid_t, but is being dodged
+ __signo: ::c_int,
+ ) -> ::c_int;
+
+ // signal.h for user
+ pub fn sigqueue(
+ __pid: ::c_int, //should be pid_t, but is being dodged
+ __signo: ::c_int,
+ __value: ::size_t, // Actual type is const union sigval value,
+ // which is a union of int and void *
+ ) -> ::c_int;
+
+ // signal.h for user
+ pub fn _sigqueue(
+ rtpId: ::RTP_ID,
+ signo: ::c_int,
+ pValue: *mut ::size_t, // Actual type is const union * sigval value,
+ // which is a union of int and void *
+ sigCode: ::c_int,
+ ) -> ::c_int;
+
+ // signal.h
+ // It seems like for kernel space, this function doesn't actually exist,
+ // it just macros to kill
+ pub fn taskKill(taskId: ::TASK_ID, signo: ::c_int) -> ::c_int;
+
+ // signal.h
+ pub fn raise(__signo: ::c_int) -> ::c_int;
+ // taskLibCommon.h
+ pub fn taskIdSelf() -> ::TASK_ID;
+
+ // rtpLibCommon.h
+ pub fn rtpInfoGet(rtpId: ::RTP_ID, rtpStruct: *mut ::RTP_DESC) -> ::c_int;
+
+ // ioLib.h
+ pub fn _realpath(
+ fileName: *const ::c_char,
+ resolvedName: *mut ::c_char,
+ ) -> *mut ::c_char;
+
+ // pathLib.h
+ pub fn _pathIsAbsolute(
+ filepath: *const ::c_char,
+ pNameTail: *const *const ::c_char,
+ ) -> bool;
+
+ pub fn writev(
+ fd: ::c_int,
+ iov: *const ::iovec,
+ iovcnt: ::c_int,
+ ) -> ::ssize_t;
+ pub fn readv(
+ fd: ::c_int,
+ iov: *const ::iovec,
+ iovcnt: ::c_int,
+ ) -> ::ssize_t;
+}
+
+pub fn dladdr(addr: *const ::c_void, info: *mut Dl_info) -> ::c_int {
+ unsafe { _rtld_dladdr(addr, info) }
+}
+
+//Dummy functions, these don't really exist in VxWorks.
+
+// wait.h macros
+pub fn WIFEXITED(status: ::c_int) -> bool {
+ (status & 0xFF00) == 0
+}
+pub fn WIFSIGNALED(status: ::c_int) -> bool {
+ (status & 0xFF00) != 0
+}
+pub fn WIFSTOPPED(status: ::c_int) -> bool {
+ (status & 0xFF0000) != 0
+}
+pub fn WEXITSTATUS(status: ::c_int) -> ::c_int {
+ status & 0xFF
+}
+pub fn WTERMSIG(status: ::c_int) -> ::c_int {
+ (status >> 8) & 0xFF
+}
+pub fn WSTOPSIG(status: ::c_int) -> ::c_int {
+ (status >> 16) & 0xFF
+}
+
+pub fn pread(
+ _fd: ::c_int,
+ _buf: *mut ::c_void,
+ _count: ::size_t,
+ _offset: off64_t,
+) -> ::ssize_t {
+ -1
+}
+
+pub fn pwrite(
+ _fd: ::c_int,
+ _buf: *const ::c_void,
+ _count: ::size_t,
+ _offset: off64_t,
+) -> ::ssize_t {
+ -1
+}
+pub fn posix_memalign(
+ memptr: *mut *mut ::c_void,
+ align: ::size_t,
+ size: ::size_t,
+) -> ::c_int {
+ // check to see if align is a power of 2 and if align is a multiple
+ // of sizeof(void *)
+ if (align & align - 1 != 0) || (align % size_of::<::size_t>() != 0) {
+ return ::EINVAL;
+ }
+
+ unsafe {
+ // posix_memalign should not set errno
+ let e = ::errnoGet();
+
+ let temp = memalign(align, size);
+ ::errnoSet(e as ::c_int);
+
+ if temp.is_null() {
+ ::ENOMEM
+ } else {
+ *memptr = temp;
+ 0
+ }
+ }
+}
+
+// From sysconf.c -> doesn't seem to be supported?
+pub fn getpwuid_r(
+ _uid: ::uid_t,
+ _pwd: *mut passwd,
+ _buf: *mut ::c_char,
+ _buflen: ::size_t,
+ _result: *mut *mut passwd,
+) -> ::c_int {
+ 0
+}
+
+// VxWorks requires that resolvedName be allocated in userspace
+pub fn realpath(
+ fileName: *const ::c_char,
+ resolvedName: *mut ::c_char,
+) -> *mut ::c_char {
+ unsafe {
+ if resolvedName == null_mut::<::c_char>() {
+ let emptyResolvedName =
+ super::malloc(::_POSIX_PATH_MAX as _) as *mut ::c_char;
+ let r = _realpath(fileName, emptyResolvedName);
+
+ if r == null_mut::<::c_char>() {
+ super::free(emptyResolvedName as *mut _);
+ }
+ r
+ } else {
+ _realpath(fileName, resolvedName)
+ }
+ }
+}
+
+cfg_if! {
+ if #[cfg(libc_core_cvoid)] {
+ pub use ::ffi::c_void;
+ } else {
+ // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help
+ // enable more optimization opportunities around it recognizing things
+ // like malloc/free.
+ #[repr(u8)]
+ #[allow(missing_copy_implementations)]
+ #[allow(missing_debug_implementations)]
+ pub enum c_void {
+ // Two dummy variants so the #[repr] attribute can be used.
+ #[doc(hidden)]
+ __variant1,
+ #[doc(hidden)]
+ __variant2,
+ }
+ }
+}
+
+cfg_if! {
+ if #[cfg(target_arch = "aarch64")] {
+ mod aarch64;
+ pub use self::aarch64::*;
+ } else if #[cfg(any(target_arch = "arm"))] {
+ mod arm;
+ pub use self::arm::*;
+ } else if #[cfg(any(target_arch = "armv7"))] {
+ mod armv7;
+ pub use self::armv7::*;
+ } else if #[cfg(any(target_arch = "x86"))] {
+ mod x86;
+ pub use self::x86::*;
+ } else if #[cfg(any(target_arch = "x86_64"))] {
+ mod x86_64;
+ pub use self::x86_64::*;
+ } else if #[cfg(any(target_arch = "powerpc"))] {
+ mod powerpc;
+ pub use self::powerpc::*;
+ } else if #[cfg(any(target_arch = "powerpc64"))] {
+ mod powerpc64;
+ pub use self::powerpc64::*;
+ } else {
+ // Unknown target_arch
+ }
+}
diff --git a/libc/src/vxworks/powerpc.rs b/libc/src/vxworks/powerpc.rs
new file mode 100644
index 0000000..cfdce82
--- /dev/null
+++ b/libc/src/vxworks/powerpc.rs
@@ -0,0 +1,3 @@
+pub type c_char = u8;
+pub type c_long = i32;
+pub type c_ulong = u32;
diff --git a/libc/src/vxworks/powerpc64.rs b/libc/src/vxworks/powerpc64.rs
new file mode 100644
index 0000000..577c8be
--- /dev/null
+++ b/libc/src/vxworks/powerpc64.rs
@@ -0,0 +1,3 @@
+pub type c_char = u8;
+pub type c_long = i64;
+pub type c_ulong = u64;
diff --git a/libc/src/vxworks/x86.rs b/libc/src/vxworks/x86.rs
new file mode 100644
index 0000000..81ba145
--- /dev/null
+++ b/libc/src/vxworks/x86.rs
@@ -0,0 +1,3 @@
+pub type c_char = i8;
+pub type c_long = i32;
+pub type c_ulong = u32;
diff --git a/libc/src/vxworks/x86_64.rs b/libc/src/vxworks/x86_64.rs
new file mode 100644
index 0000000..27b9412
--- /dev/null
+++ b/libc/src/vxworks/x86_64.rs
@@ -0,0 +1,3 @@
+pub type c_long = i64;
+pub type c_ulong = u64;
+pub type c_char = i8;
diff --git a/libc/src/wasi.rs b/libc/src/wasi.rs
index 95a0837..e1ffede 100644
--- a/libc/src/wasi.rs
+++ b/libc/src/wasi.rs
@@ -2,6 +2,7 @@ pub use ffi::c_void;
pub type c_char = i8;
pub type c_uchar = u8;
+pub type c_schar = i8;
pub type c_int = i32;
pub type c_uint = u32;
pub type c_short = i16;