diff --git a/.cirrus.yml b/.cirrus.yml index 8caefcbb28a12..11556721e9b06 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -7,15 +7,16 @@ task: # https://github.com/rust-lang/rust/issues/132185 RUST_BACKTRACE: "0" matrix: - - name: nightly freebsd-13 i686 - # Test i686 FreeBSD in 32-bit emulation on a 64-bit host. - env: - TARGET: i686-unknown-freebsd - freebsd_instance: - image_family: freebsd-13-4 - - name: nightly freebsd-13 x86_64 - freebsd_instance: - image_family: freebsd-13-4 + # FIXME(#4740): FreeBSD 13 tests are extremely flaky and fail most of the time + # - name: nightly freebsd-13 i686 + # # Test i686 FreeBSD in 32-bit emulation on a 64-bit host. + # env: + # TARGET: i686-unknown-freebsd + # freebsd_instance: + # image_family: freebsd-13-4 + # - name: nightly freebsd-13 x86_64 + # freebsd_instance: + # image_family: freebsd-13-4 - name: nightly freebsd-14 x86_64 freebsd_instance: image: freebsd-14-3-release-amd64-ufs diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e523d2927b4d0..6914a53d8e57a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -25,11 +25,11 @@ jobs: runs-on: ubuntu-24.04 timeout-minutes: 10 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup Rust toolchain run: ./ci/install-rust.sh && rustup component add rustfmt - name: Check style - run: ./ci/style.sh + run: ./ci/style.py clippy: name: Clippy on ${{ matrix.os }} @@ -39,7 +39,7 @@ jobs: runs-on: ${{ matrix.os }} timeout-minutes: 10 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - run: rustup update stable --no-self-update - uses: Swatinem/rust-cache@v2 # Here we use the latest stable Rust toolchain already installed by GitHub @@ -68,7 +68,7 @@ jobs: env: TOOLCHAIN: ${{ matrix.toolchain }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup Rust toolchain run: ./ci/install-rust.sh @@ -130,7 +130,7 @@ jobs: env: TARGET: ${{ matrix.target }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup Rust toolchain run: ./ci/install-rust.sh - uses: Swatinem/rust-cache@v2 @@ -227,7 +227,7 @@ jobs: env: TARGET: ${{ matrix.target }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup Rust toolchain run: ./ci/install-rust.sh - uses: Swatinem/rust-cache@v2 @@ -270,7 +270,7 @@ jobs: - target: x86_64-unknown-netbsd timeout-minutes: 25 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: test on Solaris uses: vmactions/solaris-vm@v1.1.6 if: contains(matrix.target, 'solaris') diff --git a/.github/workflows/publish_0.2.yml b/.github/workflows/publish_0.2.yml index 00d5a7792a548..9327c50d88899 100644 --- a/.github/workflows/publish_0.2.yml +++ b/.github/workflows/publish_0.2.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Install Rust (rustup) diff --git a/src/rustfmt.toml b/.rustfmt.toml similarity index 74% rename from src/rustfmt.toml rename to .rustfmt.toml index 19e4b2fa60beb..42e6cff32e740 100644 --- a/src/rustfmt.toml +++ b/.rustfmt.toml @@ -1,4 +1,3 @@ -# Note that there is a separate top-level configuration for everything else edition = "2021" error_on_line_overflow = true group_imports = "StdExternalCrate" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0cdfaeadf9059..f43cda673d37b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -93,7 +93,7 @@ We have two automated tests running on - `cd libc-test && cargo test` - Use the `skip_*()` functions in `build.rs` if you really need a workaround. 2. Style checker - - [`./ci/style.sh`](https://github.com/rust-lang/libc/blob/main/ci/style.sh) + - [`./ci/style.py`](https://github.com/rust-lang/libc/blob/main/ci/style.py) ## Breaking change policy diff --git a/build.rs b/build.rs index b2c63f673c4db..9e1dd66b59923 100644 --- a/build.rs +++ b/build.rs @@ -1,5 +1,11 @@ -use std::process::{Command, Output}; -use std::{env, str}; +use std::process::{ + Command, + Output, +}; +use std::{ + env, + str, +}; // List of cfgs this build script is allowed to set. The list is needed to support check-cfg, as we // need to know all the possible cfgs that this script will set. If you need to set another cfg diff --git a/ci/ios/deploy_and_run_on_ios_simulator.rs b/ci/ios/deploy_and_run_on_ios_simulator.rs index 0398a9d3f888d..5c2d2fbad328d 100644 --- a/ci/ios/deploy_and_run_on_ios_simulator.rs +++ b/ci/ios/deploy_and_run_on_ios_simulator.rs @@ -6,11 +6,17 @@ // (https://github.com/snipsco/dinghy): cargo dinghy install, then cargo dinghy // test. -use std::fs::{self, File}; +use std::fs::{ + self, + File, +}; use std::io::Write; use std::path::Path; use std::process::Command; -use std::{env, process}; +use std::{ + env, + process, +}; macro_rules! t { ($e:expr) => { diff --git a/ci/runtest-android.rs b/ci/runtest-android.rs index 29b1a82f675c7..b88cd9c1b9140 100644 --- a/ci/runtest-android.rs +++ b/ci/runtest-android.rs @@ -1,5 +1,8 @@ use std::env; -use std::path::{Path, PathBuf}; +use std::path::{ + Path, + PathBuf, +}; use std::process::Command; fn main() { diff --git a/ci/style.py b/ci/style.py new file mode 100755 index 0000000000000..fcbee07dac17c --- /dev/null +++ b/ci/style.py @@ -0,0 +1,182 @@ +#!/usr/bin/env python3 + +import os +import re +import subprocess as sp +import sys + +from difflib import unified_diff +from glob import iglob +from pathlib import Path + + +FMT_DIRS = ["src", "ci"] +IGNORE_FILES = [ + # Too much special syntax that we don't want to format + "src/macros.rs" +] + + +def main(): + # if `CI` is set, do a check rather than overwriting + check_only = os.getenv("CI") is not None + run(["rustfmt", "-V"]) + + fmt_files = [] + for dir in FMT_DIRS: + fmt_files.extend(iglob(f"{dir}/**/*.rs", recursive=True)) + + for file in fmt_files: + if file in IGNORE_FILES: + continue + fmt_one(Path(file), check_only) + + # Run once from workspace root to get everything that wasn't handled as an + # individual file. + if check_only: + run(["cargo", "fmt", "--check"]) + else: + run(["cargo", "fmt"]) + + for file in iglob("libc-test/semver/*.txt"): + check_semver_file(Path(file)) + + # Style tests + run( + [ + "cargo", + "test", + "--manifest-path=libc-test/Cargo.toml", + "--test=style", + "--", + "--nocapture", + ] + ) + + try: + run(["shellcheck", "--version"]) + except sp.CalledProcessError: + eprint("ERROR: shellcheck not found") + exit(1) + + for file in iglob("**/*.sh", recursive=True): + run(["shellcheck", file]) + + +def fmt_one(fpath: Path, check_only: bool): + eprint(f"Formatting {fpath}") + text = fpath.read_text() + + # Rustfmt doesn't format the bodies of `{ ... }` macros, which is most of `libc`. To + # make things usable, we do some hacks to replace macros with some kind of + # alternative syntax that gets formatted about how we want, then reset the changes + # after formatting. + + # Turn all braced macro `foo! { /* ... */ }` invocations into + # `fn foo_fmt_tmp() { /* ... */ }`, since our macro bodies are usually valid in + # a function context. + text = re.sub(r"(?!macro_rules)\b(\w+)!\s*\{", r"fn \1_fmt_tmp() {", text) + + # Replace `if #[cfg(...)]` within `cfg_if` with `if cfg_tmp!([...])` which + # `rustfmt` will format. We put brackets within the parens so it is easy to + # match (trying to match parentheses would catch the first closing `)` which + # wouldn't be correct for something like `all(any(...), ...)`). + text = re.sub(r"if #\[cfg\((.*?)\)\]", r"if cfg_tmp!([\1])", text, flags=re.DOTALL) + + # The `c_enum!` macro allows anonymous enums without names, which isn't valid + # syntax. Replace it with a dummy name. + text = re.sub(r"enum #anon\b", r"enum _fmt_anon", text) + + # If enum variants are annotated with `pub`, rustfmt erases the visibility. To get + # around this we first match on all enums to extract their bodies, then look for `pub` + # visibility indicators. If found, these get stashed in a comment on the preceding + # line. + def enum_sub(m: re.Match) -> str: + enum_body = m.group(0) + rep = re.sub( + r"^(.*)\b(pub\s*?(\(.*?\))?)\s*", + r"\1/* FMT-VIS \2 END-FMT-VIS */\n\1", + enum_body, + flags=re.MULTILINE, + ) + return rep + + text = re.sub(r"\benum.*\{\n?(?:\s*[^}]*\n)+\s*\}", enum_sub, text) + + # Invoke rustfmt passing via stdin/stdout so we don't need to write the file. Exits + # on failure. + cmd = ["rustfmt", "--config-path=.rustfmt.toml"] + if check_only: + res = check_output(cmd + ["--check"], input=text) + + # Unfortunately rustfmt on stdin always completes with 0 exit code even if + # there are errors, so we need to pick between writing the file to disk or + # relying on empty stdout to indicate success. + # . + if len(res) == 0: + return + eprint(f"ERROR: File {fpath} is not properly formatted") + print(res) + exit(1) + else: + text = check_output(cmd, input=text) + + # Restore all changes in the formatted text + text = re.sub(r"fn (\w+)_fmt_tmp\(\)", r"\1!", text) + text = re.sub(r"cfg_tmp!\(\[(.*?)\]\)", r"#[cfg(\1)]", text, flags=re.DOTALL) + text = re.sub(r"enum _fmt_anon", r"enum #anon", text) + text = re.sub(r"/\* FMT-VIS (.*) END-FMT-VIS \*/\n\s*", r"\1 ", text) + + # And write the formatted file back + fpath.write_text(text) + + +def check_semver_file(fpath: Path): + if "TODO" in str(fpath): + eprint(f"Skipping semver file {fpath}") + return + + eprint(f"Checking semver file {fpath}") + + text = fpath.read_text() + lines = text.splitlines() + sort = sorted(lines) + if lines != sort: + eprint(f"ERROR: Unsorted semver file {fpath}") + eprint("\n".join(unified_diff(lines, sort, lineterm=""))) + exit(1) + + duplicates = [] + seen = set() + for line in lines: + if line in seen: + duplicates.append(line) + seen.add(line) + + if len(duplicates) > 0: + eprint(f"ERROR: Duplicates in semver file {fpath}") + eprint(duplicates) + exit(1) + + +def check_output(args: list[str], **kw) -> str: + xtrace(args) + return sp.check_output(args, encoding="utf8", text=True, **kw) + + +def run(args: list[str], **kw) -> sp.CompletedProcess: + xtrace(args) + return sp.run(args, check=True, text=True, **kw) + + +def xtrace(args: list[str]): + astr = " ".join(args) + eprint(f"+ {astr}") + + +def eprint(*args, **kw): + print(*args, file=sys.stderr, **kw) + + +if __name__ == "__main__": + main() diff --git a/ci/style.sh b/ci/style.sh deleted file mode 100755 index ef57a5efd0402..0000000000000 --- a/ci/style.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/sh - -set -eux - -[ -n "${CI:-}" ] && check="--check" - -cargo test --manifest-path libc-test/Cargo.toml --test style -- --nocapture - -command -v rustfmt -rustfmt -V - -# Save a list of all source files -tmpfile="file-list~" # trailing tilde for gitignore -find src ci -name '*.rs' > "$tmpfile" - -# Before formatting, replace all macro identifiers with a function signature. -# This allows `rustfmt` to format it. -while IFS= read -r file; do - if [ "$file" = "src/macros.rs" ]; then - # Too much special syntax in `macros.rs` that we don't want to format - continue - fi - - # Turn all braced macro `foo! { /* ... */ }` invocations into - # `fn foo_fmt_tmp() { /* ... */ }`. - perl -pi -e 's/(?!macro_rules)\b(\w+)!\s*\{/fn $1_fmt_tmp() {/g' "$file" - - # Replace `if #[cfg(...)]` within `cfg_if` with `if cfg_tmp!([...])` which - # `rustfmt` will format. We put brackets within the parens so it is easy to - # match (trying to match parentheses would catch the first closing `)` which - # wouldn't be correct for something like `all(any(...), ...)`). - perl -pi -0777 -e 's/if #\[cfg\((.*?)\)\]/if cfg_tmp!([$1])/gms' "$file" - - # The `c_enum!` macro allows anonymous enums without names, which - # isn't valid syntax. Replace it with a dummy name and an indicator - # comment on the preceding line (which is where rustfmt puts it. Also - # rust-lang/rustfmt#5464). - perl -pi -e 's/^(\s*)(.*)enum #anon\b/$1\/\* FMT-ANON-ENUM \*\/\n$1$2enum _fmt_anon/g' "$file" - - # Format the file. We need to invoke `rustfmt` directly since `cargo fmt` - # can't figure out the module tree with the hacks in place. - failed=false - rustfmt "$file" ${check:+"$check"} || failed=true - - # Restore all changes to the files. - perl -pi -e 's/fn (\w+)_fmt_tmp\(\)/$1!/g' "$file" - perl -pi -0777 -e 's/cfg_tmp!\(\[(.*?)\]\)/#[cfg($1)]/gms' "$file" - perl -pi -0777 -e 's/\/\* FMT-ANON-ENUM \*\/(?:\n\s*)?(.*?)enum _fmt_anon/$1enum #anon/gms' "$file" - - # Defer emitting the failure until after the files get reset - if [ "$failed" != "false" ]; then - echo "Formatting failed" - exit 1 - fi -done < "$tmpfile" - -rm "$tmpfile" - -# Run once from workspace root to get everything that wasn't handled as an -# individual file. -cargo fmt ${check:+"$check"} - -# Ensure that `sort` output is not locale-dependent -export LC_ALL=C - -for file in libc-test/semver/*.txt; do - case "$file" in - *TODO*) continue ;; - esac - - if ! sort -C "$file"; then - echo "Unsorted semver file $file" - exit 1 - fi - - duplicates=$(uniq -d "$file") - if [ -n "$duplicates" ]; then - echo "Semver file $file contains duplicates:" - echo "$duplicates" - - exit 1 - fi -done - -if shellcheck --version; then - find . -name '*.sh' -print0 | xargs -0 shellcheck -else - echo "shellcheck not found" - exit 1 -fi diff --git a/libc-test/build.rs b/libc-test/build.rs index 5725a9c8607ff..71448bedc09e2 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -2,9 +2,20 @@ #![allow(clippy::match_like_matches_macro)] use std::fs::File; -use std::io::{BufRead, BufReader, BufWriter, Write}; -use std::path::{Path, PathBuf}; -use std::{env, io}; +use std::io::{ + BufRead, + BufReader, + BufWriter, + Write, +}; +use std::path::{ + Path, + PathBuf, +}; +use std::{ + env, + io, +}; fn do_cc() { let target = env::var("TARGET").unwrap(); @@ -656,6 +667,7 @@ fn test_cygwin(target: &str) { "spawn.h", "stddef.h", "stdlib.h", + "stdio.h", "string.h", "sys/cpuset.h", "sys/ioctl.h", @@ -678,6 +690,7 @@ fn test_cygwin(target: &str) { "termios.h", "unistd.h", "utime.h", + "utmpx.h", "wait.h", "wchar.h", ); @@ -1352,6 +1365,7 @@ fn test_netbsd(target: &str) { "mqueue.h", "netinet/dccp.h", "sys/event.h", + (!netbsd9, "sys/eventfd.h"), "sys/quota.h", "sys/reboot.h", "sys/shm.h", @@ -1398,6 +1412,7 @@ fn test_netbsd(target: &str) { "sighandler_t" => true, // Incomplete type in C "cpuset_t" => true, + "eventfd_t" if netbsd9 => true, _ => false, } }); @@ -1461,6 +1476,8 @@ fn test_netbsd(target: &str) { // FIXME(netbsd): Look into setting `_POSIX_C_SOURCE` to enable this "qsort_r" => true, + "eventfd" | "eventfd_read" | "eventfd_write" if netbsd9 => true, + _ => false, } }); @@ -1531,7 +1548,7 @@ fn test_netbsd(target: &str) { }); cfg.skip_struct(move |struct_| match struct_.ident() { - "sockaddr_dl" => true, // Last field increased size in 10 + "sockaddr_dl" if !netbsd9 => true, // Last field increased size in 10 x if x.starts_with("ptrace_lwp") => true, // These were packed before NetBSD 10 "arphdr" | "in_addr" | "ip_mreq" | "sockaddr_in" => true, diff --git a/libc-test/semver/android.txt b/libc-test/semver/android.txt index 644aeaa6667b9..47b4d7693448a 100644 --- a/libc-test/semver/android.txt +++ b/libc-test/semver/android.txt @@ -1088,6 +1088,7 @@ IP_XFRM_POLICY ISIG ISOFS_SUPER_MAGIC ISTRIP +IUCLC IUTF8 IXANY IXOFF diff --git a/libc-test/semver/apple.txt b/libc-test/semver/apple.txt index e9fb9cb31fb12..09934484f379e 100644 --- a/libc-test/semver/apple.txt +++ b/libc-test/semver/apple.txt @@ -2191,12 +2191,14 @@ pseudo_AF_PIP pseudo_AF_RTIP pseudo_AF_XTP pthread_atfork +pthread_attr_get_qos_class_np pthread_attr_getdetachstate pthread_attr_getinheritsched pthread_attr_getschedparam pthread_attr_getschedpolicy pthread_attr_getscope pthread_attr_getstackaddr +pthread_attr_set_qos_class_np pthread_attr_setinheritsched pthread_attr_setschedparam pthread_attr_setschedpolicy @@ -2209,6 +2211,7 @@ pthread_condattr_setpshared pthread_cpu_number_np pthread_create_from_mach_thread pthread_from_mach_thread_np +pthread_get_qos_class_np pthread_get_stackaddr_np pthread_get_stacksize_np pthread_getname_np @@ -2230,6 +2233,7 @@ pthread_once pthread_once_t pthread_rwlockattr_getpshared pthread_rwlockattr_setpshared +pthread_set_qos_class_self_np pthread_setname_np pthread_setschedparam pthread_stack_frame_decode_np diff --git a/libc-test/semver/linux.txt b/libc-test/semver/linux.txt index f67a02f946527..151d21cbd02c6 100644 --- a/libc-test/semver/linux.txt +++ b/libc-test/semver/linux.txt @@ -1302,6 +1302,7 @@ IP_XFRM_POLICY ITIMER_PROF ITIMER_REAL ITIMER_VIRTUAL +IUCLC IUTF8 IWEVASSOCREQIE IWEVASSOCRESPIE diff --git a/libc-test/tests/cmsg.rs b/libc-test/tests/cmsg.rs index 893dd56dba266..80d4af53938e8 100644 --- a/libc-test/tests/cmsg.rs +++ b/libc-test/tests/cmsg.rs @@ -6,7 +6,14 @@ mod t { use std::mem; - use libc::{self, c_uchar, c_uint, c_void, cmsghdr, msghdr}; + use libc::{ + self, + c_uchar, + c_uint, + c_void, + cmsghdr, + msghdr, + }; extern "C" { pub fn cmsg_firsthdr(msgh: *const msghdr) -> *mut cmsghdr; diff --git a/libc-test/tests/errqueue.rs b/libc-test/tests/errqueue.rs index a7d1563c5cf39..c3d9c2e69a496 100644 --- a/libc-test/tests/errqueue.rs +++ b/libc-test/tests/errqueue.rs @@ -2,7 +2,11 @@ #[cfg(any(target_os = "linux", target_os = "android"))] mod t { - use libc::{self, sock_extended_err, sockaddr}; + use libc::{ + self, + sock_extended_err, + sockaddr, + }; extern "C" { pub fn so_ee_offender(ee: *const sock_extended_err) -> *mut sockaddr; diff --git a/libc-test/tests/makedev.rs b/libc-test/tests/makedev.rs index 1c08776d7260f..a5c1ec2ffc580 100644 --- a/libc-test/tests/makedev.rs +++ b/libc-test/tests/makedev.rs @@ -13,7 +13,11 @@ target_os = "cygwin", ))] -use libc::{self, c_uint, dev_t}; +use libc::{ + self, + c_uint, + dev_t, +}; cfg_if::cfg_if! { if #[cfg(any(target_os = "solaris", target_os = "illumos"))] { diff --git a/libc-test/tests/style.rs b/libc-test/tests/style.rs index d5af8dddbf973..dcbe43bb59651 100644 --- a/libc-test/tests/style.rs +++ b/libc-test/tests/style.rs @@ -14,7 +14,10 @@ pub mod style_lib; use std::env; use std::path::Path; -use style_lib::{Result, StyleChecker}; +use style_lib::{ + Result, + StyleChecker, +}; /// Relative to `src/`. const SKIP_PREFIXES: &[&str] = &[ diff --git a/libc-test/tests/style_lib/mod.rs b/libc-test/tests/style_lib/mod.rs index cc953d32c3aed..04eec91df635d 100644 --- a/libc-test/tests/style_lib/mod.rs +++ b/libc-test/tests/style_lib/mod.rs @@ -28,13 +28,26 @@ use std::collections::HashMap; use std::fs; use std::ops::Deref; -use std::path::{Path, PathBuf}; - -use annotate_snippets::{Level, Renderer, Snippet}; +use std::path::{ + Path, + PathBuf, +}; + +use annotate_snippets::{ + Level, + Renderer, + Snippet, +}; use proc_macro2::Span; -use syn::parse::{Parse, ParseStream}; +use syn::parse::{ + Parse, + ParseStream, +}; use syn::spanned::Spanned; -use syn::visit::{self, Visit}; +use syn::visit::{ + self, + Visit, +}; use syn::Token; const ALLOWED_REPEATED_MACROS: &[&str] = &["s", "s_no_extra_traits", "s_paren"]; diff --git a/rustfmt.toml b/rustfmt.toml deleted file mode 100644 index 8016e2bbfeca9..0000000000000 --- a/rustfmt.toml +++ /dev/null @@ -1,5 +0,0 @@ -# Note that there is a separate configuration for `src/` -edition = "2021" -error_on_line_overflow = true -group_imports = "StdExternalCrate" -imports_granularity = "Module" diff --git a/src/fuchsia/aarch64.rs b/src/fuchsia/aarch64.rs index 577f0d99cf24d..93090f7238d7a 100644 --- a/src/fuchsia/aarch64.rs +++ b/src/fuchsia/aarch64.rs @@ -15,10 +15,10 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad0: c_ulong, + __pad0: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, - __pad1: c_int, + __pad1: Padding, pub st_blocks: crate::blkcnt_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -26,7 +26,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_uint; 2], + __unused: Padding<[c_uint; 2]>, } pub struct stat64 { @@ -37,10 +37,10 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad0: c_ulong, + __pad0: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, - __pad1: c_int, + __pad1: Padding, pub st_blocks: crate::blkcnt_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -48,7 +48,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_uint; 2], + __unused: Padding<[c_uint; 2]>, } pub struct ipc_perm { @@ -59,8 +59,8 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __unused1: Padding, + __unused2: Padding, } } diff --git a/src/fuchsia/mod.rs b/src/fuchsia/mod.rs index 35046446c4476..4ba381cbb6e3a 100644 --- a/src/fuchsia/mod.rs +++ b/src/fuchsia/mod.rs @@ -121,46 +121,46 @@ s! { pub ru_stime: timeval, pub ru_maxrss: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad1: u32, + __pad1: Padding, pub ru_ixrss: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad2: u32, + __pad2: Padding, pub ru_idrss: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad3: u32, + __pad3: Padding, pub ru_isrss: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad4: u32, + __pad4: Padding, pub ru_minflt: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad5: u32, + __pad5: Padding, pub ru_majflt: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad6: u32, + __pad6: Padding, pub ru_nswap: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad7: u32, + __pad7: Padding, pub ru_inblock: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad8: u32, + __pad8: Padding, pub ru_oublock: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad9: u32, + __pad9: Padding, pub ru_msgsnd: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad10: u32, + __pad10: Padding, pub ru_msgrcv: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad11: u32, + __pad11: Padding, pub ru_nsignals: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad12: u32, + __pad12: Padding, pub ru_nvcsw: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad13: u32, + __pad13: Padding, pub ru_nivcsw: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad14: u32, + __pad14: Padding, } pub struct in_addr { @@ -432,11 +432,11 @@ s! { 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, + __unused1: Padding<*mut c_void>, + __unused2: Padding<*mut c_void>, + __unused3: Padding<*mut c_void>, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, } pub struct ifaddrs { @@ -521,7 +521,7 @@ s! { pub ssi_stime: u64, pub ssi_addr: u64, pub ssi_addr_lsb: u16, - _pad2: u16, + _pad2: Padding, pub ssi_syscall: i32, pub ssi_call_addr: u64, pub ssi_arch: u32, @@ -778,8 +778,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: c_ulong, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct msqid_ds { @@ -792,8 +792,8 @@ s! { pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct statfs { @@ -816,10 +816,10 @@ s! { pub msg_namelen: crate::socklen_t, pub msg_iov: *mut crate::iovec, pub msg_iovlen: c_int, - __pad1: c_int, + __pad1: Padding, pub msg_control: *mut c_void, pub msg_controllen: crate::socklen_t, - __pad2: crate::socklen_t, + __pad2: Padding, pub msg_flags: c_int, } @@ -905,7 +905,7 @@ s! { pub struct sockaddr_storage { pub ss_family: sa_family_t, - __ss_pad2: [u8; 128 - 2 - 8], + __ss_pad2: Padding<[u8; 128 - 2 - 8]>, __ss_align: size_t, } @@ -962,7 +962,7 @@ s! { pub struct sockaddr_nl { pub nl_family: crate::sa_family_t, - nl_pad: c_ushort, + nl_pad: Padding, pub nl_pid: u32, pub nl_groups: u32, } @@ -3873,7 +3873,7 @@ extern "C" { len: size_t, flags: c_uint, ) -> ssize_t; - pub fn eventfd(init: c_uint, flags: c_int) -> c_int; + pub fn eventfd(initval: c_uint, flags: c_int) -> c_int; pub fn sched_rr_get_interval(pid: crate::pid_t, tp: *mut crate::timespec) -> c_int; pub fn sem_timedwait(sem: *mut sem_t, abstime: *const crate::timespec) -> c_int; pub fn sem_getvalue(sem: *mut sem_t, sval: *mut c_int) -> c_int; diff --git a/src/fuchsia/riscv64.rs b/src/fuchsia/riscv64.rs index c57d52aad1386..bc93cc3bff0a9 100644 --- a/src/fuchsia/riscv64.rs +++ b/src/fuchsia/riscv64.rs @@ -17,7 +17,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - __pad0: c_int, + __pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_blksize: crate::blksize_t, @@ -28,7 +28,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_long; 3], + __unused: Padding<[c_long; 3]>, } // Not actually used, IPC calls just return ENOSYS @@ -40,7 +40,7 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __unused1: Padding, + __unused2: Padding, } } diff --git a/src/fuchsia/x86_64.rs b/src/fuchsia/x86_64.rs index 2ce21e20fefc4..fc42cd9810985 100644 --- a/src/fuchsia/x86_64.rs +++ b/src/fuchsia/x86_64.rs @@ -14,7 +14,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - __pad0: c_int, + __pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_blksize: crate::blksize_t, @@ -25,7 +25,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_long; 3], + __unused: Padding<[c_long; 3]>, } pub struct stat64 { @@ -35,7 +35,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - __pad0: c_int, + __pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_blksize: crate::blksize_t, @@ -46,7 +46,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __reserved: [c_long; 3], + __reserved: Padding<[c_long; 3]>, } pub struct mcontext_t { @@ -61,8 +61,8 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: c_int, - __unused1: c_long, - __unused2: c_long, + __unused1: Padding, + __unused2: Padding, } pub struct ucontext_t { diff --git a/src/hermit.rs b/src/hermit.rs index b96be6b0e2a2f..e8699228b6001 100644 --- a/src/hermit.rs +++ b/src/hermit.rs @@ -87,9 +87,9 @@ s! { pub struct sockaddr_storage { pub ss_len: u8, pub ss_family: sa_family_t, - __ss_pad1: [u8; 6], + __ss_pad1: Padding<[u8; 6]>, __ss_align: i64, - __ss_pad2: [u8; 112], + __ss_pad2: Padding<[u8; 112]>, } pub struct stat { diff --git a/src/macros.rs b/src/macros.rs index c6001e7bc37c9..019a15a2ec728 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -298,13 +298,13 @@ macro_rules! c_enum { ($( $(#[repr($repr:ty)])? pub enum $($ty_name:ident)? $(#$anon:ident)? { - $($variant:ident $(= $value:expr)?,)+ + $($vis:vis $variant:ident $(= $value:expr)?,)+ } )+) => { $(c_enum!(@single; $(#[repr($repr)])? pub enum $($ty_name)? $(#$anon)? { - $($variant $(= $value)?,)+ + $($vis $variant $(= $value)?,)+ } );)+ }; @@ -313,31 +313,45 @@ macro_rules! c_enum { (@single; $(#[repr($repr:ty)])? pub enum $ty_name:ident { - $($variant:ident $(= $value:expr)?,)+ + $($vis:vis $variant:ident $(= $value:expr)?,)+ } ) => { pub type $ty_name = c_enum!(@ty $($repr)?); - c_enum!(@variant; $ty_name; 0; $($variant $(= $value)?,)+); + c_enum! { + @variant; + ty: $ty_name; + default: 0; + variants: [$($vis $variant $(= $value)?,)+] + } }; // Matcher for a single anonymous enum (@single; $(#[repr($repr:ty)])? pub enum #anon { - $($variant:ident $(= $value:expr)?,)+ + $($vis:vis $variant:ident $(= $value:expr)?,)+ } ) => { - c_enum!(@variant; c_enum!(@ty $($repr)?); 0; $($variant $(= $value)?,)+); + c_enum! { + @variant; + ty: c_enum!(@ty $($repr)?); + default: 0; + variants: [$($vis $variant $(= $value)?,)+] + } }; - // Matcher for a single variant - (@variant; $_ty_name:ty; $_idx:expr;) => { /* end of the chain */ }; + // Matcher for variants: eats a single variant then recurses with the rest + (@variant; ty: $_ty_name:ty; default: $_idx:expr; variants: []) => { /* end of the chain */ }; ( - @variant; $ty_name:ty; $default_val:expr; - $variant:ident $(= $value:expr)?, - $($tail:tt)* + @variant; + ty: $ty_name:ty; + default: $default_val:expr; + variants: [ + $vis:vis $variant:ident $(= $value:expr)?, + $($tail:tt)* + ] ) => { - pub const $variant: $ty_name = { + $vis const $variant: $ty_name = { #[allow(unused_variables)] let r = $default_val; $(let r = $value;)? @@ -346,7 +360,12 @@ macro_rules! c_enum { // The next value is always one more than the previous value, unless // set explicitly. - c_enum!(@variant; $ty_name; $variant + 1; $($tail)*); + c_enum! { + @variant; + ty: $ty_name; + default: $variant + 1; + variants: [$($tail)*] + } }; // Use a specific type if provided, otherwise default to `CEnumRepr` @@ -543,6 +562,40 @@ mod tests { assert_eq!(VAR4_1, 4 as CEnumRepr); } + #[test] + fn c_enum_vis() { + mod priv1 { + c_enum! { + #[repr(u8)] + pub enum e1 { + PRIV_ON_1 = 10, + // Variant should still be usable within its visibility + pub PUB1 = PRIV_ON_1 * 2, + } + } + } + mod priv2 { + c_enum! { + #[repr(u16)] + pub enum e2 { + pub PRIV_ON_1 = 42, + pub PUB2 = PRIV_ON_1 * 2, + } + } + } + + use priv1::*; + use priv2::*; + + assert_eq!(TypeId::of::(), TypeId::of::()); + assert_eq!(TypeId::of::(), TypeId::of::()); + assert_eq!(PUB1, 10u8 * 2); + assert_eq!(PUB2, 42u16 * 2); + // Verify that the default is private. If `PRIV_ON_1` was actually public in `priv1`, this + // would be an ambiguous import and/or type mismatch error. + assert_eq!(PRIV_ON_1, 42u16); + } + fn type_id_of_val(_: &T) -> TypeId { TypeId::of::() } diff --git a/src/new/apple_libc/signal.rs b/src/new/apple/libc/signal.rs similarity index 100% rename from src/new/apple_libc/signal.rs rename to src/new/apple/libc/signal.rs diff --git a/src/new/apple_libc/unistd.rs b/src/new/apple/libc/unistd.rs similarity index 100% rename from src/new/apple_libc/unistd.rs rename to src/new/apple/libc/unistd.rs diff --git a/src/new/apple/libpthread/mod.rs b/src/new/apple/libpthread/mod.rs new file mode 100644 index 0000000000000..66f25e6f7ba48 --- /dev/null +++ b/src/new/apple/libpthread/mod.rs @@ -0,0 +1,20 @@ +//! Source from libpthread + +/// Directory: `pthread/` +/// +/// Note that this module has a trailing underscore to avoid conflicting with its child `pthread` +/// module. +/// +/// +pub(crate) mod pthread_ { + pub(crate) mod introspection; + pub(crate) mod pthread; + pub(crate) mod pthread_impl; + pub(crate) mod pthread_spis; + pub(crate) mod qos; + pub(crate) mod sched; + pub(crate) mod spawn; + pub(crate) mod stack_np; +} + +pub(crate) mod sys; diff --git a/src/new/apple/libpthread/pthread_/introspection.rs b/src/new/apple/libpthread/pthread_/introspection.rs new file mode 100644 index 0000000000000..6509e22be3c08 --- /dev/null +++ b/src/new/apple/libpthread/pthread_/introspection.rs @@ -0,0 +1,36 @@ +//! Header: `pthread/introspection.h` +//! +//! + +use crate::prelude::*; +pub use crate::pthread_::pthread::*; + +c_enum! { + #[repr(c_uint)] + pub enum #anon { + pub PTHREAD_INTROSPECTION_THREAD_CREATE = 1, + pub PTHREAD_INTROSPECTION_THREAD_START, + pub PTHREAD_INTROSPECTION_THREAD_TERMINATE, + pub PTHREAD_INTROSPECTION_THREAD_DESTROY, + } +} + +pub type pthread_introspection_hook_t = + extern "C" fn(event: c_uint, thread: pthread_t, addr: *mut c_void, size: size_t); + +extern "C" { + // Available from Big Sur + pub fn pthread_introspection_hook_install( + hook: pthread_introspection_hook_t, + ) -> pthread_introspection_hook_t; + pub fn pthread_introspection_setspecific_np( + thread: pthread_t, + key: pthread_key_t, + value: *const c_void, + ) -> c_int; + + pub fn pthread_introspection_getspecific_np( + thread: pthread_t, + key: pthread_key_t, + ) -> *mut c_void; +} diff --git a/src/new/apple/libpthread/pthread_/pthread.rs b/src/new/apple/libpthread/pthread_/pthread.rs new file mode 100644 index 0000000000000..a7e56bef8f11b --- /dev/null +++ b/src/new/apple/libpthread/pthread_/pthread.rs @@ -0,0 +1,76 @@ +//! Header: `pthread.h` or `pthread/pthread.h` +//! +//! + +use crate::prelude::*; +pub use crate::pthread_::qos::*; +pub use crate::pthread_::sched::*; +// No need to import from the `_pthread_attr_t` and similar modules since `_pthread_types` has +// everything we need. +pub use crate::sys::_pthread::_pthread_types::*; + +pub const PTHREAD_CREATE_JOINABLE: c_int = 1; +pub const PTHREAD_CREATE_DETACHED: c_int = 2; + +pub const PTHREAD_INHERIT_SCHED: c_int = 1; +pub const PTHREAD_EXPLICIT_SCHED: c_int = 2; + +pub const PTHREAD_CANCEL_ENABLE: c_int = 0x01; +pub const PTHREAD_CANCEL_DISABLE: c_int = 0x00; +pub const PTHREAD_CANCEL_DEFERRED: c_int = 0x02; +pub const PTHREAD_CANCEL_ASYNCHRONOUS: c_int = 0x00; + +pub const PTHREAD_CANCELED: *mut c_void = 1 as *mut c_void; + +pub const PTHREAD_SCOPE_SYSTEM: c_int = 1; +pub const PTHREAD_SCOPE_PROCESS: c_int = 2; + +pub const PTHREAD_PROCESS_SHARED: c_int = 1; +pub const PTHREAD_PROCESS_PRIVATE: c_int = 2; + +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_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { + __sig: _PTHREAD_RWLOCK_SIG_init, + __opaque: [0; __PTHREAD_RWLOCK_SIZE__], +}; + +pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { + __sig: _PTHREAD_MUTEX_SIG_init, + __opaque: [0; __PTHREAD_MUTEX_SIZE__], +}; + +pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t { + __sig: _PTHREAD_COND_SIG_init, + __opaque: [0; __PTHREAD_COND_SIZE__], +}; + +pub const PTHREAD_ONCE_INIT: crate::pthread_once_t = crate::pthread_once_t { + __sig: _PTHREAD_ONCE_SIG_INIT, + __opaque: [0; __PTHREAD_ONCE_SIZE__], +}; + +pub use crate::new::common::posix::pthread::{ + pthread_attr_getinheritsched, + pthread_attr_getschedparam, + pthread_attr_getschedpolicy, + pthread_attr_setinheritsched, + pthread_attr_setschedparam, + pthread_attr_setschedpolicy, + pthread_condattr_getpshared, + pthread_condattr_setpshared, + pthread_getschedparam, + pthread_mutexattr_getpshared, + pthread_mutexattr_setpshared, + pthread_once, + pthread_rwlockattr_getpshared, + pthread_rwlockattr_setpshared, + pthread_setschedparam, +}; diff --git a/src/new/apple/libpthread/pthread_/pthread_impl.rs b/src/new/apple/libpthread/pthread_/pthread_impl.rs new file mode 100644 index 0000000000000..92c5e2733c44e --- /dev/null +++ b/src/new/apple/libpthread/pthread_/pthread_impl.rs @@ -0,0 +1,12 @@ +use crate::prelude::*; + +// FIXME(apple): these should all be `pub(crate)` +pub const _PTHREAD_MUTEX_SIG_init: c_long = 0x32AAABA7; + +pub const _PTHREAD_COND_SIG_init: c_long = 0x3CB0B1BB; +pub(crate) const _PTHREAD_ONCE_SIG_INIT: c_long = 0x30B1BCBA; +pub const _PTHREAD_RWLOCK_SIG_init: c_long = 0x2DA8B3B4; + +pub const SCHED_OTHER: c_int = 1; +pub const SCHED_FIFO: c_int = 4; +pub const SCHED_RR: c_int = 2; diff --git a/src/new/apple/libpthread/pthread_/pthread_spis.rs b/src/new/apple/libpthread/pthread_/pthread_spis.rs new file mode 100644 index 0000000000000..24e3fedc9d307 --- /dev/null +++ b/src/new/apple/libpthread/pthread_/pthread_spis.rs @@ -0,0 +1,14 @@ +//! Header: `pthread/pthread_spis.h` +//! +//! + +use crate::prelude::*; + +extern "C" { + pub fn pthread_create_from_mach_thread( + thread: *mut crate::pthread_t, + attr: *const crate::pthread_attr_t, + f: extern "C" fn(*mut c_void) -> *mut c_void, + value: *mut c_void, + ) -> c_int; +} diff --git a/src/new/apple/libpthread/pthread_/qos.rs b/src/new/apple/libpthread/pthread_/qos.rs new file mode 100644 index 0000000000000..8b68c78ffb826 --- /dev/null +++ b/src/new/apple/libpthread/pthread_/qos.rs @@ -0,0 +1,25 @@ +//! Header: `pthread/qos.h` +//! +//! + +use crate::prelude::*; +pub use crate::sys::qos::*; + +extern "C" { + pub fn pthread_attr_set_qos_class_np( + attr: *mut crate::pthread_attr_t, + class: qos_class_t, + priority: c_int, + ) -> c_int; + pub fn pthread_attr_get_qos_class_np( + attr: *mut crate::pthread_attr_t, + class: *mut qos_class_t, + priority: *mut c_int, + ) -> c_int; + pub fn pthread_set_qos_class_self_np(class: qos_class_t, priority: c_int) -> c_int; + pub fn pthread_get_qos_class_np( + thread: crate::pthread_t, + class: *mut qos_class_t, + priority: *mut c_int, + ) -> c_int; +} diff --git a/src/new/apple/libpthread/pthread_/sched.rs b/src/new/apple/libpthread/pthread_/sched.rs new file mode 100644 index 0000000000000..d25a6cb082755 --- /dev/null +++ b/src/new/apple/libpthread/pthread_/sched.rs @@ -0,0 +1,9 @@ +pub use crate::new::pthread_::pthread_impl::*; +use crate::prelude::*; + +s! { + pub struct sched_param { + pub sched_priority: c_int, + __opaque: [c_char; 4], + } +} diff --git a/src/new/apple/libpthread/pthread_/spawn.rs b/src/new/apple/libpthread/pthread_/spawn.rs new file mode 100644 index 0000000000000..c5bdb7ababf10 --- /dev/null +++ b/src/new/apple/libpthread/pthread_/spawn.rs @@ -0,0 +1,16 @@ +//! Header: `pthread/spawn.h` +//! +//! + +use crate::prelude::*; + +extern "C" { + pub fn posix_spawnattr_set_qos_class_np( + attr: *mut crate::posix_spawnattr_t, + qos_class: crate::qos_class_t, + ) -> c_int; + pub fn posix_spawnattr_get_qos_class_np( + attr: *const crate::posix_spawnattr_t, + qos_class: *mut crate::qos_class_t, + ) -> c_int; +} diff --git a/src/new/apple/libpthread/pthread_/stack_np.rs b/src/new/apple/libpthread/pthread_/stack_np.rs new file mode 100644 index 0000000000000..0d501cdbb6f0b --- /dev/null +++ b/src/new/apple/libpthread/pthread_/stack_np.rs @@ -0,0 +1,12 @@ +//! Header: `pthread/stack_np.h` +//! +//! + +use crate::prelude::*; + +extern "C" { + pub fn pthread_stack_frame_decode_np( + frame_addr: uintptr_t, + return_addr: *mut uintptr_t, + ) -> uintptr_t; +} diff --git a/src/new/apple/libpthread/sys/_pthread/_pthread_types.rs b/src/new/apple/libpthread/sys/_pthread/_pthread_types.rs new file mode 100644 index 0000000000000..95e181c13f05d --- /dev/null +++ b/src/new/apple/libpthread/sys/_pthread/_pthread_types.rs @@ -0,0 +1,79 @@ +//! Header: `sys/_pthread/_pthread_types.h` +//! +//! +//! +//! Note that the actual header defines `_opaque_pthread_*` structs which are typedefed to +//! `__darwin_pthread*` structs, and typedefed again in separate `_pthread_*.h` files to their final +//! `pthread_` name. This isn't useful for us so we simplify a bit and just define everything here. + +use crate::prelude::*; + +cfg_if! { + if #[cfg(target_pointer_width = "64")] { + pub const __PTHREAD_SIZE__: usize = 8176; + pub const __PTHREAD_ATTR_SIZE__: usize = 56; + pub const __PTHREAD_MUTEXATTR_SIZE__: usize = 8; + pub const __PTHREAD_MUTEX_SIZE__: usize = 56; + pub const __PTHREAD_CONDATTR_SIZE__: usize = 8; + pub const __PTHREAD_COND_SIZE__: usize = 40; + pub const __PTHREAD_ONCE_SIZE__: usize = 8; + pub const __PTHREAD_RWLOCK_SIZE__: usize = 192; + pub const __PTHREAD_RWLOCKATTR_SIZE__: usize = 16; + } else { + pub const __PTHREAD_SIZE__: usize = 4088; + pub const __PTHREAD_ATTR_SIZE__: usize = 36; + pub const __PTHREAD_MUTEXATTR_SIZE__: usize = 8; + pub const __PTHREAD_MUTEX_SIZE__: usize = 40; + pub const __PTHREAD_CONDATTR_SIZE__: usize = 4; + pub const __PTHREAD_COND_SIZE__: usize = 24; + pub const __PTHREAD_ONCE_SIZE__: usize = 4; + pub const __PTHREAD_RWLOCK_SIZE__: usize = 124; + pub const __PTHREAD_RWLOCKATTR_SIZE__: usize = 12; + } +} + +s! { + pub struct pthread_attr_t { + pub(crate) __sig: c_long, + pub(crate) __opaque: [c_char; __PTHREAD_ATTR_SIZE__], + } + + pub struct pthread_cond_t { + pub(crate) __sig: c_long, + pub(crate) __opaque: [u8; __PTHREAD_COND_SIZE__], + } + + pub struct pthread_condattr_t { + pub(crate) __sig: c_long, + pub(crate) __opaque: [u8; __PTHREAD_CONDATTR_SIZE__], + } + + pub struct pthread_mutex_t { + pub(crate) __sig: c_long, + pub(crate) __opaque: [u8; __PTHREAD_MUTEX_SIZE__], + } + + pub struct pthread_mutexattr_t { + pub(crate) __sig: c_long, + pub(crate) __opaque: [u8; __PTHREAD_MUTEXATTR_SIZE__], + } + + pub struct pthread_once_t { + pub(crate) __sig: c_long, + pub(crate) __opaque: [c_char; __PTHREAD_ONCE_SIZE__], + } + + pub struct pthread_rwlock_t { + pub(crate) __sig: c_long, + pub(crate) __opaque: [u8; __PTHREAD_RWLOCK_SIZE__], + } + + pub struct pthread_rwlockattr_t { + pub(crate) __sig: c_long, + pub(crate) __opaque: [u8; __PTHREAD_RWLOCKATTR_SIZE__], + } +} + +pub type pthread_key_t = c_ulong; + +pub use crate::pthread_t; diff --git a/src/new/apple/libpthread/sys/mod.rs b/src/new/apple/libpthread/sys/mod.rs new file mode 100644 index 0000000000000..da0a229547cb2 --- /dev/null +++ b/src/new/apple/libpthread/sys/mod.rs @@ -0,0 +1,14 @@ +//! Directory: `sys/` +//! +//! + +/// Directory: `sys/_pthread/` +/// +/// +pub(crate) mod _pthread { + // We don't have the `_pthread_attr_t` and similar modules to match `_pthread_attr_t.h`, + // everything is defined in `_pthread_types`. + pub(crate) mod _pthread_types; +} + +pub(crate) mod qos; diff --git a/src/new/apple/libpthread/sys/qos.rs b/src/new/apple/libpthread/sys/qos.rs new file mode 100644 index 0000000000000..9d9a2eb3dfcb9 --- /dev/null +++ b/src/new/apple/libpthread/sys/qos.rs @@ -0,0 +1,22 @@ +//! Header: `sys/qos.h` +//! +//! + +use crate::prelude::*; + +#[derive(Debug)] +#[repr(u32)] +pub enum qos_class_t { + QOS_CLASS_USER_INTERACTIVE = 0x21, + QOS_CLASS_USER_INITIATED = 0x19, + QOS_CLASS_DEFAULT = 0x15, + QOS_CLASS_UTILITY = 0x11, + QOS_CLASS_BACKGROUND = 0x09, + QOS_CLASS_UNSPECIFIED = 0x00, +} +impl Copy for qos_class_t {} +impl Clone for qos_class_t { + fn clone(&self) -> qos_class_t { + *self + } +} diff --git a/src/new/apple/mod.rs b/src/new/apple/mod.rs new file mode 100644 index 0000000000000..beb8caab63c20 --- /dev/null +++ b/src/new/apple/mod.rs @@ -0,0 +1,20 @@ +//! Apple interfaces. +//! +//! The Xcode SDK includes interfaces that are split across a couple of different libraries. Most +//! of these are available at . + +/// Entrypoint for Apple headers, usually found as part of the Xcode SDK. +/// +/// +mod libc { + pub(crate) mod signal; + pub(crate) mod unistd; +} + +mod libpthread; +mod xnu; + +pub(crate) use libc::*; +pub(crate) use libpthread::pthread_; +pub(crate) use pthread_::pthread; +pub(crate) use xnu::*; diff --git a/src/new/apple_xnu/arm/_mcontext.rs b/src/new/apple/xnu/arm/_mcontext.rs similarity index 100% rename from src/new/apple_xnu/arm/_mcontext.rs rename to src/new/apple/xnu/arm/_mcontext.rs diff --git a/src/new/apple_xnu/i386/_mcontext.rs b/src/new/apple/xnu/i386/_mcontext.rs similarity index 100% rename from src/new/apple_xnu/i386/_mcontext.rs rename to src/new/apple/xnu/i386/_mcontext.rs diff --git a/src/new/apple_xnu/mach/arm/_structs.rs b/src/new/apple/xnu/mach/arm/_structs.rs similarity index 100% rename from src/new/apple_xnu/mach/arm/_structs.rs rename to src/new/apple/xnu/mach/arm/_structs.rs diff --git a/src/new/apple_xnu/mach/i386/_structs.rs b/src/new/apple/xnu/mach/i386/_structs.rs similarity index 100% rename from src/new/apple_xnu/mach/i386/_structs.rs rename to src/new/apple/xnu/mach/i386/_structs.rs diff --git a/src/new/apple_xnu/mach/machine/_structs.rs b/src/new/apple/xnu/mach/machine/_structs.rs similarity index 100% rename from src/new/apple_xnu/mach/machine/_structs.rs rename to src/new/apple/xnu/mach/machine/_structs.rs diff --git a/src/new/apple_xnu/mach/mod.rs b/src/new/apple/xnu/mach/mod.rs similarity index 100% rename from src/new/apple_xnu/mach/mod.rs rename to src/new/apple/xnu/mach/mod.rs diff --git a/src/new/apple_xnu/machine/_mcontext.rs b/src/new/apple/xnu/machine/_mcontext.rs similarity index 100% rename from src/new/apple_xnu/machine/_mcontext.rs rename to src/new/apple/xnu/machine/_mcontext.rs diff --git a/src/new/apple_xnu/mod.rs b/src/new/apple/xnu/mod.rs similarity index 100% rename from src/new/apple_xnu/mod.rs rename to src/new/apple/xnu/mod.rs diff --git a/src/new/apple_xnu/sys/_types/_ucontext.rs b/src/new/apple/xnu/sys/_types/_ucontext.rs similarity index 100% rename from src/new/apple_xnu/sys/_types/_ucontext.rs rename to src/new/apple/xnu/sys/_types/_ucontext.rs diff --git a/src/new/apple_xnu/sys/mod.rs b/src/new/apple/xnu/sys/mod.rs similarity index 67% rename from src/new/apple_xnu/sys/mod.rs rename to src/new/apple/xnu/sys/mod.rs index 5a75457926690..ad4a204898cb8 100644 --- a/src/new/apple_xnu/sys/mod.rs +++ b/src/new/apple/xnu/sys/mod.rs @@ -10,3 +10,6 @@ pub(crate) mod signal; pub(crate) mod _types { pub(crate) mod _ucontext; } + +// Bit of a hack since the directories get merged and we can't have >1 sys module. +pub(crate) use crate::new::apple::libpthread::sys::*; diff --git a/src/new/apple_xnu/sys/signal.rs b/src/new/apple/xnu/sys/signal.rs similarity index 100% rename from src/new/apple_xnu/sys/signal.rs rename to src/new/apple/xnu/sys/signal.rs diff --git a/src/new/apple_libc/mod.rs b/src/new/apple_libc/mod.rs deleted file mode 100644 index d7fcc90d12ff8..0000000000000 --- a/src/new/apple_libc/mod.rs +++ /dev/null @@ -1,6 +0,0 @@ -//! Entrypoint for Apple headers, usually found as part of the Xcode SDK. -//! -//! - -pub(crate) mod signal; -pub(crate) mod unistd; diff --git a/src/new/bionic_libc/mod.rs b/src/new/bionic_libc/mod.rs index b608e2f123c96..1dd186e4f940f 100644 --- a/src/new/bionic_libc/mod.rs +++ b/src/new/bionic_libc/mod.rs @@ -2,5 +2,6 @@ //! //! +pub(crate) mod pthread; pub(crate) mod sys; pub(crate) mod unistd; diff --git a/src/new/bionic_libc/pthread.rs b/src/new/bionic_libc/pthread.rs new file mode 100644 index 0000000000000..4997547ff0905 --- /dev/null +++ b/src/new/bionic_libc/pthread.rs @@ -0,0 +1,42 @@ +//! Header: `unistd.h` + +pub use crate::new::common::linux_like::pthread::{ + pthread_getattr_np, + pthread_setname_np, +}; +pub use crate::new::common::posix::pthread::{ + pthread_atfork, + pthread_attr_getguardsize, + pthread_attr_getinheritsched, + pthread_attr_getstack, + pthread_attr_setguardsize, + pthread_attr_setinheritsched, + pthread_attr_setstack, + pthread_barrier_destroy, + pthread_barrier_init, + pthread_barrier_wait, + pthread_barrierattr_destroy, + pthread_barrierattr_getpshared, + pthread_barrierattr_init, + pthread_barrierattr_setpshared, + pthread_condattr_getclock, + pthread_condattr_getpshared, + pthread_condattr_setclock, + pthread_condattr_setpshared, + pthread_create, + pthread_getcpuclockid, + pthread_getschedparam, + pthread_kill, + pthread_mutex_timedlock, + pthread_mutexattr_getpshared, + pthread_mutexattr_setpshared, + pthread_rwlockattr_getpshared, + pthread_rwlockattr_setpshared, + pthread_setschedparam, + pthread_sigmask, + pthread_spin_destroy, + pthread_spin_init, + pthread_spin_lock, + pthread_spin_trylock, + pthread_spin_unlock, +}; diff --git a/src/new/common/linux_like/mod.rs b/src/new/common/linux_like/mod.rs index 9aceb4e09f0e3..9c41fe256ceff 100644 --- a/src/new/common/linux_like/mod.rs +++ b/src/new/common/linux_like/mod.rs @@ -1 +1,9 @@ //! API that primarily comes from Linux but is also used other platforms (e.g. Android). + +#[cfg(any( + target_os = "android", + target_os = "emscripten", + target_os = "l4re", + target_os = "linux" +))] +pub(crate) mod pthread; diff --git a/src/new/common/linux_like/pthread.rs b/src/new/common/linux_like/pthread.rs new file mode 100644 index 0000000000000..165f3254e79da --- /dev/null +++ b/src/new/common/linux_like/pthread.rs @@ -0,0 +1,25 @@ +use crate::prelude::*; + +extern "C" { + #[cfg(target_os = "linux")] + pub fn pthread_getaffinity_np( + thread: crate::pthread_t, + cpusetsize: size_t, + cpuset: *mut crate::cpu_set_t, + ) -> c_int; + + pub fn pthread_getattr_np(native: crate::pthread_t, attr: *mut crate::pthread_attr_t) -> c_int; + + #[cfg(target_os = "linux")] + pub fn pthread_getname_np(thread: crate::pthread_t, name: *mut c_char, len: size_t) -> c_int; + + #[cfg(target_os = "linux")] + pub fn pthread_setaffinity_np( + thread: crate::pthread_t, + cpusetsize: size_t, + cpuset: *const crate::cpu_set_t, + ) -> c_int; + + #[cfg(any(target_os = "android", target_os = "linux"))] + pub fn pthread_setname_np(thread: crate::pthread_t, name: *const c_char) -> c_int; +} diff --git a/src/new/common/posix/mod.rs b/src/new/common/posix/mod.rs index 454b840404c95..7bd596e37205d 100644 --- a/src/new/common/posix/mod.rs +++ b/src/new/common/posix/mod.rs @@ -1,3 +1,14 @@ //! POSIX APIs that are used by a number of platforms +//! +//! These can be found at: . +// FIXME(pthread): eventually all platforms should use this module +#[cfg(any( + target_os = "android", + target_os = "emscripten", + target_os = "l4re", + target_os = "linux", + target_vendor = "apple", +))] +pub(crate) mod pthread; pub(crate) mod unistd; diff --git a/src/new/common/posix/pthread.rs b/src/new/common/posix/pthread.rs new file mode 100644 index 0000000000000..8cff48c601fb8 --- /dev/null +++ b/src/new/common/posix/pthread.rs @@ -0,0 +1,331 @@ +//! Header: `pthread.h` +//! +//! + +use crate::prelude::*; + +extern "C" { + #[cfg(any(target_os = "android", target_os = "linux"))] + pub fn pthread_atfork( + prepare: Option, + parent: Option, + child: Option, + ) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_attr_getguardsize( + attr: *const crate::pthread_attr_t, + guardsize: *mut size_t, + ) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "l4re", + target_os = "linux", + target_vendor = "apple", + ))] + pub fn pthread_attr_getinheritsched( + attr: *const crate::pthread_attr_t, + inheritsched: *mut c_int, + ) -> c_int; + + #[cfg(any(target_os = "l4re", target_os = "linux", target_vendor = "apple"))] + pub fn pthread_attr_getschedparam( + attr: *const crate::pthread_attr_t, + param: *mut crate::sched_param, + ) -> c_int; + + #[cfg(any(target_os = "l4re", target_os = "linux", target_vendor = "apple"))] + pub fn pthread_attr_getschedpolicy( + attr: *const crate::pthread_attr_t, + policy: *mut c_int, + ) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "emscripten", + target_os = "linux", + target_os = "l4re" + ))] + pub fn pthread_attr_getstack( + attr: *const crate::pthread_attr_t, + stackaddr: *mut *mut c_void, + stacksize: *mut size_t, + ) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_attr_setguardsize(attr: *mut crate::pthread_attr_t, guardsize: size_t) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "l4re", + target_os = "linux", + target_vendor = "apple" + ))] + pub fn pthread_attr_setinheritsched( + attr: *mut crate::pthread_attr_t, + inheritsched: c_int, + ) -> c_int; + + #[cfg(any(target_os = "l4re", target_os = "linux", target_vendor = "apple"))] + pub fn pthread_attr_setschedparam( + attr: *mut crate::pthread_attr_t, + param: *const crate::sched_param, + ) -> c_int; + + #[cfg(any(target_os = "l4re", target_os = "linux", target_vendor = "apple"))] + pub fn pthread_attr_setschedpolicy(attr: *mut crate::pthread_attr_t, policy: c_int) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "emscripten", + target_os = "linux", + target_os = "l4re" + ))] + pub fn pthread_attr_setstack( + attr: *mut crate::pthread_attr_t, + stackaddr: *mut c_void, + stacksize: size_t, + ) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_barrier_destroy(barrier: *mut crate::pthread_barrier_t) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_barrier_init( + barrier: *mut crate::pthread_barrier_t, + attr: *const crate::pthread_barrierattr_t, + count: c_uint, + ) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_barrier_wait(barrier: *mut crate::pthread_barrier_t) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_barrierattr_destroy(attr: *mut crate::pthread_barrierattr_t) -> c_int; + + #[cfg(any(target_os = "android", target_os = "linux"))] + pub fn pthread_barrierattr_getpshared( + attr: *const crate::pthread_barrierattr_t, + shared: *mut c_int, + ) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_barrierattr_init(attr: *mut crate::pthread_barrierattr_t) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_barrierattr_setpshared( + attr: *mut crate::pthread_barrierattr_t, + shared: c_int, + ) -> c_int; + + #[cfg(any(target_os = "l4re", all(target_os = "linux", not(target_env = "ohos"))))] + pub fn pthread_cancel(thread: crate::pthread_t) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "emscripten", + target_os = "linux", + target_os = "l4re", + ))] + pub fn pthread_condattr_getclock( + attr: *const crate::pthread_condattr_t, + clock_id: *mut crate::clockid_t, + ) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "l4re", + target_os = "linux", + target_vendor = "apple", + ))] + pub fn pthread_condattr_getpshared( + attr: *const crate::pthread_condattr_t, + pshared: *mut c_int, + ) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "emscripten", + target_os = "linux", + target_os = "l4re", + ))] + pub fn pthread_condattr_setclock( + attr: *mut crate::pthread_condattr_t, + clock_id: crate::clockid_t, + ) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "emscripten", + target_os = "linux", + target_os = "l4re", + target_vendor = "apple", + ))] + pub fn pthread_condattr_setpshared( + attr: *mut crate::pthread_condattr_t, + pshared: c_int, + ) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "emscripten", + target_os = "l4re", + target_os = "linux", + ))] + pub fn pthread_create( + native: *mut crate::pthread_t, + attr: *const crate::pthread_attr_t, + f: extern "C" fn(*mut c_void) -> *mut c_void, + value: *mut c_void, + ) -> c_int; + + #[cfg(any(target_os = "android", target_os = "linux"))] + pub fn pthread_getcpuclockid(thread: crate::pthread_t, clk_id: *mut crate::clockid_t) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "l4re", + target_os = "linux", + target_vendor = "apple", + ))] + pub fn pthread_getschedparam( + native: crate::pthread_t, + policy: *mut c_int, + param: *mut crate::sched_param, + ) -> c_int; + + // FIXME(reorg): In recent POSIX versions, this is a signal.h function and not required + // in pthread. + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_kill(thread: crate::pthread_t, sig: c_int) -> c_int; + + #[cfg(all(target_os = "linux", not(target_env = "ohos")))] + pub fn pthread_mutex_consistent(mutex: *mut crate::pthread_mutex_t) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + #[cfg_attr(gnu_time_bits64, link_name = "__pthread_mutex_timedlock64")] + pub fn pthread_mutex_timedlock( + lock: *mut crate::pthread_mutex_t, + abstime: *const crate::timespec, + ) -> c_int; + + #[cfg(target_os = "linux")] + pub fn pthread_mutexattr_getprotocol( + attr: *const crate::pthread_mutexattr_t, + protocol: *mut c_int, + ) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "l4re", + target_os = "linux", + target_vendor = "apple", + ))] + pub fn pthread_mutexattr_getpshared( + attr: *const crate::pthread_mutexattr_t, + pshared: *mut c_int, + ) -> c_int; + + #[cfg(all(target_os = "linux", not(target_env = "ohos")))] + pub fn pthread_mutexattr_getrobust( + attr: *const crate::pthread_mutexattr_t, + robustness: *mut c_int, + ) -> c_int; + + #[cfg(target_os = "linux")] + pub fn pthread_mutexattr_setprotocol( + attr: *mut crate::pthread_mutexattr_t, + protocol: c_int, + ) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "emscripten", + target_os = "linux", + target_os = "l4re", + target_vendor = "apple", + ))] + pub fn pthread_mutexattr_setpshared( + attr: *mut crate::pthread_mutexattr_t, + pshared: c_int, + ) -> c_int; + + #[cfg(all(target_os = "linux", not(target_env = "ohos")))] + pub fn pthread_mutexattr_setrobust( + attr: *mut crate::pthread_mutexattr_t, + robustness: c_int, + ) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "emscripten", + target_os = "linux", + target_os = "l4re", + target_vendor = "apple", + ))] + pub fn pthread_rwlockattr_getpshared( + attr: *const crate::pthread_rwlockattr_t, + val: *mut c_int, + ) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "emscripten", + target_os = "linux", + target_os = "l4re", + target_vendor = "apple", + ))] + pub fn pthread_rwlockattr_setpshared( + attr: *mut crate::pthread_rwlockattr_t, + val: c_int, + ) -> c_int; + + // FIXME(1.0): These shoul be combined to the version that takes an optional unsafe function. + #[cfg(any(target_os = "l4re", target_os = "linux"))] + pub fn pthread_once(control: *mut crate::pthread_once_t, routine: extern "C" fn()) -> c_int; + #[cfg(target_vendor = "apple")] + pub fn pthread_once( + once_control: *mut crate::pthread_once_t, + init_routine: Option, + ) -> c_int; + + #[cfg(any( + target_os = "android", + target_os = "l4re", + target_os = "linux", + target_vendor = "apple", + ))] + pub fn pthread_setschedparam( + native: crate::pthread_t, + policy: c_int, + param: *const crate::sched_param, + ) -> c_int; + + #[cfg(target_os = "linux")] + pub fn pthread_setschedprio(native: crate::pthread_t, priority: c_int) -> c_int; + + // FIXME(reorg): In recent POSIX versions, this is a signal.h function and not required + // in pthread. + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_sigmask( + how: c_int, + set: *const crate::sigset_t, + oldset: *mut crate::sigset_t, + ) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_spin_destroy(lock: *mut crate::pthread_spinlock_t) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_spin_init(lock: *mut crate::pthread_spinlock_t, pshared: c_int) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_spin_lock(lock: *mut crate::pthread_spinlock_t) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_spin_trylock(lock: *mut crate::pthread_spinlock_t) -> c_int; + + #[cfg(any(target_os = "android", target_os = "l4re", target_os = "linux"))] + pub fn pthread_spin_unlock(lock: *mut crate::pthread_spinlock_t) -> c_int; +} diff --git a/src/new/emscripten/mod.rs b/src/new/emscripten/mod.rs index fec0fe3bfdd43..f0765d3e06fff 100644 --- a/src/new/emscripten/mod.rs +++ b/src/new/emscripten/mod.rs @@ -2,4 +2,5 @@ //! //! * Headers: +pub(crate) mod pthread; pub(crate) mod unistd; diff --git a/src/new/emscripten/pthread.rs b/src/new/emscripten/pthread.rs new file mode 100644 index 0000000000000..21982b7979d43 --- /dev/null +++ b/src/new/emscripten/pthread.rs @@ -0,0 +1,14 @@ +//! Header: `pthread.h` + +pub use crate::new::common::linux_like::pthread::pthread_getattr_np; +pub use crate::new::common::posix::pthread::{ + pthread_attr_getstack, + pthread_attr_setstack, + pthread_condattr_getclock, + pthread_condattr_setclock, + pthread_condattr_setpshared, + pthread_create, + pthread_mutexattr_setpshared, + pthread_rwlockattr_getpshared, + pthread_rwlockattr_setpshared, +}; diff --git a/src/new/glibc/mod.rs b/src/new/glibc/mod.rs index 534aba86a493a..71d979b17ecc4 100644 --- a/src/new/glibc/mod.rs +++ b/src/new/glibc/mod.rs @@ -17,9 +17,15 @@ mod posix { /// /// mod sysdeps { + // FIXME(pthread): eventually all platforms should use this module + #[cfg(target_os = "linux")] + pub(crate) mod nptl; pub(crate) mod unix; } pub(crate) use posix::*; +// FIXME(pthread): eventually all platforms should use this module +#[cfg(target_os = "linux")] +pub(crate) use sysdeps::nptl::*; #[cfg(target_os = "linux")] pub(crate) use sysdeps::unix::linux::*; diff --git a/src/new/glibc/sysdeps/nptl/mod.rs b/src/new/glibc/sysdeps/nptl/mod.rs new file mode 100644 index 0000000000000..18e82e48b80a7 --- /dev/null +++ b/src/new/glibc/sysdeps/nptl/mod.rs @@ -0,0 +1,7 @@ +//! Source directory: `sysdeps/nptl/`o +//! +//! Native POSIX threading library. +//! +//! + +pub(crate) mod pthread; diff --git a/src/new/glibc/sysdeps/nptl/pthread.rs b/src/new/glibc/sysdeps/nptl/pthread.rs new file mode 100644 index 0000000000000..27b17285b53ba --- /dev/null +++ b/src/new/glibc/sysdeps/nptl/pthread.rs @@ -0,0 +1,59 @@ +//! Source header: `sysdeps/nptl/pthread.h` +//! +//! + +pub use crate::new::common::linux_like::pthread::{ + pthread_getaffinity_np, + pthread_getattr_np, + pthread_getname_np, + pthread_setaffinity_np, + pthread_setname_np, +}; +pub use crate::new::common::posix::pthread::{ + pthread_atfork, + pthread_attr_getguardsize, + pthread_attr_getinheritsched, + pthread_attr_getschedparam, + pthread_attr_getschedpolicy, + pthread_attr_getstack, + pthread_attr_setguardsize, + pthread_attr_setinheritsched, + pthread_attr_setschedparam, + pthread_attr_setschedpolicy, + pthread_attr_setstack, + pthread_barrier_destroy, + pthread_barrier_init, + pthread_barrier_wait, + pthread_barrierattr_destroy, + pthread_barrierattr_getpshared, + pthread_barrierattr_init, + pthread_barrierattr_setpshared, + pthread_cancel, + pthread_condattr_getclock, + pthread_condattr_getpshared, + pthread_condattr_setclock, + pthread_condattr_setpshared, + pthread_create, + pthread_getcpuclockid, + pthread_getschedparam, + pthread_kill, + pthread_mutex_consistent, + pthread_mutex_timedlock, + pthread_mutexattr_getprotocol, + pthread_mutexattr_getpshared, + pthread_mutexattr_getrobust, + pthread_mutexattr_setprotocol, + pthread_mutexattr_setpshared, + pthread_mutexattr_setrobust, + pthread_once, + pthread_rwlockattr_getpshared, + pthread_rwlockattr_setpshared, + pthread_setschedparam, + pthread_setschedprio, + pthread_sigmask, + pthread_spin_destroy, + pthread_spin_init, + pthread_spin_lock, + pthread_spin_trylock, + pthread_spin_unlock, +}; diff --git a/src/new/linux_uapi/linux/can.rs b/src/new/linux_uapi/linux/can.rs index 108a90b1a92c6..8019124749c1e 100644 --- a/src/new/linux_uapi/linux/can.rs +++ b/src/new/linux_uapi/linux/can.rs @@ -41,7 +41,7 @@ s! { pub can_id: canid_t, // FIXME(1.0): this field was renamed to `len` in Linux 5.11 pub can_dlc: u8, - __pad: u8, + __pad: Padding, __res0: u8, pub len8_dlc: u8, pub data: [u8; CAN_MAX_DLEN], diff --git a/src/new/linux_uapi/linux/can/bcm.rs b/src/new/linux_uapi/linux/can/bcm.rs index 10f67d2db04e9..853f85f040880 100644 --- a/src/new/linux_uapi/linux/can/bcm.rs +++ b/src/new/linux_uapi/linux/can/bcm.rs @@ -23,18 +23,18 @@ s! { c_enum! { #[repr(u32)] pub enum #anon { - TX_SETUP = 1, - TX_DELETE, - TX_READ, - TX_SEND, - RX_SETUP, - RX_DELETE, - RX_READ, - TX_STATUS, - TX_EXPIRED, - RX_STATUS, - RX_TIMEOUT, - RX_CHANGED, + pub TX_SETUP = 1, + pub TX_DELETE, + pub TX_READ, + pub TX_SEND, + pub RX_SETUP, + pub RX_DELETE, + pub RX_READ, + pub TX_STATUS, + pub TX_EXPIRED, + pub RX_STATUS, + pub RX_TIMEOUT, + pub RX_CHANGED, } } diff --git a/src/new/mod.rs b/src/new/mod.rs index 38a0759afb65d..dd451bb5286bd 100644 --- a/src/new/mod.rs +++ b/src/new/mod.rs @@ -48,10 +48,8 @@ cfg_if! { mod bionic_libc; pub(crate) use bionic_libc::*; } else if #[cfg(target_vendor = "apple")] { - mod apple_libc; - mod apple_xnu; - pub(crate) use apple_libc::*; - pub(crate) use apple_xnu::*; + mod apple; + pub(crate) use apple::*; } else if #[cfg(target_os = "cygwin")] { mod cygwin; pub(crate) use cygwin::*; @@ -181,6 +179,11 @@ cfg_if! { #[cfg(target_env = "gnu")] pub use net::route::*; } else if #[cfg(target_vendor = "apple")] { + pub use pthread::*; + pub use pthread_::introspection::*; + pub use pthread_::pthread_spis::*; + pub use pthread_::spawn::*; + pub use pthread_::stack_np::*; pub use signal::*; } else if #[cfg(target_os = "netbsd")] { pub use net::if_::*; @@ -203,5 +206,17 @@ cfg_if! { } } -#[cfg(target_family = "unix")] -pub use unistd::*; +// Per-family headers we export +cfg_if! { + if #[cfg(target_family = "unix")] { + // FIXME(pthread): eventually all platforms should use this module + #[cfg(any( + target_os = "android", + target_os = "emscripten", + target_os = "l4re", + target_os = "linux" + ))] + pub use pthread::*; + pub use unistd::*; + } +} diff --git a/src/new/musl/mod.rs b/src/new/musl/mod.rs index d6297a8d27dd8..9fd4d8e96100d 100644 --- a/src/new/musl/mod.rs +++ b/src/new/musl/mod.rs @@ -20,6 +20,8 @@ pub(crate) mod bits { } } +pub(crate) mod pthread; + /// Directory: `sys/` /// /// diff --git a/src/new/musl/pthread.rs b/src/new/musl/pthread.rs new file mode 100644 index 0000000000000..0d578bc9665dc --- /dev/null +++ b/src/new/musl/pthread.rs @@ -0,0 +1,62 @@ +//! Header: `pthread.h` +//! +//! + +pub use crate::new::common::linux_like::pthread::{ + pthread_getaffinity_np, + pthread_getattr_np, + pthread_getname_np, + pthread_setaffinity_np, + pthread_setname_np, +}; +pub use crate::new::common::posix::pthread::{ + pthread_atfork, + pthread_attr_getguardsize, + pthread_attr_getinheritsched, + pthread_attr_getschedparam, + pthread_attr_getschedpolicy, + pthread_attr_getstack, + pthread_attr_setguardsize, + pthread_attr_setinheritsched, + pthread_attr_setschedparam, + pthread_attr_setschedpolicy, + pthread_attr_setstack, + pthread_barrier_destroy, + pthread_barrier_init, + pthread_barrier_wait, + pthread_barrierattr_destroy, + pthread_barrierattr_getpshared, + pthread_barrierattr_init, + pthread_barrierattr_setpshared, + pthread_condattr_getclock, + pthread_condattr_getpshared, + pthread_condattr_setclock, + pthread_condattr_setpshared, + pthread_create, + pthread_getcpuclockid, + pthread_getschedparam, + pthread_kill, + pthread_mutex_timedlock, + pthread_mutexattr_getprotocol, + pthread_mutexattr_getpshared, + pthread_mutexattr_setprotocol, + pthread_mutexattr_setpshared, + pthread_once, + pthread_rwlockattr_getpshared, + pthread_rwlockattr_setpshared, + pthread_setschedparam, + pthread_setschedprio, + pthread_sigmask, + pthread_spin_destroy, + pthread_spin_init, + pthread_spin_lock, + pthread_spin_trylock, + pthread_spin_unlock, +}; +#[cfg(not(target_env = "ohos"))] +pub use crate::new::common::posix::pthread::{ + pthread_cancel, + pthread_mutex_consistent, + pthread_mutexattr_getrobust, + pthread_mutexattr_setrobust, +}; diff --git a/src/new/uclibc/mod.rs b/src/new/uclibc/mod.rs index 4cb25389c91bf..6bf83ef2e1d38 100644 --- a/src/new/uclibc/mod.rs +++ b/src/new/uclibc/mod.rs @@ -3,4 +3,5 @@ //! * About: //! * Headers: (mirror) +pub(crate) mod pthread; pub(crate) mod unistd; diff --git a/src/new/uclibc/pthread.rs b/src/new/uclibc/pthread.rs new file mode 100644 index 0000000000000..bd7075d1ce2ef --- /dev/null +++ b/src/new/uclibc/pthread.rs @@ -0,0 +1,64 @@ +//! Header: `pthread.h` +//! +//! Note that The l4re port of uclibc doesn't yet support all `pthread_*` API that is +//! available upstream. + +pub use crate::new::common::linux_like::pthread::pthread_getattr_np; +#[cfg(not(target_os = "l4re"))] +pub use crate::new::common::linux_like::pthread::{ + pthread_getaffinity_np, + pthread_getname_np, + pthread_setaffinity_np, + pthread_setname_np, +}; +#[cfg(not(target_os = "l4re"))] +pub use crate::new::common::posix::pthread::{ + pthread_atfork, + pthread_barrierattr_getpshared, + pthread_getcpuclockid, + pthread_mutex_consistent, + pthread_mutexattr_getprotocol, + pthread_mutexattr_getrobust, + pthread_mutexattr_setprotocol, + pthread_mutexattr_setrobust, + pthread_setschedprio, +}; +pub use crate::new::common::posix::pthread::{ + pthread_attr_getguardsize, + pthread_attr_getinheritsched, + pthread_attr_getschedparam, + pthread_attr_getschedpolicy, + pthread_attr_getstack, + pthread_attr_setguardsize, + pthread_attr_setinheritsched, + pthread_attr_setschedparam, + pthread_attr_setschedpolicy, + pthread_attr_setstack, + pthread_barrier_destroy, + pthread_barrier_init, + pthread_barrier_wait, + pthread_barrierattr_destroy, + pthread_barrierattr_init, + pthread_barrierattr_setpshared, + pthread_cancel, + pthread_condattr_getclock, + pthread_condattr_getpshared, + pthread_condattr_setclock, + pthread_condattr_setpshared, + pthread_create, + pthread_getschedparam, + pthread_kill, + pthread_mutex_timedlock, + pthread_mutexattr_getpshared, + pthread_mutexattr_setpshared, + pthread_once, + pthread_rwlockattr_getpshared, + pthread_rwlockattr_setpshared, + pthread_setschedparam, + pthread_sigmask, + pthread_spin_destroy, + pthread_spin_init, + pthread_spin_lock, + pthread_spin_trylock, + pthread_spin_unlock, +}; diff --git a/src/types.rs b/src/types.rs index 7d49a425d59ea..4a7514564b22b 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1,5 +1,7 @@ //! Platform-agnostic support types. +#[cfg(feature = "extra_traits")] +use core::hash::Hash; use core::mem::MaybeUninit; use crate::prelude::*; @@ -30,6 +32,24 @@ impl fmt::Debug for Padding { } } +/// Do nothing when hashing to ignore the existence of padding fields. +#[cfg(feature = "extra_traits")] +impl Hash for Padding { + fn hash(&self, _state: &mut H) {} +} + +/// Padding fields are all equal, regardless of what is inside them, so they do not affect anything. +#[cfg(feature = "extra_traits")] +impl PartialEq for Padding { + fn eq(&self, _other: &Self) -> bool { + true + } +} + +/// Mark that `Padding` implements `Eq` so that it can be used in types that implement it. +#[cfg(feature = "extra_traits")] +impl Eq for Padding {} + /// The default repr type used for C style enums in Rust. #[cfg(target_env = "msvc")] #[allow(unused)] diff --git a/src/unix/aix/mod.rs b/src/unix/aix/mod.rs index 417b4a413300a..356d2a0c402da 100644 --- a/src/unix/aix/mod.rs +++ b/src/unix/aix/mod.rs @@ -250,9 +250,9 @@ s! { pub struct sockaddr_storage { pub __ss_len: c_uchar, pub ss_family: sa_family_t, - __ss_pad1: [c_char; 6], + __ss_pad1: Padding<[c_char; 6]>, __ss_align: crate::int64_t, - __ss_pad2: [c_char; 1265], + __ss_pad2: Padding<[c_char; 1265]>, } pub struct sockaddr_un { diff --git a/src/unix/bsd/apple/b32/mod.rs b/src/unix/bsd/apple/b32/mod.rs index f4234a110d827..ab0c94ef4c2c2 100644 --- a/src/unix/bsd/apple/b32/mod.rs +++ b/src/unix/bsd/apple/b32/mod.rs @@ -47,16 +47,6 @@ s! { pub struct malloc_zone_t { __private: [crate::uintptr_t; 18], // FIXME(macos): keeping private for now } - - pub struct pthread_attr_t { - __sig: c_long, - __opaque: [c_char; 36], - } - - pub struct pthread_once_t { - __sig: c_long, - __opaque: [c_char; crate::__PTHREAD_ONCE_SIZE__], - } } s_no_extra_traits! { @@ -70,13 +60,6 @@ s_no_extra_traits! { #[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; -pub const __PTHREAD_ONCE_SIZE__: usize = 4; -pub const __PTHREAD_RWLOCK_SIZE__: usize = 124; -pub const __PTHREAD_RWLOCKATTR_SIZE__: usize = 12; - pub const TIOCTIMESTAMP: c_ulong = 0x40087459; pub const TIOCDCDTIMESTAMP: c_ulong = 0x40087458; @@ -85,12 +68,6 @@ pub const BIOCSRTIMEOUT: c_ulong = 0x8008426d; pub const BIOCGRTIMEOUT: c_ulong = 0x4008426e; pub const BIOCSETFNR: c_ulong = 0x8008427e; -const _PTHREAD_ONCE_SIG_INIT: c_long = 0x30B1BCBA; -pub const PTHREAD_ONCE_INIT: crate::pthread_once_t = crate::pthread_once_t { - __sig: _PTHREAD_ONCE_SIG_INIT, - __opaque: [0; 4], -}; - extern "C" { pub fn exchangedata(path1: *const c_char, path2: *const c_char, options: c_ulong) -> c_int; } diff --git a/src/unix/bsd/apple/b64/mod.rs b/src/unix/bsd/apple/b64/mod.rs index 2fe60d177fefa..4ef2799e8c5fb 100644 --- a/src/unix/bsd/apple/b64/mod.rs +++ b/src/unix/bsd/apple/b64/mod.rs @@ -46,29 +46,12 @@ s! { pub bh_datalen: u32, pub bh_hdrlen: c_ushort, } - - pub struct pthread_attr_t { - __sig: c_long, - __opaque: [c_char; 56], - } - - pub struct pthread_once_t { - __sig: c_long, - __opaque: [c_char; __PTHREAD_ONCE_SIZE__], - } } #[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; -pub const __PTHREAD_ONCE_SIZE__: usize = 8; -pub const __PTHREAD_RWLOCK_SIZE__: usize = 192; -pub const __PTHREAD_RWLOCKATTR_SIZE__: usize = 16; - pub const TIOCTIMESTAMP: c_ulong = 0x40107459; pub const TIOCDCDTIMESTAMP: c_ulong = 0x40107458; @@ -77,12 +60,6 @@ pub const BIOCSRTIMEOUT: c_ulong = 0x8010426d; pub const BIOCGRTIMEOUT: c_ulong = 0x4010426e; pub const BIOCSETFNR: c_ulong = 0x8010427e; -const _PTHREAD_ONCE_SIG_INIT: c_long = 0x30B1BCBA; -pub const PTHREAD_ONCE_INIT: crate::pthread_once_t = crate::pthread_once_t { - __sig: _PTHREAD_ONCE_SIG_INIT, - __opaque: [0; 8], -}; - extern "C" { pub fn exchangedata(path1: *const c_char, path2: *const c_char, options: c_uint) -> c_int; } diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs index 3080a3c27901c..00c7e5f1754dc 100644 --- a/src/unix/bsd/apple/mod.rs +++ b/src/unix/bsd/apple/mod.rs @@ -18,7 +18,6 @@ pub type mode_t = u16; pub type nlink_t = u16; pub type blksize_t = i32; pub type rlim_t = u64; -pub type pthread_key_t = c_ulong; pub type sigset_t = u32; pub type clockid_t = c_uint; pub type fsblkcnt_t = c_uint; @@ -131,8 +130,6 @@ pub type thread_latency_qos_policy_t = *mut thread_latency_qos_policy; pub type thread_throughput_qos_policy_data_t = thread_throughput_qos_policy; pub type thread_throughput_qos_policy_t = *mut thread_throughput_qos_policy; -pub type pthread_introspection_hook_t = - extern "C" fn(event: c_uint, thread: crate::pthread_t, addr: *mut c_void, size: size_t); pub type pthread_jit_write_callback_t = Option c_int>; pub type os_clockid_t = u32; @@ -186,23 +183,6 @@ extern_ty! { pub enum timezone {} } -#[derive(Debug)] -#[repr(u32)] -pub enum qos_class_t { - QOS_CLASS_USER_INTERACTIVE = 0x21, - QOS_CLASS_USER_INITIATED = 0x19, - QOS_CLASS_DEFAULT = 0x15, - QOS_CLASS_UTILITY = 0x11, - QOS_CLASS_BACKGROUND = 0x09, - QOS_CLASS_UNSPECIFIED = 0x00, -} -impl Copy for qos_class_t {} -impl Clone for qos_class_t { - fn clone(&self) -> qos_class_t { - *self - } -} - #[derive(Debug)] #[repr(u32)] pub enum sysdir_search_path_directory_t { @@ -284,18 +264,18 @@ s! { pub struct glob_t { pub gl_pathc: size_t, - __unused1: c_int, + __unused1: Padding, pub gl_offs: size_t, - __unused2: c_int, + __unused2: Padding, pub gl_pathv: *mut *mut c_char, - __unused3: *mut c_void, + __unused3: Padding<*mut c_void>, - __unused4: *mut c_void, - __unused5: *mut c_void, - __unused6: *mut c_void, - __unused7: *mut c_void, - __unused8: *mut c_void, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, + __unused6: Padding<*mut c_void>, + __unused7: Padding<*mut c_void>, + __unused8: Padding<*mut c_void>, } pub struct addrinfo { @@ -340,21 +320,6 @@ s! { pub st_qspare: [i64; 2], } - pub struct pthread_mutexattr_t { - __sig: c_long, - __opaque: [u8; 8], - } - - pub struct pthread_condattr_t { - __sig: c_long, - __opaque: [u8; __PTHREAD_CONDATTR_SIZE__], - } - - pub struct pthread_rwlockattr_t { - __sig: c_long, - __opaque: [u8; __PTHREAD_RWLOCKATTR_SIZE__], - } - pub struct siginfo_t { pub si_signo: c_int, pub si_errno: c_int, @@ -365,7 +330,7 @@ s! { pub si_addr: *mut c_void, //Requires it to be union for tests //pub si_value: crate::sigval, - _pad: [usize; 9], + _pad: Padding<[usize; 9]>, } pub struct sigaction { @@ -901,12 +866,6 @@ s! { pub size: crate::vm_size_t, } - // sched.h - pub struct sched_param { - pub sched_priority: c_int, - __opaque: [c_char; 4], - } - pub struct vinfo_stat { pub vst_dev: u32, pub vst_mode: u16, @@ -1142,7 +1101,7 @@ s! { pub tcpi_state: u8, pub tcpi_snd_wscale: u8, pub tcpi_rcv_wscale: u8, - __pad1: u8, + __pad1: Padding, pub tcpi_options: u32, pub tcpi_flags: u32, pub tcpi_rto: u32, @@ -1170,7 +1129,7 @@ s! { pub tcpi_tfo_send_blackhole: u32, pub tcpi_tfo_recv_blackhole: u32, pub tcpi_tfo_onebyte_proxy: u32, - __pad2: u32, + __pad2: Padding, pub tcpi_txpackets: u64, pub tcpi_txbytes: u64, pub tcpi_txretransmitbytes: u64, @@ -1388,27 +1347,12 @@ s! { pub d_name: [c_char; 1024], } - pub struct pthread_rwlock_t { - __sig: c_long, - __opaque: [u8; __PTHREAD_RWLOCK_SIZE__], - } - - pub struct pthread_mutex_t { - __sig: c_long, - __opaque: [u8; __PTHREAD_MUTEX_SIZE__], - } - - pub struct pthread_cond_t { - __sig: c_long, - __opaque: [u8; __PTHREAD_COND_SIZE__], - } - pub struct sockaddr_storage { pub ss_len: u8, pub ss_family: crate::sa_family_t, - __ss_pad1: [u8; 6], + __ss_pad1: Padding<[u8; 6]>, __ss_align: i64, - __ss_pad2: [u8; 112], + __ss_pad2: Padding<[u8; 112]>, } pub struct utmpx { @@ -1426,7 +1370,7 @@ s! { pub sigev_notify: c_int, pub sigev_signo: c_int, pub sigev_value: crate::sigval, - __unused1: *mut c_void, //actually a function pointer + __unused1: Padding<*mut c_void>, //actually a function pointer pub sigev_notify_attributes: *mut crate::pthread_attr_t, } @@ -2399,11 +2343,6 @@ pub const AT_SYMLINK_NOFOLLOW: c_int = 0x0020; pub const AT_SYMLINK_FOLLOW: c_int = 0x0040; pub const AT_REMOVEDIR: c_int = 0x0080; -pub const PTHREAD_INTROSPECTION_THREAD_CREATE: c_uint = 1; -pub const PTHREAD_INTROSPECTION_THREAD_START: c_uint = 2; -pub const PTHREAD_INTROSPECTION_THREAD_TERMINATE: c_uint = 3; -pub const PTHREAD_INTROSPECTION_THREAD_DESTROY: c_uint = 4; - pub const TIOCMODG: c_ulong = 0x40047403; pub const TIOCMODS: c_ulong = 0x80047404; pub const TIOCM_LE: c_int = 0x1; @@ -2556,23 +2495,6 @@ pub const _SC_XOPEN_VERSION: c_int = 116; pub const _SC_XOPEN_XCU_VERSION: c_int = 121; pub const _SC_PHYS_PAGES: c_int = 200; -pub const PTHREAD_PROCESS_PRIVATE: c_int = 2; -pub const PTHREAD_PROCESS_SHARED: c_int = 1; -pub const PTHREAD_CREATE_JOINABLE: c_int = 1; -pub const PTHREAD_CREATE_DETACHED: c_int = 2; -pub const PTHREAD_INHERIT_SCHED: c_int = 1; -pub const PTHREAD_EXPLICIT_SCHED: c_int = 2; -pub const PTHREAD_CANCEL_ENABLE: c_int = 0x01; -pub const PTHREAD_CANCEL_DISABLE: c_int = 0x00; -pub const PTHREAD_CANCEL_DEFERRED: c_int = 0x02; -pub const PTHREAD_CANCEL_ASYNCHRONOUS: c_int = 0x00; -pub const PTHREAD_CANCELED: *mut c_void = 1 as *mut c_void; -pub const PTHREAD_SCOPE_SYSTEM: c_int = 1; -pub const PTHREAD_SCOPE_PROCESS: c_int = 2; -pub const PTHREAD_PRIO_NONE: c_int = 0; -pub const PTHREAD_PRIO_INHERIT: c_int = 1; -pub const PTHREAD_PRIO_PROTECT: c_int = 2; - #[cfg(target_arch = "aarch64")] pub const PTHREAD_STACK_MIN: size_t = 16384; #[cfg(not(target_arch = "aarch64"))] @@ -3199,26 +3121,6 @@ pub const _CS_DARWIN_USER_DIR: c_int = 65536; pub const _CS_DARWIN_USER_TEMP_DIR: c_int = 65537; pub const _CS_DARWIN_USER_CACHE_DIR: c_int = 65538; -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_MUTEX_SIG_init: c_long = 0x32AAABA7; -pub const _PTHREAD_COND_SIG_init: c_long = 0x3CB0B1BB; -pub const _PTHREAD_RWLOCK_SIG_init: c_long = 0x2DA8B3B4; -pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { - __sig: _PTHREAD_MUTEX_SIG_init, - __opaque: [0; __PTHREAD_MUTEX_SIZE__], -}; -pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t { - __sig: _PTHREAD_COND_SIG_init, - __opaque: [0; __PTHREAD_COND_SIZE__], -}; -pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { - __sig: _PTHREAD_RWLOCK_SIG_init, - __opaque: [0; __PTHREAD_RWLOCK_SIZE__], -}; - pub const OS_UNFAIR_LOCK_INIT: os_unfair_lock = os_unfair_lock { _os_unfair_lock_opaque: 0, }; @@ -3240,10 +3142,6 @@ pub const FD_SETSIZE: usize = 1024; pub const ST_NOSUID: c_ulong = 2; -pub const SCHED_OTHER: c_int = 1; -pub const SCHED_FIFO: c_int = 4; -pub const SCHED_RR: c_int = 2; - pub const EVFILT_READ: i16 = -1; pub const EVFILT_WRITE: i16 = -2; pub const EVFILT_AIO: i16 = -3; @@ -4510,22 +4408,10 @@ extern "C" { #[deprecated(since = "0.2.55", note = "Use the `mach2` crate instead")] pub fn mach_thread_self() -> mach_port_t; pub fn pthread_cond_timedwait_relative_np( - cond: *mut pthread_cond_t, - lock: *mut pthread_mutex_t, + cond: *mut crate::pthread_cond_t, + lock: *mut crate::pthread_mutex_t, timeout: *const crate::timespec, ) -> c_int; - pub fn pthread_once( - once_control: *mut crate::pthread_once_t, - init_routine: Option, - ) -> c_int; - pub fn pthread_attr_getinheritsched( - attr: *const crate::pthread_attr_t, - inheritsched: *mut c_int, - ) -> c_int; - pub fn pthread_attr_getschedpolicy( - attr: *const crate::pthread_attr_t, - policy: *mut c_int, - ) -> c_int; pub fn pthread_attr_getscope( attr: *const crate::pthread_attr_t, contentionscope: *mut c_int, @@ -4538,11 +4424,6 @@ extern "C" { attr: *const crate::pthread_attr_t, detachstate: *mut c_int, ) -> c_int; - pub fn pthread_attr_setinheritsched( - attr: *mut crate::pthread_attr_t, - inheritsched: c_int, - ) -> c_int; - pub fn pthread_attr_setschedpolicy(attr: *mut crate::pthread_attr_t, policy: c_int) -> c_int; pub fn pthread_attr_setscope(attr: *mut crate::pthread_attr_t, contentionscope: c_int) -> c_int; pub fn pthread_attr_setstackaddr( @@ -4553,83 +4434,11 @@ extern "C" { pub fn pthread_getname_np(thread: crate::pthread_t, name: *mut c_char, len: size_t) -> c_int; pub fn pthread_mach_thread_np(thread: crate::pthread_t) -> crate::mach_port_t; pub fn pthread_from_mach_thread_np(port: crate::mach_port_t) -> crate::pthread_t; - pub fn pthread_create_from_mach_thread( - thread: *mut crate::pthread_t, - attr: *const crate::pthread_attr_t, - f: extern "C" fn(*mut c_void) -> *mut c_void, - value: *mut c_void, - ) -> c_int; - pub fn pthread_stack_frame_decode_np( - frame_addr: crate::uintptr_t, - return_addr: *mut crate::uintptr_t, - ) -> crate::uintptr_t; pub fn pthread_get_stackaddr_np(thread: crate::pthread_t) -> *mut c_void; pub fn pthread_get_stacksize_np(thread: crate::pthread_t) -> size_t; - pub fn pthread_condattr_setpshared(attr: *mut pthread_condattr_t, pshared: c_int) -> c_int; - pub fn pthread_condattr_getpshared( - attr: *const pthread_condattr_t, - pshared: *mut c_int, - ) -> c_int; pub fn pthread_main_np() -> c_int; - pub fn pthread_mutexattr_setpshared(attr: *mut pthread_mutexattr_t, pshared: c_int) -> c_int; - pub fn pthread_mutexattr_getpshared( - attr: *const pthread_mutexattr_t, - pshared: *mut c_int, - ) -> c_int; - pub fn pthread_rwlockattr_getpshared( - attr: *const pthread_rwlockattr_t, - val: *mut c_int, - ) -> c_int; - pub fn pthread_rwlockattr_setpshared(attr: *mut pthread_rwlockattr_t, val: c_int) -> c_int; pub fn pthread_threadid_np(thread: crate::pthread_t, thread_id: *mut u64) -> c_int; - pub fn pthread_attr_set_qos_class_np( - attr: *mut pthread_attr_t, - class: qos_class_t, - priority: c_int, - ) -> c_int; - pub fn pthread_attr_get_qos_class_np( - attr: *mut pthread_attr_t, - class: *mut qos_class_t, - priority: *mut c_int, - ) -> c_int; - pub fn pthread_set_qos_class_self_np(class: qos_class_t, priority: c_int) -> c_int; - pub fn pthread_get_qos_class_np( - thread: crate::pthread_t, - class: *mut qos_class_t, - priority: *mut c_int, - ) -> c_int; - pub fn pthread_attr_getschedparam( - attr: *const crate::pthread_attr_t, - param: *mut sched_param, - ) -> c_int; - pub fn pthread_attr_setschedparam( - attr: *mut crate::pthread_attr_t, - param: *const sched_param, - ) -> c_int; - pub fn pthread_getschedparam( - thread: crate::pthread_t, - policy: *mut c_int, - param: *mut sched_param, - ) -> c_int; - pub fn pthread_setschedparam( - thread: crate::pthread_t, - policy: c_int, - param: *const sched_param, - ) -> c_int; - // Available from Big Sur - pub fn pthread_introspection_hook_install( - hook: crate::pthread_introspection_hook_t, - ) -> crate::pthread_introspection_hook_t; - pub fn pthread_introspection_setspecific_np( - thread: crate::pthread_t, - key: crate::pthread_key_t, - value: *const c_void, - ) -> c_int; - pub fn pthread_introspection_getspecific_np( - thread: crate::pthread_t, - key: crate::pthread_key_t, - ) -> *mut c_void; pub fn pthread_jit_write_protect_np(enabled: c_int); pub fn pthread_jit_write_protect_supported_np() -> c_int; // An array of pthread_jit_write_with_callback_np must declare @@ -4948,14 +4757,6 @@ extern "C" { pref: *mut crate::cpu_type_t, ocount: *mut size_t, ) -> c_int; - pub fn posix_spawnattr_set_qos_class_np( - attr: *mut posix_spawnattr_t, - qos_class: crate::qos_class_t, - ) -> c_int; - pub fn posix_spawnattr_get_qos_class_np( - attr: *const posix_spawnattr_t, - qos_class: *mut crate::qos_class_t, - ) -> c_int; pub fn posix_spawn_file_actions_init(actions: *mut posix_spawn_file_actions_t) -> c_int; pub fn posix_spawn_file_actions_destroy(actions: *mut posix_spawn_file_actions_t) -> c_int; diff --git a/src/unix/bsd/freebsdlike/dragonfly/mod.rs b/src/unix/bsd/freebsdlike/dragonfly/mod.rs index 7596fe4fb0bc8..5c1aa9d1774be 100644 --- a/src/unix/bsd/freebsdlike/dragonfly/mod.rs +++ b/src/unix/bsd/freebsdlike/dragonfly/mod.rs @@ -438,8 +438,8 @@ s! { pub d_fileno: crate::ino_t, pub d_namlen: u16, pub d_type: u8, - __unused1: u8, - __unused2: u32, + __unused1: Padding, + __unused2: Padding, pub d_name: [c_char; 256], } @@ -472,13 +472,13 @@ s! { 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, + __unused1: Padding, pub sigev_signo: c_int, //actually a union // pad the union #[cfg(target_pointer_width = "64")] - __unused2: c_int, + __unused2: Padding, pub sigev_value: crate::sigval, - __unused3: *mut c_void, //actually a function pointer + __unused3: Padding<*mut c_void>, //actually a function pointer } pub struct mcontext_t { @@ -511,9 +511,9 @@ s! { pub mc_len: c_uint, pub mc_fpformat: c_uint, pub mc_ownedfp: c_uint, - __reserved: c_uint, - __unused: [c_uint; 8], - pub mc_fpregs: [[c_uint; 8]; 32], + __reserved: Padding, + __unused: Padding<[c_uint; 8]>, + pub mc_fpregs: [c_uint; 256], } // FIXME(1.0): This should not implement `PartialEq` @@ -525,7 +525,7 @@ s! { pub uc_stack: stack_t, pub uc_cofunc: Option, pub uc_arg: *mut c_void, - __pad: [c_int; 4], + __pad: Padding<[c_int; 4]>, } } diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs index 8a8f6b4f10126..cd0c3e071012f 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd11/b32.rs @@ -24,6 +24,6 @@ s! { pub st_lspare: i32, pub st_birthtime: crate::time_t, pub st_birthtime_nsec: c_long, - __unused: [u8; 8], + __unused: Padding<[u8; 8]>, } } diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs index 41b9e32c039b0..bbce4af5e3eef 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs @@ -260,9 +260,9 @@ s! { pub d_off: off_t, pub d_reclen: u16, pub d_type: u8, - d_pad0: u8, + d_pad0: Padding, pub d_namlen: u16, - d_pad1: u16, + d_pad1: Padding, pub d_name: [c_char; 256], } diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs index aea817bbd4f17..2f7dc72342898 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs @@ -273,9 +273,9 @@ s! { pub d_off: off_t, pub d_reclen: u16, pub d_type: u8, - d_pad0: u8, + d_pad0: Padding, pub d_namlen: u16, - d_pad1: u16, + d_pad1: Padding, pub d_name: [c_char; 256], } diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs index 89b435895a5e3..c5c262ab68d32 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs @@ -275,9 +275,9 @@ s! { pub d_off: off_t, pub d_reclen: u16, pub d_type: u8, - d_pad0: u8, + d_pad0: Padding, pub d_namlen: u16, - d_pad1: u16, + d_pad1: Padding, pub d_name: [c_char; 256], } diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs index 59a4344779d10..4031a078b995d 100644 --- a/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/freebsd15/mod.rs @@ -277,9 +277,9 @@ s! { pub d_off: off_t, pub d_reclen: u16, pub d_type: u8, - d_pad0: u8, + d_pad0: Padding, pub d_namlen: u16, - d_pad1: u16, + d_pad1: Padding, pub d_name: [c_char; 256], } diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs index a040efddbf72d..c75e175b460a8 100644 --- a/src/unix/bsd/freebsdlike/freebsd/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs @@ -320,8 +320,8 @@ s! { pub struct msqid_ds { pub msg_perm: crate::ipc_perm, - __unused1: *mut c_void, - __unused2: *mut c_void, + __unused1: Padding<*mut c_void>, + __unused2: Padding<*mut c_void>, pub msg_cbytes: crate::msglen_t, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, @@ -1119,7 +1119,7 @@ s! { pub struct shm_largepage_conf { pub psind: c_int, pub alloc_policy: c_int, - __pad: [c_int; 10], + __pad: Padding<[c_int; 10]>, } pub struct memory_type { @@ -1454,7 +1454,7 @@ s! { pub mq_maxmsg: c_long, pub mq_msgsize: c_long, pub mq_curmsgs: c_long, - __reserved: [c_long; 4], + __reserved: Padding<[c_long; 4]>, } pub struct ptsstat { @@ -1590,7 +1590,7 @@ s! { pub struct sctp_error_invalid_stream { pub cause: sctp_error_cause, pub stream_id: u16, - __reserved: u16, + __reserved: Padding, } #[repr(packed)] @@ -1640,11 +1640,11 @@ s! { pub kf_fd: c_int, pub kf_ref_count: c_int, pub kf_flags: c_int, - _kf_pad0: c_int, + _kf_pad0: Padding, pub kf_offset: i64, _priv: [u8; 304], // FIXME(freebsd): this is really a giant union pub kf_status: u16, - _kf_pad1: u16, + _kf_pad1: Padding, _kf_ispare0: c_int, pub kf_cap_rights: crate::cap_rights_t, _kf_cap_spare: u64, @@ -4795,7 +4795,7 @@ extern "C" { pub fn memfd_create(name: *const c_char, flags: c_uint) -> c_int; pub fn setaudit(auditinfo: *const auditinfo_t) -> c_int; - pub fn eventfd(init: c_uint, flags: c_int) -> c_int; + pub fn eventfd(initval: c_uint, flags: c_int) -> c_int; pub fn eventfd_read(fd: c_int, value: *mut eventfd_t) -> c_int; pub fn eventfd_write(fd: c_int, value: eventfd_t) -> c_int; diff --git a/src/unix/bsd/freebsdlike/mod.rs b/src/unix/bsd/freebsdlike/mod.rs index a8653d702a046..4dc4e4a20207e 100644 --- a/src/unix/bsd/freebsdlike/mod.rs +++ b/src/unix/bsd/freebsdlike/mod.rs @@ -113,12 +113,12 @@ s! { pub gl_offs: size_t, pub gl_flags: c_int, pub gl_pathv: *mut *mut c_char, - __unused3: *mut c_void, - __unused4: *mut c_void, - __unused5: *mut c_void, - __unused6: *mut c_void, - __unused7: *mut c_void, - __unused8: *mut c_void, + __unused3: Padding<*mut c_void>, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, + __unused6: Padding<*mut c_void>, + __unused7: Padding<*mut c_void>, + __unused8: Padding<*mut c_void>, } pub struct addrinfo { @@ -145,8 +145,8 @@ s! { pub si_status: c_int, pub si_addr: *mut c_void, pub si_value: crate::sigval, - _pad1: c_long, - _pad2: [c_int; 7], + _pad1: Padding, + _pad2: Padding<[c_int; 7]>, } pub struct sigaction { @@ -385,9 +385,9 @@ s! { pub struct sockaddr_storage { pub ss_len: u8, pub ss_family: crate::sa_family_t, - __ss_pad1: [u8; 6], + __ss_pad1: Padding<[u8; 6]>, __ss_align: i64, - __ss_pad2: [u8; 112], + __ss_pad2: Padding<[u8; 112]>, } } diff --git a/src/unix/bsd/netbsdlike/netbsd/mod.rs b/src/unix/bsd/netbsdlike/netbsd/mod.rs index c21e0a21699a0..a3c286875c092 100644 --- a/src/unix/bsd/netbsdlike/netbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/netbsd/mod.rs @@ -7,6 +7,7 @@ use crate::{ }; pub type blksize_t = i32; +pub type eventfd_t = u64; pub type fsblkcnt_t = u64; pub type fsfilcnt_t = u64; pub type idtype_t = c_int; @@ -79,7 +80,7 @@ impl siginfo_t { _si_signo: c_int, _si_errno: c_int, _si_code: c_int, - __pad1: c_int, + __pad1: Padding, _pid: crate::pid_t, } (*(self as *const siginfo_t as *const siginfo_timer))._pid @@ -91,7 +92,7 @@ impl siginfo_t { _si_signo: c_int, _si_errno: c_int, _si_code: c_int, - __pad1: c_int, + __pad1: Padding, _pid: crate::pid_t, _uid: crate::uid_t, } @@ -104,7 +105,7 @@ impl siginfo_t { _si_signo: c_int, _si_errno: c_int, _si_code: c_int, - __pad1: c_int, + __pad1: Padding, _pid: crate::pid_t, _uid: crate::uid_t, value: crate::sigval, @@ -118,7 +119,7 @@ impl siginfo_t { _si_signo: c_int, _si_errno: c_int, _si_code: c_int, - __pad1: c_int, + __pad1: Padding, _pid: crate::pid_t, _uid: crate::uid_t, _value: crate::sigval, @@ -151,13 +152,13 @@ s! { pub gl_flags: c_int, pub gl_pathv: *mut *mut c_char, - __unused3: *mut c_void, + __unused3: Padding<*mut c_void>, - __unused4: *mut c_void, - __unused5: *mut c_void, - __unused6: *mut c_void, - __unused7: *mut c_void, - __unused8: *mut c_void, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, + __unused6: Padding<*mut c_void>, + __unused7: Padding<*mut c_void>, + __unused8: Padding<*mut c_void>, } pub struct mq_attr { @@ -210,9 +211,9 @@ s! { pub si_signo: c_int, pub si_code: c_int, pub si_errno: c_int, - __pad1: c_int, + __pad1: Padding, pub si_addr: *mut c_void, - __pad2: [u64; 13], + __pad2: Padding<[u64; 13]>, } pub struct pthread_attr_t { @@ -556,8 +557,8 @@ s! { pub l_priority: u8, pub l_usrpri: u8, pub l_stat: i8, - l_pad1: i8, - l_pad2: i32, + l_pad1: Padding, + l_pad2: Padding, pub l_wmesg: [c_char; KI_WMESGLEN as usize], pub l_wchan: u64, pub l_cpuid: u64, @@ -737,16 +738,16 @@ s! { pub struct sockaddr_storage { pub ss_len: u8, pub ss_family: crate::sa_family_t, - __ss_pad1: [u8; 6], - __ss_pad2: i64, - __ss_pad3: [u8; 112], + __ss_pad1: Padding<[u8; 6]>, + __ss_pad2: Padding, + __ss_pad3: Padding<[u8; 112]>, } pub struct sigevent { pub sigev_notify: c_int, pub sigev_signo: c_int, pub sigev_value: crate::sigval, - __unused1: *mut c_void, //actually a function pointer + __unused1: Padding<*mut c_void>, //actually a function pointer pub sigev_notify_attributes: *mut c_void, } } @@ -1743,6 +1744,11 @@ pub const RTA_TAG: c_int = 0x100; pub const RTAX_TAG: c_int = 8; pub const RTAX_MAX: c_int = 9; +// For eventfd +pub const EFD_SEMAPHORE: c_int = crate::O_RDWR; +pub const EFD_NONBLOCK: c_int = crate::O_NONBLOCK; +pub const EFD_CLOEXEC: c_int = crate::O_CLOEXEC; + // sys/timerfd.h pub const TFD_CLOEXEC: i32 = crate::O_CLOEXEC; pub const TFD_NONBLOCK: i32 = crate::O_NONBLOCK; @@ -2198,6 +2204,10 @@ extern "C" { pub fn getmntinfo(mntbufp: *mut *mut crate::statvfs, flags: c_int) -> c_int; pub fn getvfsstat(buf: *mut crate::statvfs, bufsize: size_t, flags: c_int) -> c_int; + pub fn eventfd(val: c_uint, flags: c_int) -> c_int; + pub fn eventfd_read(efd: c_int, valp: *mut eventfd_t) -> c_int; + pub fn eventfd_write(efd: c_int, val: eventfd_t) -> c_int; + // Added in `NetBSD` 10.0 pub fn timerfd_create(clockid: crate::clockid_t, flags: c_int) -> c_int; pub fn timerfd_gettime(fd: c_int, curr_value: *mut crate::itimerspec) -> c_int; diff --git a/src/unix/bsd/netbsdlike/openbsd/mod.rs b/src/unix/bsd/netbsdlike/openbsd/mod.rs index e519e8dd95f13..3249fd526a745 100644 --- a/src/unix/bsd/netbsdlike/openbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/openbsd/mod.rs @@ -75,13 +75,13 @@ s! { pub gl_offs: size_t, pub gl_flags: c_int, pub gl_pathv: *mut *mut c_char, - __unused1: *mut c_void, - __unused2: *mut c_void, - __unused3: *mut c_void, - __unused4: *mut c_void, - __unused5: *mut c_void, - __unused6: *mut c_void, - __unused7: *mut c_void, + __unused1: Padding<*mut c_void>, + __unused2: Padding<*mut c_void>, + __unused3: Padding<*mut c_void>, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, + __unused6: Padding<*mut c_void>, + __unused7: Padding<*mut c_void>, } pub struct lconv { @@ -733,7 +733,7 @@ impl siginfo_t { _si_signo: c_int, _si_code: c_int, _si_errno: c_int, - _pad: [c_int; SI_PAD], + _pad: Padding<[c_int; SI_PAD]>, _pid: crate::pid_t, } (*(self as *const siginfo_t).cast::())._pid @@ -745,7 +745,7 @@ impl siginfo_t { _si_signo: c_int, _si_code: c_int, _si_errno: c_int, - _pad: [c_int; SI_PAD], + _pad: Padding<[c_int; SI_PAD]>, _pid: crate::pid_t, _uid: crate::uid_t, } @@ -758,7 +758,7 @@ impl siginfo_t { _si_signo: c_int, _si_code: c_int, _si_errno: c_int, - _pad: [c_int; SI_PAD], + _pad: Padding<[c_int; SI_PAD]>, _pid: crate::pid_t, _uid: crate::uid_t, value: crate::sigval, diff --git a/src/unix/cygwin/mod.rs b/src/unix/cygwin/mod.rs index 6dee1217953cc..94c156c8f41ce 100644 --- a/src/unix/cygwin/mod.rs +++ b/src/unix/cygwin/mod.rs @@ -367,9 +367,9 @@ s! { pub struct sockaddr_storage { pub ss_family: sa_family_t, - __ss_pad1: [c_char; 6], + __ss_pad1: Padding<[c_char; 6]>, __ss_align: i64, - __ss_pad2: [c_char; 112], + __ss_pad2: Padding<[c_char; 112]>, } pub struct stat { @@ -461,7 +461,7 @@ s! { pub si_pid: pid_t, pub si_uid: uid_t, pub si_errno: c_int, - __pad: [u32; 32], + __pad: Padding<[u32; 32]>, } pub struct dirent { @@ -491,7 +491,7 @@ s_no_extra_traits! { pub ifru_mtu: c_int, pub ifru_ifindex: c_int, pub ifru_data: *mut c_char, - __ifru_pad: [c_char; 28], + __ifru_pad: Padding<[c_char; 28]>, } pub struct ifreq { @@ -509,6 +509,18 @@ s_no_extra_traits! { pub ifc_len: c_int, pub ifc_ifcu: __c_anonymous_ifc_ifcu, } + + pub struct utmpx { + pub ut_type: c_short, + pub ut_pid: pid_t, + pub ut_line: [c_char; UT_LINESIZE], + pub ut_id: [c_char; UT_IDLEN], + pub ut_time: time_t, + pub ut_user: [c_char; UT_NAMESIZE], + pub ut_host: [c_char; UT_HOSTSIZE], + pub ut_addr: c_long, + pub ut_tv: timeval, + } } impl siginfo_t { @@ -889,6 +901,8 @@ pub const PATH_MAX: c_int = 4096; pub const PIPE_BUF: usize = 4096; pub const NGROUPS_MAX: c_int = 1024; +pub const FILENAME_MAX: c_int = 4096; + pub const FORK_RELOAD: c_int = 1; pub const FORK_NO_RELOAD: c_int = 0; @@ -966,6 +980,19 @@ pub const EAI_SOCKTYPE: c_int = 10; pub const EAI_SYSTEM: c_int = 11; pub const EAI_OVERFLOW: c_int = 14; +pub const UT_LINESIZE: usize = 16; +pub const UT_NAMESIZE: usize = 16; +pub const UT_HOSTSIZE: usize = 256; +pub const UT_IDLEN: usize = 2; +pub const RUN_LVL: c_short = 1; +pub const BOOT_TIME: c_short = 2; +pub const NEW_TIME: c_short = 3; +pub const OLD_TIME: c_short = 4; +pub const INIT_PROCESS: c_short = 5; +pub const LOGIN_PROCESS: c_short = 6; +pub const USER_PROCESS: c_short = 7; +pub const DEAD_PROCESS: c_short = 8; + pub const POLLIN: c_short = 0x1; pub const POLLPRI: c_short = 0x2; pub const POLLOUT: c_short = 0x4; @@ -1617,6 +1644,8 @@ pub const _POSIX_VDISABLE: cc_t = 0; pub const GRND_NONBLOCK: c_uint = 0x1; pub const GRND_RANDOM: c_uint = 0x2; +pub const _IOFBF: c_int = 0; +pub const _IOLBF: c_int = 1; pub const _IONBF: c_int = 2; pub const BUFSIZ: c_int = 1024; @@ -2317,6 +2346,7 @@ extern "C" { winp: *const crate::winsize, ) -> c_int; + pub fn getgrgid(gid: crate::gid_t) -> *mut crate::group; pub fn getgrgid_r( gid: crate::gid_t, grp: *mut crate::group, @@ -2330,6 +2360,7 @@ extern "C" { groups: *mut crate::gid_t, ngroups: *mut c_int, ) -> c_int; + pub fn getgrnam(name: *const c_char) -> *mut crate::group; pub fn getgrnam_r( name: *const c_char, grp: *mut crate::group, @@ -2345,4 +2376,13 @@ extern "C" { pub fn posix_fadvise(fd: c_int, offset: off_t, len: off_t, advise: c_int) -> c_int; pub fn posix_fallocate(fd: c_int, offset: off_t, len: off_t) -> c_int; pub fn fallocate(fd: c_int, mode: c_int, offset: off_t, len: off_t) -> c_int; + + pub fn endutxent(); + pub fn getutxent() -> *mut utmpx; + pub fn getutxid(id: *const utmpx) -> *mut utmpx; + pub fn getutxline(line: *const utmpx) -> *mut utmpx; + pub fn pututxline(utmpx: *const utmpx) -> *mut utmpx; + pub fn setutxent(); + pub fn utmpxname(file: *const c_char) -> c_int; + pub fn updwtmpx(file: *const c_char, utmpx: *const utmpx); } diff --git a/src/unix/haiku/mod.rs b/src/unix/haiku/mod.rs index 41522dba929c4..6658968a885ee 100644 --- a/src/unix/haiku/mod.rs +++ b/src/unix/haiku/mod.rs @@ -276,17 +276,17 @@ s! { pub struct glob_t { pub gl_pathc: size_t, - __unused1: size_t, + __unused1: Padding, pub gl_offs: size_t, - __unused2: size_t, + __unused2: Padding, pub gl_pathv: *mut *mut c_char, - __unused3: *mut c_void, - __unused4: *mut c_void, - __unused5: *mut c_void, - __unused6: *mut c_void, - __unused7: *mut c_void, - __unused8: *mut c_void, + __unused3: Padding<*mut c_void>, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, + __unused6: Padding<*mut c_void>, + __unused7: Padding<*mut c_void>, + __unused8: Padding<*mut c_void>, } pub struct pthread_mutex_t { @@ -466,9 +466,9 @@ s! { pub struct sockaddr_storage { pub ss_len: u8, pub ss_family: sa_family_t, - __ss_pad1: [u8; 6], - __ss_pad2: u64, - __ss_pad3: [u8; 112], + __ss_pad1: Padding<[u8; 6]>, + __ss_pad2: Padding, + __ss_pad3: Padding<[u8; 112]>, } pub struct dirent { pub d_dev: dev_t, @@ -483,7 +483,7 @@ s! { pub sigev_notify: c_int, pub sigev_signo: c_int, pub sigev_value: crate::sigval, - __unused1: *mut c_void, // actually a function pointer + __unused1: Padding<*mut c_void>, // actually a function pointer pub sigev_notify_attributes: *mut crate::pthread_attr_t, } diff --git a/src/unix/haiku/native.rs b/src/unix/haiku/native.rs index 6c7f69acbd4ee..acf6b3486de79 100644 --- a/src/unix/haiku/native.rs +++ b/src/unix/haiku/native.rs @@ -37,200 +37,200 @@ pub type image_id = i32; c_enum! { // kernel/OS.h pub enum thread_state { - B_THREAD_RUNNING = 1, - B_THREAD_READY, - B_THREAD_RECEIVING, - B_THREAD_ASLEEP, - B_THREAD_SUSPENDED, - B_THREAD_WAITING, + pub B_THREAD_RUNNING = 1, + pub B_THREAD_READY, + pub B_THREAD_RECEIVING, + pub B_THREAD_ASLEEP, + pub B_THREAD_SUSPENDED, + pub B_THREAD_WAITING, } // kernel/image.h pub enum image_type { - B_APP_IMAGE = 1, - B_LIBRARY_IMAGE, - B_ADD_ON_IMAGE, - B_SYSTEM_IMAGE, + pub B_APP_IMAGE = 1, + pub B_LIBRARY_IMAGE, + pub B_ADD_ON_IMAGE, + pub B_SYSTEM_IMAGE, } // kernel/scheduler.h pub enum be_task_flags { - B_DEFAULT_MEDIA_PRIORITY = 0x000, - B_OFFLINE_PROCESSING = 0x001, - B_STATUS_RENDERING = 0x002, - B_USER_INPUT_HANDLING = 0x004, - B_LIVE_VIDEO_MANIPULATION = 0x008, - B_VIDEO_PLAYBACK = 0x010, - B_VIDEO_RECORDING = 0x020, - B_LIVE_AUDIO_MANIPULATION = 0x040, - B_AUDIO_PLAYBACK = 0x080, - B_AUDIO_RECORDING = 0x100, - B_LIVE_3D_RENDERING = 0x200, - B_NUMBER_CRUNCHING = 0x400, - B_MIDI_PROCESSING = 0x800, + pub B_DEFAULT_MEDIA_PRIORITY = 0x000, + pub B_OFFLINE_PROCESSING = 0x001, + pub B_STATUS_RENDERING = 0x002, + pub B_USER_INPUT_HANDLING = 0x004, + pub B_LIVE_VIDEO_MANIPULATION = 0x008, + pub B_VIDEO_PLAYBACK = 0x010, + pub B_VIDEO_RECORDING = 0x020, + pub B_LIVE_AUDIO_MANIPULATION = 0x040, + pub B_AUDIO_PLAYBACK = 0x080, + pub B_AUDIO_RECORDING = 0x100, + pub B_LIVE_3D_RENDERING = 0x200, + pub B_NUMBER_CRUNCHING = 0x400, + pub B_MIDI_PROCESSING = 0x800, } pub enum schduler_mode { - SCHEDULER_MODE_LOW_LATENCY, - SCHEDULER_MODE_POWER_SAVING, + pub SCHEDULER_MODE_LOW_LATENCY, + pub SCHEDULER_MODE_POWER_SAVING, } // FindDirectory.h pub enum path_base_directory { - B_FIND_PATH_INSTALLATION_LOCATION_DIRECTORY, - B_FIND_PATH_ADD_ONS_DIRECTORY, - B_FIND_PATH_APPS_DIRECTORY, - B_FIND_PATH_BIN_DIRECTORY, - B_FIND_PATH_BOOT_DIRECTORY, - B_FIND_PATH_CACHE_DIRECTORY, - B_FIND_PATH_DATA_DIRECTORY, - B_FIND_PATH_DEVELOP_DIRECTORY, - B_FIND_PATH_DEVELOP_LIB_DIRECTORY, - B_FIND_PATH_DOCUMENTATION_DIRECTORY, - B_FIND_PATH_ETC_DIRECTORY, - B_FIND_PATH_FONTS_DIRECTORY, - B_FIND_PATH_HEADERS_DIRECTORY, - B_FIND_PATH_LIB_DIRECTORY, - B_FIND_PATH_LOG_DIRECTORY, - B_FIND_PATH_MEDIA_NODES_DIRECTORY, - B_FIND_PATH_PACKAGES_DIRECTORY, - B_FIND_PATH_PREFERENCES_DIRECTORY, - B_FIND_PATH_SERVERS_DIRECTORY, - B_FIND_PATH_SETTINGS_DIRECTORY, - B_FIND_PATH_SOUNDS_DIRECTORY, - B_FIND_PATH_SPOOL_DIRECTORY, - B_FIND_PATH_TRANSLATORS_DIRECTORY, - B_FIND_PATH_VAR_DIRECTORY, - B_FIND_PATH_IMAGE_PATH = 1000, - B_FIND_PATH_PACKAGE_PATH, + pub B_FIND_PATH_INSTALLATION_LOCATION_DIRECTORY, + pub B_FIND_PATH_ADD_ONS_DIRECTORY, + pub B_FIND_PATH_APPS_DIRECTORY, + pub B_FIND_PATH_BIN_DIRECTORY, + pub B_FIND_PATH_BOOT_DIRECTORY, + pub B_FIND_PATH_CACHE_DIRECTORY, + pub B_FIND_PATH_DATA_DIRECTORY, + pub B_FIND_PATH_DEVELOP_DIRECTORY, + pub B_FIND_PATH_DEVELOP_LIB_DIRECTORY, + pub B_FIND_PATH_DOCUMENTATION_DIRECTORY, + pub B_FIND_PATH_ETC_DIRECTORY, + pub B_FIND_PATH_FONTS_DIRECTORY, + pub B_FIND_PATH_HEADERS_DIRECTORY, + pub B_FIND_PATH_LIB_DIRECTORY, + pub B_FIND_PATH_LOG_DIRECTORY, + pub B_FIND_PATH_MEDIA_NODES_DIRECTORY, + pub B_FIND_PATH_PACKAGES_DIRECTORY, + pub B_FIND_PATH_PREFERENCES_DIRECTORY, + pub B_FIND_PATH_SERVERS_DIRECTORY, + pub B_FIND_PATH_SETTINGS_DIRECTORY, + pub B_FIND_PATH_SOUNDS_DIRECTORY, + pub B_FIND_PATH_SPOOL_DIRECTORY, + pub B_FIND_PATH_TRANSLATORS_DIRECTORY, + pub B_FIND_PATH_VAR_DIRECTORY, + pub B_FIND_PATH_IMAGE_PATH = 1000, + pub B_FIND_PATH_PACKAGE_PATH, } pub enum directory_which { - B_DESKTOP_DIRECTORY = 0, - B_TRASH_DIRECTORY, - B_SYSTEM_DIRECTORY = 1000, - B_SYSTEM_ADDONS_DIRECTORY = 1002, - B_SYSTEM_BOOT_DIRECTORY, - B_SYSTEM_FONTS_DIRECTORY, - B_SYSTEM_LIB_DIRECTORY, - B_SYSTEM_SERVERS_DIRECTORY, - B_SYSTEM_APPS_DIRECTORY, - B_SYSTEM_BIN_DIRECTORY, - B_SYSTEM_DOCUMENTATION_DIRECTORY = 1010, - B_SYSTEM_PREFERENCES_DIRECTORY, - B_SYSTEM_TRANSLATORS_DIRECTORY, - B_SYSTEM_MEDIA_NODES_DIRECTORY, - B_SYSTEM_SOUNDS_DIRECTORY, - B_SYSTEM_DATA_DIRECTORY, - B_SYSTEM_DEVELOP_DIRECTORY, - B_SYSTEM_PACKAGES_DIRECTORY, - B_SYSTEM_HEADERS_DIRECTORY, - B_SYSTEM_ETC_DIRECTORY = 2008, - B_SYSTEM_SETTINGS_DIRECTORY = 2010, - B_SYSTEM_LOG_DIRECTORY = 2012, - B_SYSTEM_SPOOL_DIRECTORY, - B_SYSTEM_TEMP_DIRECTORY, - B_SYSTEM_VAR_DIRECTORY, - B_SYSTEM_CACHE_DIRECTORY = 2020, - B_SYSTEM_NONPACKAGED_DIRECTORY = 2023, - B_SYSTEM_NONPACKAGED_ADDONS_DIRECTORY, - B_SYSTEM_NONPACKAGED_TRANSLATORS_DIRECTORY, - B_SYSTEM_NONPACKAGED_MEDIA_NODES_DIRECTORY, - B_SYSTEM_NONPACKAGED_BIN_DIRECTORY, - B_SYSTEM_NONPACKAGED_DATA_DIRECTORY, - B_SYSTEM_NONPACKAGED_FONTS_DIRECTORY, - B_SYSTEM_NONPACKAGED_SOUNDS_DIRECTORY, - B_SYSTEM_NONPACKAGED_DOCUMENTATION_DIRECTORY, - B_SYSTEM_NONPACKAGED_LIB_DIRECTORY, - B_SYSTEM_NONPACKAGED_HEADERS_DIRECTORY, - B_SYSTEM_NONPACKAGED_DEVELOP_DIRECTORY, - B_USER_DIRECTORY = 3000, - B_USER_CONFIG_DIRECTORY, - B_USER_ADDONS_DIRECTORY, - B_USER_BOOT_DIRECTORY, - B_USER_FONTS_DIRECTORY, - B_USER_LIB_DIRECTORY, - B_USER_SETTINGS_DIRECTORY, - B_USER_DESKBAR_DIRECTORY, - B_USER_PRINTERS_DIRECTORY, - B_USER_TRANSLATORS_DIRECTORY, - B_USER_MEDIA_NODES_DIRECTORY, - B_USER_SOUNDS_DIRECTORY, - B_USER_DATA_DIRECTORY, - B_USER_CACHE_DIRECTORY, - B_USER_PACKAGES_DIRECTORY, - B_USER_HEADERS_DIRECTORY, - B_USER_NONPACKAGED_DIRECTORY, - B_USER_NONPACKAGED_ADDONS_DIRECTORY, - B_USER_NONPACKAGED_TRANSLATORS_DIRECTORY, - B_USER_NONPACKAGED_MEDIA_NODES_DIRECTORY, - B_USER_NONPACKAGED_BIN_DIRECTORY, - B_USER_NONPACKAGED_DATA_DIRECTORY, - B_USER_NONPACKAGED_FONTS_DIRECTORY, - B_USER_NONPACKAGED_SOUNDS_DIRECTORY, - B_USER_NONPACKAGED_DOCUMENTATION_DIRECTORY, - B_USER_NONPACKAGED_LIB_DIRECTORY, - B_USER_NONPACKAGED_HEADERS_DIRECTORY, - B_USER_NONPACKAGED_DEVELOP_DIRECTORY, - B_USER_DEVELOP_DIRECTORY, - B_USER_DOCUMENTATION_DIRECTORY, - B_USER_SERVERS_DIRECTORY, - B_USER_APPS_DIRECTORY, - B_USER_BIN_DIRECTORY, - B_USER_PREFERENCES_DIRECTORY, - B_USER_ETC_DIRECTORY, - B_USER_LOG_DIRECTORY, - B_USER_SPOOL_DIRECTORY, - B_USER_VAR_DIRECTORY, - B_APPS_DIRECTORY = 4000, - B_PREFERENCES_DIRECTORY, - B_UTILITIES_DIRECTORY, - B_PACKAGE_LINKS_DIRECTORY, + pub B_DESKTOP_DIRECTORY = 0, + pub B_TRASH_DIRECTORY, + pub B_SYSTEM_DIRECTORY = 1000, + pub B_SYSTEM_ADDONS_DIRECTORY = 1002, + pub B_SYSTEM_BOOT_DIRECTORY, + pub B_SYSTEM_FONTS_DIRECTORY, + pub B_SYSTEM_LIB_DIRECTORY, + pub B_SYSTEM_SERVERS_DIRECTORY, + pub B_SYSTEM_APPS_DIRECTORY, + pub B_SYSTEM_BIN_DIRECTORY, + pub B_SYSTEM_DOCUMENTATION_DIRECTORY = 1010, + pub B_SYSTEM_PREFERENCES_DIRECTORY, + pub B_SYSTEM_TRANSLATORS_DIRECTORY, + pub B_SYSTEM_MEDIA_NODES_DIRECTORY, + pub B_SYSTEM_SOUNDS_DIRECTORY, + pub B_SYSTEM_DATA_DIRECTORY, + pub B_SYSTEM_DEVELOP_DIRECTORY, + pub B_SYSTEM_PACKAGES_DIRECTORY, + pub B_SYSTEM_HEADERS_DIRECTORY, + pub B_SYSTEM_ETC_DIRECTORY = 2008, + pub B_SYSTEM_SETTINGS_DIRECTORY = 2010, + pub B_SYSTEM_LOG_DIRECTORY = 2012, + pub B_SYSTEM_SPOOL_DIRECTORY, + pub B_SYSTEM_TEMP_DIRECTORY, + pub B_SYSTEM_VAR_DIRECTORY, + pub B_SYSTEM_CACHE_DIRECTORY = 2020, + pub B_SYSTEM_NONPACKAGED_DIRECTORY = 2023, + pub B_SYSTEM_NONPACKAGED_ADDONS_DIRECTORY, + pub B_SYSTEM_NONPACKAGED_TRANSLATORS_DIRECTORY, + pub B_SYSTEM_NONPACKAGED_MEDIA_NODES_DIRECTORY, + pub B_SYSTEM_NONPACKAGED_BIN_DIRECTORY, + pub B_SYSTEM_NONPACKAGED_DATA_DIRECTORY, + pub B_SYSTEM_NONPACKAGED_FONTS_DIRECTORY, + pub B_SYSTEM_NONPACKAGED_SOUNDS_DIRECTORY, + pub B_SYSTEM_NONPACKAGED_DOCUMENTATION_DIRECTORY, + pub B_SYSTEM_NONPACKAGED_LIB_DIRECTORY, + pub B_SYSTEM_NONPACKAGED_HEADERS_DIRECTORY, + pub B_SYSTEM_NONPACKAGED_DEVELOP_DIRECTORY, + pub B_USER_DIRECTORY = 3000, + pub B_USER_CONFIG_DIRECTORY, + pub B_USER_ADDONS_DIRECTORY, + pub B_USER_BOOT_DIRECTORY, + pub B_USER_FONTS_DIRECTORY, + pub B_USER_LIB_DIRECTORY, + pub B_USER_SETTINGS_DIRECTORY, + pub B_USER_DESKBAR_DIRECTORY, + pub B_USER_PRINTERS_DIRECTORY, + pub B_USER_TRANSLATORS_DIRECTORY, + pub B_USER_MEDIA_NODES_DIRECTORY, + pub B_USER_SOUNDS_DIRECTORY, + pub B_USER_DATA_DIRECTORY, + pub B_USER_CACHE_DIRECTORY, + pub B_USER_PACKAGES_DIRECTORY, + pub B_USER_HEADERS_DIRECTORY, + pub B_USER_NONPACKAGED_DIRECTORY, + pub B_USER_NONPACKAGED_ADDONS_DIRECTORY, + pub B_USER_NONPACKAGED_TRANSLATORS_DIRECTORY, + pub B_USER_NONPACKAGED_MEDIA_NODES_DIRECTORY, + pub B_USER_NONPACKAGED_BIN_DIRECTORY, + pub B_USER_NONPACKAGED_DATA_DIRECTORY, + pub B_USER_NONPACKAGED_FONTS_DIRECTORY, + pub B_USER_NONPACKAGED_SOUNDS_DIRECTORY, + pub B_USER_NONPACKAGED_DOCUMENTATION_DIRECTORY, + pub B_USER_NONPACKAGED_LIB_DIRECTORY, + pub B_USER_NONPACKAGED_HEADERS_DIRECTORY, + pub B_USER_NONPACKAGED_DEVELOP_DIRECTORY, + pub B_USER_DEVELOP_DIRECTORY, + pub B_USER_DOCUMENTATION_DIRECTORY, + pub B_USER_SERVERS_DIRECTORY, + pub B_USER_APPS_DIRECTORY, + pub B_USER_BIN_DIRECTORY, + pub B_USER_PREFERENCES_DIRECTORY, + pub B_USER_ETC_DIRECTORY, + pub B_USER_LOG_DIRECTORY, + pub B_USER_SPOOL_DIRECTORY, + pub B_USER_VAR_DIRECTORY, + pub B_APPS_DIRECTORY = 4000, + pub B_PREFERENCES_DIRECTORY, + pub B_UTILITIES_DIRECTORY, + pub B_PACKAGE_LINKS_DIRECTORY, } // kernel/OS.h pub enum topology_level_type { - B_TOPOLOGY_UNKNOWN, - B_TOPOLOGY_ROOT, - B_TOPOLOGY_SMT, - B_TOPOLOGY_CORE, - B_TOPOLOGY_PACKAGE, + pub B_TOPOLOGY_UNKNOWN, + pub B_TOPOLOGY_ROOT, + pub B_TOPOLOGY_SMT, + pub B_TOPOLOGY_CORE, + pub B_TOPOLOGY_PACKAGE, } pub enum cpu_platform { - B_CPU_UNKNOWN, - B_CPU_x86, - B_CPU_x86_64, - B_CPU_PPC, - B_CPU_PPC_64, - B_CPU_M68K, - B_CPU_ARM, - B_CPU_ARM_64, - B_CPU_ALPHA, - B_CPU_MIPS, - B_CPU_SH, - B_CPU_SPARC, - B_CPU_RISC_V, + pub B_CPU_UNKNOWN, + pub B_CPU_x86, + pub B_CPU_x86_64, + pub B_CPU_PPC, + pub B_CPU_PPC_64, + pub B_CPU_M68K, + pub B_CPU_ARM, + pub B_CPU_ARM_64, + pub B_CPU_ALPHA, + pub B_CPU_MIPS, + pub B_CPU_SH, + pub B_CPU_SPARC, + pub B_CPU_RISC_V, } pub enum cpu_vendor { - B_CPU_VENDOR_UNKNOWN, - B_CPU_VENDOR_AMD, - B_CPU_VENDOR_CYRIX, - B_CPU_VENDOR_IDT, - B_CPU_VENDOR_INTEL, - B_CPU_VENDOR_NATIONAL_SEMICONDUCTOR, - B_CPU_VENDOR_RISE, - B_CPU_VENDOR_TRANSMETA, - B_CPU_VENDOR_VIA, - B_CPU_VENDOR_IBM, - B_CPU_VENDOR_MOTOROLA, - B_CPU_VENDOR_NEC, - B_CPU_VENDOR_HYGON, - B_CPU_VENDOR_SUN, - B_CPU_VENDOR_FUJITSU, + pub B_CPU_VENDOR_UNKNOWN, + pub B_CPU_VENDOR_AMD, + pub B_CPU_VENDOR_CYRIX, + pub B_CPU_VENDOR_IDT, + pub B_CPU_VENDOR_INTEL, + pub B_CPU_VENDOR_NATIONAL_SEMICONDUCTOR, + pub B_CPU_VENDOR_RISE, + pub B_CPU_VENDOR_TRANSMETA, + pub B_CPU_VENDOR_VIA, + pub B_CPU_VENDOR_IBM, + pub B_CPU_VENDOR_MOTOROLA, + pub B_CPU_VENDOR_NEC, + pub B_CPU_VENDOR_HYGON, + pub B_CPU_VENDOR_SUN, + pub B_CPU_VENDOR_FUJITSU, } } @@ -440,7 +440,7 @@ s! { } pub struct __c_anonymous_eax_3 { - __reserved: [u32; 2], + __reserved: Padding<[u32; 2]>, pub serial_number_high: u32, pub serial_number_low: u32, } diff --git a/src/unix/hurd/mod.rs b/src/unix/hurd/mod.rs index 7485074b91c1b..9b7811b460e1b 100644 --- a/src/unix/hurd/mod.rs +++ b/src/unix/hurd/mod.rs @@ -415,7 +415,7 @@ s! { pub sigev_value: crate::sigval, pub sigev_signo: c_int, pub sigev_notify: c_int, - __unused1: *mut c_void, //actually a function pointer + __unused1: Padding<*mut c_void>, //actually a function pointer pub sigev_notify_attributes: *mut pthread_attr_t, } @@ -495,7 +495,7 @@ s! { pub stx_uid: u32, pub stx_gid: u32, pub stx_mode: u16, - __statx_pad1: [u16; 1], + __statx_pad1: Padding<[u16; 1]>, pub stx_ino: u64, pub stx_size: u64, pub stx_blocks: u64, @@ -508,7 +508,7 @@ s! { pub stx_rdev_minor: u32, pub stx_dev_major: u32, pub stx_dev_minor: u32, - __statx_pad2: [u64; 14], + __statx_pad2: Padding<[u64; 14]>, } pub struct statx_timestamp { @@ -595,7 +595,7 @@ s! { __return_value: ssize_t, pub aio_offset: off_t, #[cfg(all(not(target_arch = "x86_64"), target_pointer_width = "32"))] - __unused1: [c_char; 4], + __unused1: Padding<[c_char; 4]>, __glibc_reserved: [c_char; 32], } @@ -921,11 +921,11 @@ s! { 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, + __unused1: Padding<*mut c_void>, + __unused2: Padding<*mut c_void>, + __unused3: Padding<*mut c_void>, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, } pub struct glob64_t { @@ -934,11 +934,11 @@ s! { 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, + __unused1: Padding<*mut c_void>, + __unused2: Padding<*mut c_void>, + __unused3: Padding<*mut c_void>, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, } pub struct regex_t { @@ -995,7 +995,7 @@ s! { __allocated: c_int, __used: c_int, __actions: *mut c_int, - __pad: [c_int; 16], + __pad: Padding<[c_int; 16]>, } pub struct posix_spawnattr_t { @@ -1005,7 +1005,7 @@ s! { __ss: crate::sigset_t, __sp: crate::sched_param, __policy: c_int, - __pad: [c_int; 16], + __pad: Padding<[c_int; 16]>, } pub struct regmatch_t { diff --git a/src/unix/linux_like/android/b32/arm.rs b/src/unix/linux_like/android/b32/arm.rs index 7fb2ff663bcac..1d2d34dfedc40 100644 --- a/src/unix/linux_like/android/b32/arm.rs +++ b/src/unix/linux_like/android/b32/arm.rs @@ -43,7 +43,7 @@ s! { pub uc_sigmask__c_anonymous_union: __c_anonymous_uc_sigmask, /* The kernel adds extra padding after uc_sigmask to match * glibc sigset_t on ARM. */ - __padding: [c_char; 120], + __padding: Padding<[c_char; 120]>, __align: [c_longlong; 0], uc_regspace: [c_ulong; 128], } diff --git a/src/unix/linux_like/android/b32/mod.rs b/src/unix/linux_like/android/b32/mod.rs index d02dbf92d7924..62c3c4c32a4b6 100644 --- a/src/unix/linux_like/android/b32/mod.rs +++ b/src/unix/linux_like/android/b32/mod.rs @@ -28,14 +28,14 @@ s! { pub struct stat { pub st_dev: c_ulonglong, - __pad0: [c_uchar; 4], + __pad0: Padding<[c_uchar; 4]>, __st_ino: crate::ino_t, pub st_mode: c_uint, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: c_ulonglong, - __pad3: [c_uchar; 4], + __pad3: Padding<[c_uchar; 4]>, pub st_size: c_longlong, pub st_blksize: crate::blksize_t, pub st_blocks: c_ulonglong, @@ -50,14 +50,14 @@ s! { pub struct stat64 { pub st_dev: c_ulonglong, - __pad0: [c_uchar; 4], + __pad0: Padding<[c_uchar; 4]>, __st_ino: crate::ino_t, pub st_mode: c_uint, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: c_ulonglong, - __pad3: [c_uchar; 4], + __pad3: Padding<[c_uchar; 4]>, pub st_size: c_longlong, pub st_blksize: crate::blksize_t, pub st_blocks: c_ulonglong, diff --git a/src/unix/linux_like/android/b64/aarch64/mod.rs b/src/unix/linux_like/android/b64/aarch64/mod.rs index 3c6131089ee89..7c7a08fdf334f 100644 --- a/src/unix/linux_like/android/b64/aarch64/mod.rs +++ b/src/unix/linux_like/android/b64/aarch64/mod.rs @@ -14,10 +14,10 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad1: c_ulong, + __pad1: Padding, pub st_size: off64_t, pub st_blksize: c_int, - __pad2: c_int, + __pad2: Padding, pub st_blocks: c_long, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -25,8 +25,8 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused4: c_uint, - __unused5: c_uint, + __unused4: Padding, + __unused5: Padding, } pub struct stat64 { @@ -37,10 +37,10 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad1: c_ulong, + __pad1: Padding, pub st_size: off64_t, pub st_blksize: c_int, - __pad2: c_int, + __pad2: Padding, pub st_blocks: c_long, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -48,8 +48,8 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused4: c_uint, - __unused5: c_uint, + __unused4: Padding, + __unused5: Padding, } pub struct user_regs_struct { @@ -74,7 +74,7 @@ s! { pub sp: c_ulonglong, pub pc: c_ulonglong, pub pstate: c_ulonglong, - __reserved: [u64; 512], + __reserved: Padding<[u64; 512]>, } pub struct user_fpsimd_struct { diff --git a/src/unix/linux_like/android/b64/mod.rs b/src/unix/linux_like/android/b64/mod.rs index 7d5baef752e44..05ec19d85ad5e 100644 --- a/src/unix/linux_like/android/b64/mod.rs +++ b/src/unix/linux_like/android/b64/mod.rs @@ -33,7 +33,7 @@ s! { pub guard_size: size_t, pub sched_policy: i32, pub sched_priority: i32, - __reserved: [c_char; 16], + __reserved: Padding<[c_char; 16]>, } pub struct passwd { diff --git a/src/unix/linux_like/android/b64/riscv64/mod.rs b/src/unix/linux_like/android/b64/riscv64/mod.rs index ca8c727164ad7..dded1292b393f 100644 --- a/src/unix/linux_like/android/b64/riscv64/mod.rs +++ b/src/unix/linux_like/android/b64/riscv64/mod.rs @@ -15,10 +15,10 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad1: c_ulong, + __pad1: Padding, pub st_size: off64_t, pub st_blksize: c_int, - __pad2: c_int, + __pad2: Padding, pub st_blocks: c_long, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -26,8 +26,8 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused4: c_uint, - __unused5: c_uint, + __unused4: Padding, + __unused5: Padding, } pub struct stat64 { @@ -38,10 +38,10 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad1: c_ulong, + __pad1: Padding, pub st_size: off64_t, pub st_blksize: c_int, - __pad2: c_int, + __pad2: Padding, pub st_blocks: c_long, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -49,8 +49,8 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused4: c_uint, - __unused5: c_uint, + __unused4: Padding, + __unused5: Padding, } } diff --git a/src/unix/linux_like/android/b64/x86_64/mod.rs b/src/unix/linux_like/android/b64/x86_64/mod.rs index fd678d1f11108..801235d13ec1b 100644 --- a/src/unix/linux_like/android/b64/x86_64/mod.rs +++ b/src/unix/linux_like/android/b64/x86_64/mod.rs @@ -24,7 +24,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: c_long, pub st_ctime_nsec: c_long, - __unused: [c_long; 3], + __unused: Padding<[c_long; 3]>, } pub struct stat64 { @@ -44,7 +44,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: c_long, pub st_ctime_nsec: c_long, - __unused: [c_long; 3], + __unused: Padding<[c_long; 3]>, } pub struct _libc_xmmreg { @@ -91,12 +91,12 @@ s! { pub start_code: c_ulong, pub start_stack: c_ulong, pub signal: c_long, - __reserved: c_int, + __reserved: Padding, #[cfg(target_pointer_width = "32")] - __pad1: u32, + __pad1: Padding, pub u_ar0: *mut user_regs_struct, #[cfg(target_pointer_width = "32")] - __pad2: u32, + __pad2: Padding, pub u_fpstate: *mut user_fpregs_struct, pub magic: c_ulong, pub u_comm: [c_char; 32], @@ -108,7 +108,7 @@ s! { pub struct _libc_fpxreg { pub significand: [u16; 4], pub exponent: u16, - __padding: [u16; 3], + __padding: Padding<[u16; 3]>, } pub struct _libc_fpstate { diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index 8e50af515364f..2ea3345238610 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -137,7 +137,7 @@ s! { pub struct sem_t { count: c_uint, #[cfg(target_pointer_width = "64")] - __reserved: [c_int; 3], + __reserved: Padding<[c_int; 3]>, } pub struct exit_status { @@ -179,11 +179,11 @@ s! { pub ssi_stime: c_ulonglong, pub ssi_addr: c_ulonglong, pub ssi_addr_lsb: u16, - _pad2: u16, + _pad2: Padding, pub ssi_syscall: i32, pub ssi_call_addr: u64, pub ssi_arch: u32, - _pad: [u8; 28], + _pad: Padding<[u8; 28]>, } pub struct itimerspec { @@ -503,7 +503,7 @@ s! { pub struct sockaddr_nl { pub nl_family: crate::sa_family_t, - nl_pad: c_ushort, + nl_pad: Padding, pub nl_pid: u32, pub nl_groups: u32, } @@ -1427,6 +1427,7 @@ pub const VSTART: usize = 8; pub const VSTOP: usize = 9; pub const VDISCARD: usize = 13; pub const VTIME: usize = 5; +pub const IUCLC: crate::tcflag_t = 0x00000200; pub const IXON: crate::tcflag_t = 0x00000400; pub const IXOFF: crate::tcflag_t = 0x00001000; pub const ONLCR: crate::tcflag_t = 0x4; @@ -3547,11 +3548,6 @@ extern "C" { timeout: c_int, ) -> c_int; pub fn epoll_ctl(epfd: c_int, op: c_int, fd: c_int, event: *mut crate::epoll_event) -> c_int; - pub fn pthread_getschedparam( - native: crate::pthread_t, - policy: *mut c_int, - param: *mut crate::sched_param, - ) -> c_int; pub fn unshare(flags: c_int) -> c_int; pub fn umount(target: *const c_char) -> c_int; pub fn sched_get_priority_max(policy: c_int) -> c_int; @@ -3565,7 +3561,7 @@ extern "C" { len: size_t, flags: c_uint, ) -> ssize_t; - pub fn eventfd(init: c_uint, flags: c_int) -> c_int; + pub fn eventfd(initval: c_uint, flags: c_int) -> c_int; pub fn eventfd_read(fd: c_int, value: *mut eventfd_t) -> c_int; pub fn eventfd_write(fd: c_int, value: eventfd_t) -> c_int; pub fn sched_rr_get_interval(pid: crate::pid_t, tp: *mut crate::timespec) -> c_int; @@ -3592,32 +3588,7 @@ extern "C" { timeout: *const crate::timespec, sigmask: *const sigset_t, ) -> c_int; - pub fn pthread_mutex_timedlock( - lock: *mut pthread_mutex_t, - abstime: *const crate::timespec, - ) -> c_int; - pub fn pthread_barrierattr_init(attr: *mut crate::pthread_barrierattr_t) -> c_int; - pub fn pthread_barrierattr_destroy(attr: *mut crate::pthread_barrierattr_t) -> c_int; - pub fn pthread_barrierattr_getpshared( - attr: *const crate::pthread_barrierattr_t, - shared: *mut c_int, - ) -> c_int; - pub fn pthread_barrierattr_setpshared( - attr: *mut crate::pthread_barrierattr_t, - shared: c_int, - ) -> c_int; - pub fn pthread_barrier_init( - barrier: *mut pthread_barrier_t, - attr: *const crate::pthread_barrierattr_t, - count: c_uint, - ) -> c_int; - pub fn pthread_barrier_destroy(barrier: *mut pthread_barrier_t) -> c_int; - pub fn pthread_barrier_wait(barrier: *mut pthread_barrier_t) -> c_int; - pub fn pthread_spin_init(lock: *mut crate::pthread_spinlock_t, pshared: c_int) -> c_int; - pub fn pthread_spin_destroy(lock: *mut crate::pthread_spinlock_t) -> c_int; - pub fn pthread_spin_lock(lock: *mut crate::pthread_spinlock_t) -> c_int; - pub fn pthread_spin_trylock(lock: *mut crate::pthread_spinlock_t) -> c_int; - pub fn pthread_spin_unlock(lock: *mut crate::pthread_spinlock_t) -> c_int; + pub fn clone( cb: extern "C" fn(*mut c_void) -> c_int, child_stack: *mut c_void, @@ -3632,29 +3603,11 @@ extern "C" { rqtp: *const crate::timespec, rmtp: *mut crate::timespec, ) -> c_int; - pub fn pthread_attr_getguardsize( - attr: *const crate::pthread_attr_t, - guardsize: *mut size_t, - ) -> c_int; - pub fn pthread_attr_setguardsize(attr: *mut crate::pthread_attr_t, guardsize: size_t) -> c_int; - pub fn pthread_attr_getinheritsched( - attr: *const crate::pthread_attr_t, - flag: *mut c_int, - ) -> c_int; - pub fn pthread_attr_setinheritsched(attr: *mut crate::pthread_attr_t, flag: c_int) -> c_int; + pub fn sethostname(name: *const c_char, len: size_t) -> c_int; pub fn sched_get_priority_min(policy: c_int) -> c_int; - pub fn pthread_condattr_getpshared( - attr: *const pthread_condattr_t, - pshared: *mut c_int, - ) -> c_int; pub fn sysinfo(info: *mut crate::sysinfo) -> c_int; pub fn umount2(target: *const c_char, flags: c_int) -> c_int; - pub fn pthread_setschedparam( - native: crate::pthread_t, - policy: c_int, - param: *const crate::sched_param, - ) -> c_int; pub fn swapon(path: *const c_char, swapflags: c_int) -> c_int; pub fn sched_setscheduler( pid: crate::pid_t, @@ -3682,10 +3635,8 @@ extern "C" { buflen: size_t, result: *mut *mut crate::group, ) -> c_int; - pub fn pthread_sigmask(how: c_int, set: *const sigset_t, oldset: *mut sigset_t) -> c_int; pub fn sem_open(name: *const c_char, oflag: c_int, ...) -> *mut sem_t; pub fn getgrnam(name: *const c_char) -> *mut crate::group; - pub fn pthread_kill(thread: crate::pthread_t, sig: c_int) -> c_int; pub fn sem_unlink(name: *const c_char) -> c_int; pub fn daemon(nochdir: c_int, noclose: c_int) -> c_int; pub fn getpwnam_r( @@ -3708,11 +3659,6 @@ extern "C" { timeout: *const crate::timespec, ) -> c_int; pub fn sigwait(set: *const sigset_t, sig: *mut c_int) -> c_int; - pub fn pthread_atfork( - prepare: Option, - parent: Option, - child: Option, - ) -> c_int; pub fn getgrgid(gid: crate::gid_t) -> *mut crate::group; pub fn getgrouplist( user: *const c_char, @@ -3721,18 +3667,8 @@ extern "C" { ngroups: *mut c_int, ) -> c_int; pub fn initgroups(user: *const c_char, group: crate::gid_t) -> c_int; - pub fn pthread_mutexattr_getpshared( - attr: *const pthread_mutexattr_t, - pshared: *mut c_int, - ) -> c_int; pub fn popen(command: *const c_char, mode: *const c_char) -> *mut crate::FILE; pub fn faccessat(dirfd: c_int, pathname: *const c_char, mode: c_int, flags: c_int) -> c_int; - pub fn pthread_create( - native: *mut crate::pthread_t, - attr: *const crate::pthread_attr_t, - f: extern "C" fn(*mut c_void) -> *mut c_void, - value: *mut c_void, - ) -> c_int; pub fn __errno() -> *mut c_int; pub fn inotify_rm_watch(fd: c_int, wd: u32) -> c_int; pub fn inotify_init() -> c_int; @@ -3768,8 +3704,6 @@ extern "C" { pub fn getrandom(buf: *mut c_void, buflen: size_t, flags: c_uint) -> ssize_t; pub fn getentropy(buf: *mut c_void, buflen: size_t) -> c_int; - pub fn pthread_setname_np(thread: crate::pthread_t, name: *const c_char) -> c_int; - pub fn __system_property_set(__name: *const c_char, __value: *const c_char) -> c_int; pub fn __system_property_get(__name: *const c_char, __value: *mut c_char) -> c_int; pub fn __system_property_find(__name: *const c_char) -> *const prop_info; @@ -3794,8 +3728,6 @@ extern "C" { pub fn reallocarray(ptr: *mut c_void, nmemb: size_t, size: size_t) -> *mut c_void; - pub fn pthread_getcpuclockid(thread: crate::pthread_t, clk_id: *mut crate::clockid_t) -> c_int; - pub fn dirname(path: *const c_char) -> *mut c_char; pub fn basename(path: *const c_char) -> *mut c_char; pub fn getopt_long( diff --git a/src/unix/linux_like/emscripten/mod.rs b/src/unix/linux_like/emscripten/mod.rs index 306cf180e5c0b..8996527e2e8e1 100644 --- a/src/unix/linux_like/emscripten/mod.rs +++ b/src/unix/linux_like/emscripten/mod.rs @@ -52,11 +52,11 @@ s! { 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, + __unused1: Padding<*mut c_void>, + __unused2: Padding<*mut c_void>, + __unused3: Padding<*mut c_void>, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, } pub struct passwd { @@ -115,11 +115,11 @@ s! { pub ssi_stime: u64, pub ssi_addr: u64, pub ssi_addr_lsb: u16, - _pad2: u16, + _pad2: Padding, pub ssi_syscall: i32, pub ssi_call_addr: u64, pub ssi_arch: u32, - _pad: [u8; 28], + _pad: Padding<[u8; 28]>, } pub struct fsid_t { @@ -170,8 +170,8 @@ s! { pub cgid: crate::gid_t, pub mode: mode_t, pub __seq: c_int, - __unused1: c_long, - __unused2: c_long, + __unused1: Padding, + __unused2: Padding, } pub struct termios { @@ -260,8 +260,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: c_ulong, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct msqid_ds { @@ -274,8 +274,8 @@ s! { pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct statfs { @@ -1436,12 +1436,6 @@ extern "C" { pub fn ioctl(fd: c_int, request: c_int, ...) -> c_int; pub fn getpriority(which: c_int, who: crate::id_t) -> c_int; pub fn setpriority(which: c_int, who: crate::id_t, prio: c_int) -> c_int; - pub fn pthread_create( - native: *mut crate::pthread_t, - attr: *const crate::pthread_attr_t, - f: extern "C" fn(*mut c_void) -> *mut c_void, - value: *mut c_void, - ) -> c_int; pub fn getentropy(buf: *mut c_void, buflen: size_t) -> c_int; diff --git a/src/unix/linux_like/linux/arch/generic/mod.rs b/src/unix/linux_like/linux/arch/generic/mod.rs index 465ceddeab64e..5fe9da78bb315 100644 --- a/src/unix/linux_like/linux/arch/generic/mod.rs +++ b/src/unix/linux_like/linux/arch/generic/mod.rs @@ -272,6 +272,7 @@ pub const TIOCM_DSR: c_int = 0x100; pub const BOTHER: crate::speed_t = 0o010000; pub const IBSHIFT: crate::tcflag_t = 16; +pub const IUCLC: crate::tcflag_t = 0o0001000; // RLIMIT Constants diff --git a/src/unix/linux_like/linux/arch/mips/mod.rs b/src/unix/linux_like/linux/arch/mips/mod.rs index ba688948a906d..e8ce0cb4fd109 100644 --- a/src/unix/linux_like/linux/arch/mips/mod.rs +++ b/src/unix/linux_like/linux/arch/mips/mod.rs @@ -242,6 +242,7 @@ pub const TIOCM_DSR: c_int = 0x400; pub const BOTHER: crate::speed_t = 0o010000; pub const IBSHIFT: crate::tcflag_t = 16; +pub const IUCLC: crate::tcflag_t = 0o0001000; // RLIMIT Constants diff --git a/src/unix/linux_like/linux/arch/powerpc/mod.rs b/src/unix/linux_like/linux/arch/powerpc/mod.rs index 3249a9f1b6a46..33440bf6ff7a5 100644 --- a/src/unix/linux_like/linux/arch/powerpc/mod.rs +++ b/src/unix/linux_like/linux/arch/powerpc/mod.rs @@ -227,6 +227,7 @@ pub const TIOCM_DSR: c_int = 0x100; pub const BOTHER: crate::speed_t = 0o0037; pub const IBSHIFT: crate::tcflag_t = 16; +pub const IUCLC: crate::tcflag_t = 0o0010000; // RLIMIT Constants diff --git a/src/unix/linux_like/linux/arch/sparc/mod.rs b/src/unix/linux_like/linux/arch/sparc/mod.rs index 4c108ba7b71c1..1b6729a3e1d8e 100644 --- a/src/unix/linux_like/linux/arch/sparc/mod.rs +++ b/src/unix/linux_like/linux/arch/sparc/mod.rs @@ -213,6 +213,7 @@ pub const TIOCM_DSR: c_int = 0x100; pub const BOTHER: crate::speed_t = 0x1000; pub const IBSHIFT: crate::tcflag_t = 16; +pub const IUCLC: crate::tcflag_t = 0o0001000; // RLIMIT Constants diff --git a/src/unix/linux_like/linux/gnu/b32/arm/mod.rs b/src/unix/linux_like/linux/gnu/b32/arm/mod.rs index 40d90159553a9..dadaa7a8f6892 100644 --- a/src/unix/linux_like/linux/gnu/b32/arm/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/arm/mod.rs @@ -56,17 +56,17 @@ s! { pub cuid: crate::uid_t, pub cgid: crate::gid_t, pub mode: c_ushort, - __pad1: c_ushort, + __pad1: Padding, pub __seq: c_ushort, - __pad2: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad2: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct stat64 { pub st_dev: crate::dev_t, #[cfg(not(gnu_time_bits64))] - __pad1: c_uint, + __pad1: Padding, #[cfg(not(gnu_time_bits64))] __st_ino: c_ulong, #[cfg(gnu_time_bits64)] @@ -77,7 +77,7 @@ s! { pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, #[cfg(not(gnu_time_bits64))] - __pad2: c_uint, + __pad2: Padding, pub st_size: off64_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt64_t, @@ -133,18 +133,18 @@ s! { pub shm_segsz: size_t, pub shm_atime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __unused1: c_ulong, + __unused1: Padding, pub shm_dtime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __unused2: c_ulong, + __unused2: Padding, pub shm_ctime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __unused3: c_ulong, + __unused3: Padding, pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } pub struct msqid_ds { diff --git a/src/unix/linux_like/linux/gnu/b32/csky/mod.rs b/src/unix/linux_like/linux/gnu/b32/csky/mod.rs index bb06c49df0a25..978b4398e9073 100644 --- a/src/unix/linux_like/linux/gnu/b32/csky/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/csky/mod.rs @@ -55,23 +55,23 @@ s! { pub cuid: crate::uid_t, pub cgid: crate::gid_t, pub mode: c_ushort, - __pad1: c_ushort, + __pad1: Padding, pub __seq: c_ushort, - __pad2: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad2: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct stat64 { pub st_dev: crate::dev_t, - __pad1: c_uint, + __pad1: Padding, __st_ino: crate::ino_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad2: c_uint, + __pad2: Padding, pub st_size: off64_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt64_t, @@ -119,16 +119,16 @@ s! { pub shm_perm: crate::ipc_perm, pub shm_segsz: size_t, pub shm_atime: crate::time_t, - __unused1: c_ulong, + __unused1: Padding, pub shm_dtime: crate::time_t, - __unused2: c_ulong, + __unused2: Padding, pub shm_ctime: crate::time_t, - __unused3: c_ulong, + __unused3: Padding, pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } pub struct msqid_ds { diff --git a/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs b/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs index ceaab898074b4..d2eb7ee3ec9b4 100644 --- a/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs @@ -57,21 +57,21 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, __seq: c_ushort, - __pad1: c_ushort, + __pad1: Padding, __glibc_reserved1: c_ulong, __glibc_reserved2: c_ulong, } pub struct stat64 { pub st_dev: crate::dev_t, - __pad1: c_ushort, + __pad1: Padding, pub __st_ino: crate::ino_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad2: c_ushort, + __pad2: Padding, pub st_size: off64_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt64_t, @@ -152,7 +152,7 @@ s! { pub si_signo: c_int, pub si_code: c_int, pub si_errno: c_int, - _pad: [c_int; 29], + _pad: Padding<[c_int; 29]>, _align: [usize; 0], } @@ -864,3 +864,22 @@ pub const SYS_landlock_restrict_self: c_long = 446; pub const SYS_process_mrelease: c_long = 448; pub const SYS_futex_waitv: c_long = 449; pub const SYS_set_mempolicy_home_node: c_long = 450; +pub const SYS_cachestat: c_long = 451; +pub const SYS_fchmodat2: c_long = 452; +pub const SYS_map_shadow_stack: c_long = 453; +pub const SYS_futex_wake: c_long = 454; +pub const SYS_futex_wait: c_long = 455; +pub const SYS_futex_requeue: c_long = 456; +pub const SYS_statmount: c_long = 457; +pub const SYS_listmount: c_long = 458; +pub const SYS_lsm_get_self_attr: c_long = 459; +pub const SYS_lsm_set_self_attr: c_long = 460; +pub const SYS_lsm_list_modules: c_long = 461; +pub const SYS_mseal: c_long = 462; +pub const SYS_setxattrat: c_long = 463; +pub const SYS_getxattrat: c_long = 464; +pub const SYS_listxattrat: c_long = 465; +pub const SYS_removexattrat: c_long = 466; +pub const SYS_open_tree_attr: c_long = 467; +pub const SYS_file_get_attr: c_long = 468; +pub const SYS_file_set_attr: c_long = 469; diff --git a/src/unix/linux_like/linux/gnu/b32/mips/mod.rs b/src/unix/linux_like/linux/gnu/b32/mips/mod.rs index 98ce89e124891..99af57a4460c0 100644 --- a/src/unix/linux_like/linux/gnu/b32/mips/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/mips/mod.rs @@ -14,7 +14,7 @@ s! { pub st_dev: crate::dev_t, #[cfg(not(gnu_time_bits64))] - st_pad1: [c_long; 3], + st_pad1: Padding<[c_long; 3]>, pub st_ino: crate::ino_t, @@ -29,14 +29,14 @@ s! { pub st_rdev: crate::dev_t, #[cfg(not(gnu_file_offset_bits64))] - st_pad2: [c_long; 2], + st_pad2: Padding<[c_long; 2]>, #[cfg(all(not(gnu_time_bits64), gnu_file_offset_bits64))] - st_pad2: [c_long; 3], + st_pad2: Padding<[c_long; 3]>, pub st_size: off_t, #[cfg(not(gnu_file_offset_bits64))] - st_pad3: c_long, + st_pad3: Padding, #[cfg(gnu_time_bits64)] pub st_blksize: crate::blksize_t, @@ -59,11 +59,11 @@ s! { #[cfg(not(gnu_time_bits64))] pub st_blksize: crate::blksize_t, #[cfg(all(not(gnu_time_bits64), gnu_file_offset_bits64))] - st_pad4: c_long, + st_pad4: Padding, #[cfg(not(gnu_time_bits64))] pub st_blocks: crate::blkcnt_t, #[cfg(not(gnu_time_bits64))] - st_pad5: [c_long; 14], + st_pad5: Padding<[c_long; 14]>, } pub struct stat64 { @@ -73,7 +73,7 @@ s! { pub st_dev: crate::dev_t, #[cfg(not(gnu_time_bits64))] - st_pad1: [c_long; 3], + st_pad1: Padding<[c_long; 3]>, pub st_ino: crate::ino64_t, pub st_mode: crate::mode_t, @@ -87,7 +87,7 @@ s! { pub st_rdev: crate::dev_t, #[cfg(not(gnu_time_bits64))] - st_pad2: [c_long; 3], + st_pad2: Padding<[c_long; 3]>, pub st_size: off64_t, @@ -112,11 +112,11 @@ s! { #[cfg(not(gnu_time_bits64))] pub st_blksize: crate::blksize_t, #[cfg(not(gnu_time_bits64))] - st_pad3: c_long, + st_pad3: Padding, #[cfg(not(gnu_time_bits64))] pub st_blocks: crate::blkcnt64_t, #[cfg(not(gnu_time_bits64))] - st_pad5: [c_long; 14], + st_pad5: Padding<[c_long; 14]>, } pub struct statfs { @@ -197,9 +197,9 @@ s! { pub cgid: crate::gid_t, pub mode: c_uint, pub __seq: c_ushort, - __pad1: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad1: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -211,8 +211,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } pub struct msqid_ds { diff --git a/src/unix/linux_like/linux/gnu/b32/mod.rs b/src/unix/linux_like/linux/gnu/b32/mod.rs index fe843a7643207..1855693dc6c7a 100644 --- a/src/unix/linux_like/linux/gnu/b32/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/mod.rs @@ -81,7 +81,7 @@ cfg_if! { pub st_dev: crate::dev_t, #[cfg(not(gnu_time_bits64))] - __pad1: c_uint, + __pad1: Padding, #[cfg(any(gnu_time_bits64, not(gnu_file_offset_bits64)))] pub st_ino: crate::ino_t, @@ -96,7 +96,7 @@ cfg_if! { pub st_rdev: crate::dev_t, #[cfg(not(gnu_time_bits64))] - __pad2: c_uint, + __pad2: Padding, pub st_size: off_t, @@ -176,7 +176,7 @@ s! { pub struct semid_ds { pub sem_perm: ipc_perm, #[cfg(all(not(gnu_time_bits64), target_arch = "powerpc"))] - __reserved: crate::__syscall_ulong_t, + __reserved: Padding, pub sem_otime: crate::time_t, #[cfg(not(any( gnu_time_bits64, @@ -184,9 +184,9 @@ s! { target_arch = "mips32r6", target_arch = "powerpc" )))] - __reserved: crate::__syscall_ulong_t, + __reserved: Padding, #[cfg(all(not(gnu_time_bits64), target_arch = "powerpc"))] - __reserved2: crate::__syscall_ulong_t, + __reserved2: Padding, pub sem_ctime: crate::time_t, #[cfg(not(any( gnu_time_bits64, @@ -194,7 +194,7 @@ s! { target_arch = "mips32r6", target_arch = "powerpc" )))] - __reserved2: crate::__syscall_ulong_t, + __reserved2: Padding, pub sem_nsems: crate::__syscall_ulong_t, #[cfg(all( gnu_time_bits64, @@ -206,7 +206,7 @@ s! { target_arch = "x86" )) ))] - __reserved2: crate::__syscall_ulong_t, + __reserved2: Padding, __glibc_reserved3: crate::__syscall_ulong_t, __glibc_reserved4: crate::__syscall_ulong_t, } @@ -214,13 +214,13 @@ s! { #[cfg(gnu_time_bits64)] pub struct timex { pub modes: c_uint, - _pad1: c_int, + _pad1: Padding, pub offset: c_longlong, pub freq: c_longlong, pub maxerror: c_longlong, pub esterror: c_longlong, pub status: c_int, - _pad2: c_int, + _pad2: Padding, pub constant: c_longlong, pub precision: c_longlong, pub tolerance: c_longlong, @@ -229,7 +229,7 @@ s! { pub ppsfreq: c_longlong, pub jitter: c_longlong, pub shift: c_int, - _pad3: c_int, + _pad3: Padding, pub stabil: c_longlong, pub jitcnt: c_longlong, pub calcnt: c_longlong, diff --git a/src/unix/linux_like/linux/gnu/b32/powerpc.rs b/src/unix/linux_like/linux/gnu/b32/powerpc.rs index 54470e10d6145..c84ee0c95cad5 100644 --- a/src/unix/linux_like/linux/gnu/b32/powerpc.rs +++ b/src/unix/linux_like/linux/gnu/b32/powerpc.rs @@ -57,7 +57,7 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, __seq: u32, - __pad1: u32, + __pad1: Padding, __glibc_reserved1: u64, __glibc_reserved2: u64, } @@ -65,7 +65,7 @@ s! { pub struct stat { pub st_dev: crate::dev_t, #[cfg(not(gnu_file_offset_bits64))] - __pad1: c_ushort, + __pad1: Padding, pub st_ino: crate::ino_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, @@ -73,7 +73,7 @@ s! { pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, #[cfg(not(gnu_time_bits64))] - __pad2: c_ushort, + __pad2: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, @@ -104,7 +104,7 @@ s! { pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, #[cfg(not(gnu_time_bits64))] - __pad2: c_ushort, + __pad2: Padding, pub st_size: off64_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt64_t, diff --git a/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs b/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs index f4f04c91b7f87..8da10a3c543b6 100644 --- a/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs @@ -42,7 +42,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2], + __unused: Padding<[c_int; 2]>, } pub struct statfs { @@ -127,11 +127,11 @@ s! { pub cuid: crate::uid_t, pub cgid: crate::gid_t, pub mode: c_ushort, - __pad1: c_ushort, + __pad1: Padding, pub __seq: c_ushort, - __pad2: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad2: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -143,8 +143,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused5: c_ulong, - __unused6: c_ulong, + __unused5: Padding, + __unused6: Padding, } pub struct flock { diff --git a/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs b/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs index 03ecff3f342e1..303d4a1135715 100644 --- a/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs @@ -39,7 +39,7 @@ s! { pub si_signo: c_int, pub si_errno: c_int, pub si_code: c_int, - _pad: [c_int; 29], + _pad: Padding<[c_int; 29]>, _align: [usize; 0], } @@ -57,7 +57,7 @@ s! { pub l_start: off64_t, pub l_len: off64_t, pub l_pid: crate::pid_t, - __reserved: c_short, + __reserved: Padding, } pub struct stack_t { @@ -69,14 +69,14 @@ s! { pub struct stat { pub st_dev: crate::dev_t, #[cfg(not(gnu_file_offset_bits64))] - __pad1: c_ushort, + __pad1: Padding, pub st_ino: crate::ino_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad2: c_ushort, + __pad2: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, @@ -98,7 +98,7 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad2: c_ushort, + __pad2: Padding, pub st_size: off64_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt64_t, @@ -149,12 +149,12 @@ s! { pub gid: crate::gid_t, pub cuid: crate::uid_t, pub cgid: crate::gid_t, - __pad1: c_ushort, + __pad1: Padding, pub mode: c_ushort, - __pad2: c_ushort, + __pad2: Padding, pub __seq: c_ushort, - __unused1: c_ulonglong, - __unused2: c_ulonglong, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -162,33 +162,33 @@ s! { #[cfg(gnu_time_bits64)] pub shm_segsz: size_t, #[cfg(not(gnu_time_bits64))] - __pad1: c_uint, + __pad1: Padding, pub shm_atime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __pad2: c_uint, + __pad2: Padding, pub shm_dtime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __pad3: c_uint, + __pad3: Padding, pub shm_ctime: crate::time_t, #[cfg(not(gnu_time_bits64))] pub shm_segsz: size_t, pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __reserved1: c_ulong, - __reserved2: c_ulong, + __reserved1: Padding, + __reserved2: Padding, } pub struct msqid_ds { pub msg_perm: crate::ipc_perm, #[cfg(not(gnu_time_bits64))] - __pad1: c_uint, + __pad1: Padding, pub msg_stime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __pad2: c_uint, + __pad2: Padding, pub msg_rtime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __pad3: c_uint, + __pad3: Padding, pub msg_ctime: crate::time_t, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, diff --git a/src/unix/linux_like/linux/gnu/b32/x86/mod.rs b/src/unix/linux_like/linux/gnu/b32/x86/mod.rs index 4882acb8fd0e2..8c80598f84f41 100644 --- a/src/unix/linux_like/linux/gnu/b32/x86/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/x86/mod.rs @@ -108,7 +108,7 @@ s! { pub start_code: c_ulong, pub start_stack: c_ulong, pub signal: c_long, - __reserved: c_int, + __reserved: Padding, pub u_ar0: *mut user_regs_struct, pub u_fpstate: *mut user_fpregs_struct, pub magic: c_ulong, @@ -130,17 +130,17 @@ s! { pub cuid: crate::uid_t, pub cgid: crate::gid_t, pub mode: c_ushort, - __pad1: c_ushort, + __pad1: Padding, pub __seq: c_ushort, - __pad2: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad2: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct stat64 { pub st_dev: crate::dev_t, #[cfg(not(gnu_time_bits64))] - __pad1: c_uint, + __pad1: Padding, #[cfg(not(gnu_time_bits64))] __st_ino: c_ulong, #[cfg(gnu_time_bits64)] @@ -151,22 +151,22 @@ s! { pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, #[cfg(not(gnu_time_bits64))] - __pad2: c_uint, + __pad2: Padding, pub st_size: off64_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt64_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, #[cfg(gnu_time_bits64)] - _atime_pad: c_int, + _atime_pad: Padding, pub st_mtime: crate::time_t, pub st_mtime_nsec: c_long, #[cfg(gnu_time_bits64)] - _mtime_pad: c_int, + _mtime_pad: Padding, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, #[cfg(gnu_time_bits64)] - _ctime_pad: c_int, + _ctime_pad: Padding, #[cfg(not(gnu_time_bits64))] pub st_ino: crate::ino64_t, } @@ -207,18 +207,18 @@ s! { pub shm_segsz: size_t, pub shm_atime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __unused1: c_ulong, + __unused1: Padding, pub shm_dtime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __unused2: c_ulong, + __unused2: Padding, pub shm_ctime: crate::time_t, #[cfg(not(gnu_time_bits64))] - __unused3: c_ulong, + __unused3: Padding, pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } pub struct msqid_ds { @@ -272,7 +272,7 @@ s! { pub foo: c_long, pub fos: c_long, pub mxcsr: c_long, - __reserved: c_long, + __reserved: Padding, pub st_space: [c_long; 32], pub xmm_space: [c_long; 32], padding: [c_long; 56], diff --git a/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs b/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs index b5af0e8ec9548..d896257046df4 100644 --- a/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs @@ -20,7 +20,7 @@ s! { pub sa_sigaction: crate::sighandler_t, pub sa_mask: crate::sigset_t, #[cfg(target_arch = "sparc64")] - __reserved0: c_int, + __reserved0: Padding, pub sa_flags: c_int, pub sa_restorer: Option, } @@ -65,10 +65,10 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad1: crate::dev_t, + __pad1: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, - __pad2: c_int, + __pad2: Padding, pub st_blocks: crate::blkcnt_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -76,7 +76,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2], + __unused: Padding<[c_int; 2]>, } pub struct stat64 { @@ -87,10 +87,10 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad1: crate::dev_t, + __pad1: Padding, pub st_size: off64_t, pub st_blksize: crate::blksize_t, - __pad2: c_int, + __pad2: Padding, pub st_blocks: crate::blkcnt64_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -98,7 +98,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2], + __unused: Padding<[c_int; 2]>, } pub struct statfs64 { @@ -165,9 +165,9 @@ s! { pub cgid: crate::gid_t, pub mode: c_uint, pub __seq: c_ushort, - __pad1: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad1: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -179,8 +179,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } pub struct siginfo_t { @@ -219,7 +219,7 @@ s! { pub sp: c_ulonglong, pub pc: c_ulonglong, pub pstate: c_ulonglong, - __reserved: [u64; 512], + __reserved: Padding<[u64; 512]>, } pub struct user_fpsimd_struct { diff --git a/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs b/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs index 1eeb6098284b8..e3971eaafe0ae 100644 --- a/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs @@ -22,10 +22,10 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad1: crate::dev_t, + __pad1: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, - __pad2: c_int, + __pad2: Padding, pub st_blocks: crate::blkcnt_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -33,7 +33,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2], + __unused: Padding<[c_int; 2]>, } pub struct stat64 { @@ -55,7 +55,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2], + __unused: Padding<[c_int; 2]>, } pub struct statfs { @@ -176,9 +176,9 @@ s! { pub cgid: crate::gid_t, pub mode: c_uint, pub __seq: c_ushort, - __pad2: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad2: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -190,8 +190,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } pub struct user_regs_struct { diff --git a/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs b/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs index da43c3268813a..dfec9203361d0 100644 --- a/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs @@ -15,16 +15,16 @@ pub type __s64 = c_long; s! { pub struct stat { pub st_dev: c_ulong, - st_pad1: [c_long; 2], + st_pad1: Padding<[c_long; 2]>, pub st_ino: crate::ino_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: c_ulong, - st_pad2: [c_ulong; 1], + st_pad2: Padding<[c_ulong; 1]>, pub st_size: off_t, - st_pad3: c_long, + st_pad3: Padding, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, pub st_mtime: crate::time_t, @@ -32,9 +32,9 @@ s! { pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, - st_pad4: c_long, + st_pad4: Padding, pub st_blocks: crate::blkcnt_t, - st_pad5: [c_long; 7], + st_pad5: Padding<[c_long; 7]>, } pub struct statfs { @@ -70,14 +70,14 @@ s! { pub struct stat64 { pub st_dev: c_ulong, - st_pad1: [c_long; 2], + st_pad1: Padding<[c_long; 2]>, pub st_ino: crate::ino64_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: c_ulong, - st_pad2: [c_long; 2], + st_pad2: Padding<[c_long; 2]>, pub st_size: off64_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -86,9 +86,9 @@ s! { pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, - st_pad3: c_long, + st_pad3: Padding, pub st_blocks: crate::blkcnt64_t, - st_pad5: [c_long; 7], + st_pad5: Padding<[c_long; 7]>, } pub struct statfs64 { @@ -159,8 +159,8 @@ s! { pub si_signo: c_int, pub si_code: c_int, pub si_errno: c_int, - _pad: c_int, - _pad2: [c_long; 14], + _pad: Padding, + _pad2: Padding<[c_long; 14]>, } pub struct ipc_perm { @@ -171,9 +171,9 @@ s! { pub cgid: crate::gid_t, pub mode: c_uint, pub __seq: c_ushort, - __pad1: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad1: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -185,8 +185,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } } diff --git a/src/unix/linux_like/linux/gnu/b64/mod.rs b/src/unix/linux_like/linux/gnu/b64/mod.rs index ba5678b459795..5a3022117c2a3 100644 --- a/src/unix/linux_like/linux/gnu/b64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/mod.rs @@ -80,7 +80,7 @@ s! { target_arch = "sparc64", target_arch = "s390x", )))] - __reserved: crate::__syscall_ulong_t, + __reserved: Padding, pub sem_ctime: crate::time_t, #[cfg(not(any( target_arch = "aarch64", @@ -92,7 +92,7 @@ s! { target_arch = "sparc64", target_arch = "s390x", )))] - __reserved2: crate::__syscall_ulong_t, + __reserved2: Padding, pub sem_nsems: crate::__syscall_ulong_t, __glibc_reserved3: crate::__syscall_ulong_t, __glibc_reserved4: crate::__syscall_ulong_t, diff --git a/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs b/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs index 153d25e2f3deb..2d6957d5e51c7 100644 --- a/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs @@ -23,7 +23,7 @@ s! { pub sa_sigaction: crate::sighandler_t, pub sa_mask: crate::sigset_t, #[cfg(target_arch = "sparc64")] - __reserved0: c_int, + __reserved0: Padding, pub sa_flags: c_int, pub sa_restorer: Option, } @@ -67,7 +67,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - __pad0: c_int, + __pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_blksize: crate::blksize_t, @@ -78,7 +78,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_long; 3], + __unused: Padding<[c_long; 3]>, } pub struct stat64 { @@ -88,7 +88,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - __pad0: c_int, + __pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off64_t, pub st_blksize: crate::blksize_t, @@ -99,7 +99,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __reserved: [c_long; 3], + __reserved: Padding<[c_long; 3]>, } pub struct statfs64 { @@ -159,9 +159,9 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: u32, - __pad1: u32, - __unused1: u64, - __unused2: c_ulong, + __pad1: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -173,8 +173,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } pub struct siginfo_t { diff --git a/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs b/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs index e5546cdae7fb3..3438a510d3bf9 100644 --- a/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs @@ -40,7 +40,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2usize], + __unused: Padding<[c_int; 2usize]>, } pub struct stat64 { @@ -62,7 +62,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2], + __unused: Padding<[c_int; 2]>, } pub struct statfs { @@ -162,11 +162,11 @@ s! { pub cuid: crate::uid_t, pub cgid: crate::gid_t, pub mode: c_ushort, - __pad1: c_ushort, + __pad1: Padding, pub __seq: c_ushort, - __pad2: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad2: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -178,8 +178,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused5: c_ulong, - __unused6: c_ulong, + __unused5: Padding, + __unused6: Padding, } pub struct flock { diff --git a/src/unix/linux_like/linux/gnu/b64/s390x.rs b/src/unix/linux_like/linux/gnu/b64/s390x.rs index 5bea1a100b1d7..d45e153aee3a9 100644 --- a/src/unix/linux_like/linux/gnu/b64/s390x.rs +++ b/src/unix/linux_like/linux/gnu/b64/s390x.rs @@ -61,8 +61,8 @@ s! { pub si_signo: c_int, pub si_errno: c_int, pub si_code: c_int, - _pad: c_int, - _pad2: [c_long; 14], + _pad: Padding, + _pad2: Padding<[c_long; 14]>, } pub struct stack_t { @@ -78,7 +78,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - st_pad0: c_int, + st_pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_atime: crate::time_t, @@ -99,7 +99,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - st_pad0: c_int, + st_pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_atime: crate::time_t, @@ -125,9 +125,9 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: c_ushort, - __pad1: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad1: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -139,8 +139,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } pub struct statvfs { @@ -165,7 +165,7 @@ s! { pub struct fpregset_t { pub fpc: u32, - __pad: u32, + __pad: Padding, pub fprs: [fpreg_t; 16], } diff --git a/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs b/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs index 0a40d7599bad9..0b32562339690 100644 --- a/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs @@ -21,7 +21,7 @@ s! { pub sa_sigaction: crate::sighandler_t, pub sa_mask: crate::sigset_t, #[cfg(target_arch = "sparc64")] - __reserved0: c_int, + __reserved0: Padding, pub sa_flags: c_int, pub sa_restorer: Option, } @@ -71,7 +71,7 @@ s! { pub l_start: off64_t, pub l_len: off64_t, pub l_pid: crate::pid_t, - __reserved: c_short, + __reserved: Padding, } pub struct stack_t { @@ -82,14 +82,14 @@ s! { pub struct stat { pub st_dev: crate::dev_t, - __pad0: u64, + __pad0: Padding, pub st_ino: crate::ino_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad1: u64, + __pad1: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, @@ -99,19 +99,19 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_long; 2], + __unused: Padding<[c_long; 2]>, } pub struct stat64 { pub st_dev: crate::dev_t, - __pad0: u64, + __pad0: Padding, pub st_ino: crate::ino64_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad2: c_int, + __pad2: Padding, pub st_size: off64_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt64_t, @@ -121,7 +121,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __reserved: [c_long; 2], + __reserved: Padding<[c_long; 2]>, } pub struct statfs64 { @@ -180,10 +180,10 @@ s! { pub cuid: crate::uid_t, pub cgid: crate::gid_t, pub mode: crate::mode_t, - __pad0: u16, + __pad0: Padding, pub __seq: c_ushort, - __unused1: c_ulonglong, - __unused2: c_ulonglong, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -195,8 +195,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __reserved1: c_ulong, - __reserved2: c_ulong, + __reserved1: Padding, + __reserved2: Padding, } } diff --git a/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs b/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs index f58d8bba480f8..8654559b148fb 100644 --- a/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs @@ -21,7 +21,7 @@ s! { pub sa_sigaction: crate::sighandler_t, pub sa_mask: crate::sigset_t, #[cfg(target_arch = "sparc64")] - __reserved0: c_int, + __reserved0: Padding, pub sa_flags: c_int, pub sa_restorer: Option, } @@ -86,7 +86,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - __pad0: c_int, + __pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_blksize: crate::blksize_t, @@ -97,7 +97,7 @@ s! { pub st_mtime_nsec: i64, pub st_ctime: crate::time_t, pub st_ctime_nsec: i64, - __unused: [i64; 3], + __unused: Padding<[i64; 3]>, } pub struct stat64 { @@ -107,7 +107,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - __pad0: c_int, + __pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_blksize: crate::blksize_t, @@ -118,7 +118,7 @@ s! { pub st_mtime_nsec: i64, pub st_ctime: crate::time_t, pub st_ctime_nsec: i64, - __reserved: [i64; 3], + __reserved: Padding<[i64; 3]>, } pub struct statfs64 { @@ -222,12 +222,12 @@ s! { pub start_code: c_ulonglong, pub start_stack: c_ulonglong, pub signal: c_longlong, - __reserved: c_int, + __reserved: Padding, #[cfg(target_pointer_width = "32")] - __pad1: u32, + __pad1: Padding, pub u_ar0: *mut user_regs_struct, #[cfg(target_pointer_width = "32")] - __pad2: u32, + __pad2: Padding, pub u_fpstate: *mut user_fpregs_struct, pub magic: c_ulonglong, pub u_comm: [c_char; 32], @@ -247,11 +247,11 @@ s! { pub cuid: crate::uid_t, pub cgid: crate::gid_t, pub mode: c_ushort, - __pad1: c_ushort, + __pad1: Padding, pub __seq: c_ushort, - __pad2: c_ushort, - __unused1: u64, - __unused2: u64, + __pad2: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -263,8 +263,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused4: u64, - __unused5: u64, + __unused4: Padding, + __unused5: Padding, } pub struct ptrace_rseq_configuration { diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs index 61ccee3e75234..96eed0d27ef2c 100644 --- a/src/unix/linux_like/linux/gnu/mod.rs +++ b/src/unix/linux_like/linux/gnu/mod.rs @@ -37,7 +37,7 @@ s! { not(target_arch = "x86_64"), target_pointer_width = "32" ))] - __unused1: [c_char; 4], + __unused1: Padding<[c_char; 4]>, __glibc_reserved: [c_char; 32], } @@ -57,11 +57,11 @@ s! { 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, + __unused1: Padding<*mut c_void>, + __unused2: Padding<*mut c_void>, + __unused3: Padding<*mut c_void>, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, } pub struct msghdr { @@ -342,13 +342,13 @@ s! { pub struct timespec { pub tv_sec: time_t, #[cfg(all(gnu_time_bits64, target_endian = "big"))] - __pad: i32, + __pad: Padding, #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))] pub tv_nsec: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] pub tv_nsec: i64, #[cfg(all(gnu_time_bits64, target_endian = "little"))] - __pad: i32, + __pad: Padding, } pub struct utmpx { diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index 625c8e7f110c0..3a757ee8d2028 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -90,11 +90,11 @@ e! { c_enum! { pub enum pid_type { - PIDTYPE_PID, - PIDTYPE_TGID, - PIDTYPE_PGID, - PIDTYPE_SID, - PIDTYPE_MAX, + pub PIDTYPE_PID, + pub PIDTYPE_TGID, + pub PIDTYPE_PGID, + pub PIDTYPE_SID, + pub PIDTYPE_MAX, } } @@ -105,11 +105,11 @@ s! { 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, + __unused1: Padding<*mut c_void>, + __unused2: Padding<*mut c_void>, + __unused3: Padding<*mut c_void>, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, } pub struct passwd { @@ -164,11 +164,11 @@ s! { pub ssi_stime: u64, pub ssi_addr: u64, pub ssi_addr_lsb: u16, - _pad2: u16, + _pad2: Padding, pub ssi_syscall: i32, pub ssi_call_addr: u64, pub ssi_arch: u32, - _pad: [u8; 28], + _pad: Padding<[u8; 28]>, } pub struct itimerspec { @@ -643,7 +643,7 @@ s! { __allocated: c_int, __used: c_int, __actions: *mut c_int, - __pad: [c_int; 16], + __pad: Padding<[c_int; 16]>, } pub struct posix_spawnattr_t { @@ -656,7 +656,7 @@ s! { #[cfg(not(any(target_env = "musl", target_env = "ohos")))] __sp: crate::sched_param, __policy: c_int, - __pad: [c_int; 16], + __pad: Padding<[c_int; 16]>, } pub struct genlmsghdr { @@ -1369,7 +1369,7 @@ s! { pub struct sockaddr_nl { pub nl_family: crate::sa_family_t, - nl_pad: c_ushort, + nl_pad: Padding, pub nl_pid: u32, pub nl_groups: u32, } @@ -4233,22 +4233,22 @@ pub const RTNLGRP_STATS: c_uint = 0x24; // linux/cn_proc.h c_enum! { pub enum proc_cn_mcast_op { - PROC_CN_MCAST_LISTEN = 1, - PROC_CN_MCAST_IGNORE = 2, + pub PROC_CN_MCAST_LISTEN = 1, + pub PROC_CN_MCAST_IGNORE = 2, } pub enum proc_cn_event { - PROC_EVENT_NONE = 0x00000000, - PROC_EVENT_FORK = 0x00000001, - PROC_EVENT_EXEC = 0x00000002, - PROC_EVENT_UID = 0x00000004, - PROC_EVENT_GID = 0x00000040, - PROC_EVENT_SID = 0x00000080, - PROC_EVENT_PTRACE = 0x00000100, - PROC_EVENT_COMM = 0x00000200, - PROC_EVENT_NONZERO_EXIT = 0x20000000, - PROC_EVENT_COREDUMP = 0x40000000, - PROC_EVENT_EXIT = 0x80000000, + pub PROC_EVENT_NONE = 0x00000000, + pub PROC_EVENT_FORK = 0x00000001, + pub PROC_EVENT_EXEC = 0x00000002, + pub PROC_EVENT_UID = 0x00000004, + pub PROC_EVENT_GID = 0x00000040, + pub PROC_EVENT_SID = 0x00000080, + pub PROC_EVENT_PTRACE = 0x00000100, + pub PROC_EVENT_COMM = 0x00000200, + pub PROC_EVENT_NONZERO_EXIT = 0x20000000, + pub PROC_EVENT_COREDUMP = 0x40000000, + pub PROC_EVENT_EXIT = 0x80000000, } } @@ -5840,17 +5840,6 @@ cfg_if! { newattr: *const crate::mq_attr, oldattr: *mut crate::mq_attr, ) -> c_int; - - pub fn pthread_mutex_consistent(mutex: *mut pthread_mutex_t) -> c_int; - pub fn pthread_cancel(thread: crate::pthread_t) -> c_int; - pub fn pthread_mutexattr_getrobust( - attr: *const pthread_mutexattr_t, - robustness: *mut c_int, - ) -> c_int; - pub fn pthread_mutexattr_setrobust( - attr: *mut pthread_mutexattr_t, - robustness: c_int, - ) -> c_int; } } } @@ -6005,17 +5994,6 @@ extern "C" { len: *mut crate::socklen_t, flg: c_int, ) -> c_int; - pub fn pthread_getaffinity_np( - thread: crate::pthread_t, - cpusetsize: size_t, - cpuset: *mut crate::cpu_set_t, - ) -> c_int; - pub fn pthread_setaffinity_np( - thread: crate::pthread_t, - cpusetsize: size_t, - cpuset: *const crate::cpu_set_t, - ) -> c_int; - pub fn pthread_setschedprio(native: crate::pthread_t, priority: c_int) -> c_int; pub fn reboot(how_to: c_int) -> c_int; pub fn setfsgid(gid: crate::gid_t) -> c_int; pub fn setfsuid(uid: crate::uid_t) -> c_int; @@ -6102,11 +6080,6 @@ extern "C" { timeout: c_int, ) -> c_int; pub fn epoll_ctl(epfd: c_int, op: c_int, fd: c_int, event: *mut crate::epoll_event) -> c_int; - pub fn pthread_getschedparam( - native: crate::pthread_t, - policy: *mut c_int, - param: *mut crate::sched_param, - ) -> c_int; pub fn unshare(flags: c_int) -> c_int; pub fn umount(target: *const c_char) -> c_int; pub fn sched_get_priority_max(policy: c_int) -> c_int; @@ -6121,7 +6094,7 @@ extern "C" { len: size_t, flags: c_uint, ) -> ssize_t; - pub fn eventfd(init: c_uint, flags: c_int) -> c_int; + pub fn eventfd(initval: c_uint, flags: c_int) -> c_int; pub fn eventfd_read(fd: c_int, value: *mut eventfd_t) -> c_int; pub fn eventfd_write(fd: c_int, value: eventfd_t) -> c_int; @@ -6153,39 +6126,7 @@ extern "C" { timeout: *const crate::timespec, sigmask: *const sigset_t, ) -> c_int; - pub fn pthread_mutexattr_getprotocol( - attr: *const pthread_mutexattr_t, - protocol: *mut c_int, - ) -> c_int; - pub fn pthread_mutexattr_setprotocol(attr: *mut pthread_mutexattr_t, protocol: c_int) -> c_int; - #[cfg_attr(gnu_time_bits64, link_name = "__pthread_mutex_timedlock64")] - pub fn pthread_mutex_timedlock( - lock: *mut pthread_mutex_t, - abstime: *const crate::timespec, - ) -> c_int; - pub fn pthread_barrierattr_init(attr: *mut crate::pthread_barrierattr_t) -> c_int; - pub fn pthread_barrierattr_destroy(attr: *mut crate::pthread_barrierattr_t) -> c_int; - pub fn pthread_barrierattr_getpshared( - attr: *const crate::pthread_barrierattr_t, - shared: *mut c_int, - ) -> c_int; - pub fn pthread_barrierattr_setpshared( - attr: *mut crate::pthread_barrierattr_t, - shared: c_int, - ) -> c_int; - pub fn pthread_barrier_init( - barrier: *mut pthread_barrier_t, - attr: *const crate::pthread_barrierattr_t, - count: c_uint, - ) -> c_int; - pub fn pthread_barrier_destroy(barrier: *mut pthread_barrier_t) -> c_int; - pub fn pthread_barrier_wait(barrier: *mut pthread_barrier_t) -> c_int; - pub fn pthread_spin_init(lock: *mut crate::pthread_spinlock_t, pshared: c_int) -> c_int; - pub fn pthread_spin_destroy(lock: *mut crate::pthread_spinlock_t) -> c_int; - pub fn pthread_spin_lock(lock: *mut crate::pthread_spinlock_t) -> c_int; - pub fn pthread_spin_trylock(lock: *mut crate::pthread_spinlock_t) -> c_int; - pub fn pthread_spin_unlock(lock: *mut crate::pthread_spinlock_t) -> c_int; pub fn clone( cb: extern "C" fn(*mut c_void) -> c_int, child_stack: *mut c_void, @@ -6201,45 +6142,10 @@ extern "C" { rqtp: *const crate::timespec, rmtp: *mut crate::timespec, ) -> c_int; - pub fn pthread_attr_getguardsize( - attr: *const crate::pthread_attr_t, - guardsize: *mut size_t, - ) -> c_int; - pub fn pthread_attr_setguardsize(attr: *mut crate::pthread_attr_t, guardsize: size_t) -> c_int; - pub fn pthread_attr_getinheritsched( - attr: *const crate::pthread_attr_t, - inheritsched: *mut c_int, - ) -> c_int; - pub fn pthread_attr_setinheritsched( - attr: *mut crate::pthread_attr_t, - inheritsched: c_int, - ) -> c_int; - pub fn pthread_attr_getschedpolicy( - attr: *const crate::pthread_attr_t, - policy: *mut c_int, - ) -> c_int; - pub fn pthread_attr_setschedpolicy(attr: *mut crate::pthread_attr_t, policy: c_int) -> c_int; - pub fn pthread_attr_getschedparam( - attr: *const crate::pthread_attr_t, - param: *mut crate::sched_param, - ) -> c_int; - pub fn pthread_attr_setschedparam( - attr: *mut crate::pthread_attr_t, - param: *const crate::sched_param, - ) -> c_int; pub fn sethostname(name: *const c_char, len: size_t) -> c_int; pub fn sched_get_priority_min(policy: c_int) -> c_int; - pub fn pthread_condattr_getpshared( - attr: *const pthread_condattr_t, - pshared: *mut c_int, - ) -> c_int; pub fn sysinfo(info: *mut crate::sysinfo) -> c_int; pub fn umount2(target: *const c_char, flags: c_int) -> c_int; - pub fn pthread_setschedparam( - native: crate::pthread_t, - policy: c_int, - param: *const crate::sched_param, - ) -> c_int; pub fn swapon(path: *const c_char, swapflags: c_int) -> c_int; pub fn sched_setscheduler( pid: crate::pid_t, @@ -6267,10 +6173,8 @@ extern "C" { result: *mut *mut crate::group, ) -> c_int; pub fn initgroups(user: *const c_char, group: crate::gid_t) -> c_int; - pub fn pthread_sigmask(how: c_int, set: *const sigset_t, oldset: *mut sigset_t) -> c_int; pub fn sem_open(name: *const c_char, oflag: c_int, ...) -> *mut sem_t; pub fn getgrnam(name: *const c_char) -> *mut crate::group; - pub fn pthread_kill(thread: crate::pthread_t, sig: c_int) -> c_int; pub fn sem_unlink(name: *const c_char) -> c_int; pub fn daemon(nochdir: c_int, noclose: c_int) -> c_int; pub fn getpwnam_r( @@ -6288,11 +6192,6 @@ extern "C" { result: *mut *mut passwd, ) -> c_int; pub fn sigwait(set: *const sigset_t, sig: *mut c_int) -> c_int; - pub fn pthread_atfork( - prepare: Option, - parent: Option, - child: Option, - ) -> c_int; pub fn getgrgid(gid: crate::gid_t) -> *mut crate::group; pub fn getgrouplist( user: *const c_char, @@ -6300,18 +6199,8 @@ extern "C" { groups: *mut crate::gid_t, ngroups: *mut c_int, ) -> c_int; - pub fn pthread_mutexattr_getpshared( - attr: *const pthread_mutexattr_t, - pshared: *mut c_int, - ) -> c_int; pub fn popen(command: *const c_char, mode: *const c_char) -> *mut crate::FILE; pub fn faccessat(dirfd: c_int, pathname: *const c_char, mode: c_int, flags: c_int) -> c_int; - pub fn pthread_create( - native: *mut crate::pthread_t, - attr: *const crate::pthread_attr_t, - f: extern "C" fn(*mut c_void) -> *mut c_void, - value: *mut c_void, - ) -> c_int; pub fn dl_iterate_phdr( callback: Option< unsafe extern "C" fn( @@ -6464,7 +6353,6 @@ extern "C" { pub fn gethostid() -> c_long; - pub fn pthread_getcpuclockid(thread: crate::pthread_t, clk_id: *mut crate::clockid_t) -> c_int; pub fn memmem( haystack: *const c_void, haystacklen: size_t, @@ -6473,8 +6361,6 @@ extern "C" { ) -> *mut c_void; pub fn sched_getcpu() -> c_int; - pub fn pthread_getname_np(thread: crate::pthread_t, name: *mut c_char, len: size_t) -> c_int; - pub fn pthread_setname_np(thread: crate::pthread_t, name: *const c_char) -> c_int; pub fn getopt_long( argc: c_int, argv: *const *mut c_char, @@ -6483,8 +6369,6 @@ extern "C" { longindex: *mut c_int, ) -> c_int; - pub fn pthread_once(control: *mut pthread_once_t, routine: extern "C" fn()) -> c_int; - pub fn copy_file_range( fd_in: c_int, off_in: *mut off64_t, diff --git a/src/unix/linux_like/linux/musl/b32/arm/mod.rs b/src/unix/linux_like/linux/musl/b32/arm/mod.rs index 02fe6d6294a47..8051e6cf8253b 100644 --- a/src/unix/linux_like/linux/musl/b32/arm/mod.rs +++ b/src/unix/linux_like/linux/musl/b32/arm/mod.rs @@ -70,41 +70,41 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: c_int, - __unused1: c_long, - __unused2: c_long, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { pub shm_perm: crate::ipc_perm, pub shm_segsz: size_t, pub shm_atime: crate::time_t, - __unused1: c_int, + __unused1: Padding, pub shm_dtime: crate::time_t, - __unused2: c_int, + __unused2: Padding, pub shm_ctime: crate::time_t, - __unused3: c_int, + __unused3: Padding, pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: c_ulong, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct msqid_ds { pub msg_perm: crate::ipc_perm, pub msg_stime: crate::time_t, - __unused1: c_int, + __unused1: Padding, pub msg_rtime: crate::time_t, - __unused2: c_int, + __unused2: Padding, pub msg_ctime: crate::time_t, - __unused3: c_int, + __unused3: Padding, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct mcontext_t { diff --git a/src/unix/linux_like/linux/musl/b32/hexagon.rs b/src/unix/linux_like/linux/musl/b32/hexagon.rs index 1c29114338adb..54bfbda97ed5c 100644 --- a/src/unix/linux_like/linux/musl/b32/hexagon.rs +++ b/src/unix/linux_like/linux/musl/b32/hexagon.rs @@ -24,7 +24,7 @@ s! { pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2], + __unused: Padding<[c_int; 2]>, } pub struct stack_t { @@ -55,33 +55,33 @@ s! { pub shm_perm: crate::ipc_perm, pub shm_segsz: size_t, pub shm_atime: crate::time_t, - __unused1: c_int, + __unused1: Padding, pub shm_dtime: crate::time_t, - __unused2: c_int, + __unused2: Padding, pub shm_ctime: crate::time_t, - __unused3: c_int, + __unused3: Padding, pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: c_ulong, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct msqid_ds { pub msg_perm: crate::ipc_perm, pub msg_stime: crate::time_t, - __unused1: c_int, + __unused1: Padding, pub msg_rtime: crate::time_t, - __unused2: c_int, + __unused2: Padding, pub msg_ctime: crate::time_t, - __unused3: c_int, + __unused3: Padding, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } } diff --git a/src/unix/linux_like/linux/musl/b32/mips/mod.rs b/src/unix/linux_like/linux/musl/b32/mips/mod.rs index d8c3ee9d54736..d563c5e420a12 100644 --- a/src/unix/linux_like/linux/musl/b32/mips/mod.rs +++ b/src/unix/linux_like/linux/musl/b32/mips/mod.rs @@ -6,14 +6,14 @@ pub type wchar_t = c_int; s! { pub struct stat { pub st_dev: crate::dev_t, - __st_padding1: [c_long; 2], + __st_padding1: Padding<[c_long; 2]>, pub st_ino: crate::ino_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __st_padding2: [c_long; 2], + __st_padding2: Padding<[c_long; 2]>, pub st_size: off_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -22,21 +22,21 @@ s! { pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, - __st_padding3: c_long, + __st_padding3: Padding, pub st_blocks: crate::blkcnt_t, - __st_padding4: [c_long; 14], + __st_padding4: Padding<[c_long; 14]>, } pub struct stat64 { pub st_dev: crate::dev_t, - __st_padding1: [c_long; 2], + __st_padding1: Padding<[c_long; 2]>, pub st_ino: crate::ino64_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __st_padding2: [c_long; 2], + __st_padding2: Padding<[c_long; 2]>, pub st_size: off_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -45,9 +45,9 @@ s! { pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, - __st_padding3: c_long, + __st_padding3: Padding, pub st_blocks: crate::blkcnt64_t, - __st_padding4: [c_long; 14], + __st_padding4: Padding<[c_long; 14]>, } pub struct stack_t { @@ -72,8 +72,8 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: c_int, - __unused1: c_long, - __unused2: c_long, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -85,34 +85,34 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: c_ulong, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct msqid_ds { pub msg_perm: crate::ipc_perm, #[cfg(target_endian = "big")] - __unused1: c_int, + __unused1: Padding, pub msg_stime: crate::time_t, #[cfg(target_endian = "little")] - __unused1: c_int, + __unused1: Padding, #[cfg(target_endian = "big")] - __unused2: c_int, + __unused2: Padding, pub msg_rtime: crate::time_t, #[cfg(target_endian = "little")] - __unused2: c_int, + __unused2: Padding, #[cfg(target_endian = "big")] - __unused3: c_int, + __unused3: Padding, pub msg_ctime: crate::time_t, #[cfg(target_endian = "little")] - __unused3: c_int, + __unused3: Padding, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct statfs { diff --git a/src/unix/linux_like/linux/musl/b32/powerpc.rs b/src/unix/linux_like/linux/musl/b32/powerpc.rs index 60305b3041013..984c88b86d143 100644 --- a/src/unix/linux_like/linux/musl/b32/powerpc.rs +++ b/src/unix/linux_like/linux/musl/b32/powerpc.rs @@ -33,7 +33,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_long; 2], + __unused: Padding<[c_long; 2]>, } pub struct stat64 { @@ -54,7 +54,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_long; 2], + __unused: Padding<[c_long; 2]>, } pub struct stack_t { @@ -79,43 +79,43 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: c_int, - __pad1: c_int, - __pad2: c_longlong, - __pad3: c_longlong, + __pad1: Padding, + __pad2: Padding, + __pad3: Padding, } pub struct shmid_ds { pub shm_perm: crate::ipc_perm, - __unused1: c_int, + __unused1: Padding, pub shm_atime: crate::time_t, - __unused2: c_int, + __unused2: Padding, pub shm_dtime: crate::time_t, - __unused3: c_int, + __unused3: Padding, pub shm_ctime: crate::time_t, - __unused4: c_int, + __unused4: Padding, pub shm_segsz: size_t, pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: c_ulong, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct msqid_ds { pub msg_perm: crate::ipc_perm, - __unused1: c_int, + __unused1: Padding, pub msg_stime: crate::time_t, - __unused2: c_int, + __unused2: Padding, pub msg_rtime: crate::time_t, - __unused3: c_int, + __unused3: Padding, pub msg_ctime: crate::time_t, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } } diff --git a/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs b/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs index 04ecf1b46c42d..4237c579a1a7f 100644 --- a/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs +++ b/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs @@ -28,7 +28,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2usize], + __unused: Padding<[c_int; 2usize]>, } pub struct stat64 { @@ -50,7 +50,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2], + __unused: Padding<[c_int; 2]>, } pub struct stack_t { @@ -66,11 +66,11 @@ s! { pub cuid: crate::uid_t, pub cgid: crate::gid_t, pub mode: c_ushort, - __pad1: c_ushort, + __pad1: Padding, pub __seq: c_ushort, - __pad2: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad2: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -82,25 +82,25 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused5: c_ulong, - __unused6: c_ulong, + __unused5: Padding, + __unused6: Padding, } pub struct msqid_ds { pub msg_perm: crate::ipc_perm, pub msg_stime: crate::time_t, - __unused1: c_int, + __unused1: Padding, pub msg_rtime: crate::time_t, - __unused2: c_int, + __unused2: Padding, pub msg_ctime: crate::time_t, - __unused3: c_int, + __unused3: Padding, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } } diff --git a/src/unix/linux_like/linux/musl/b32/x86/mod.rs b/src/unix/linux_like/linux/musl/b32/x86/mod.rs index 5b7a3e8d10984..c51614240dbc3 100644 --- a/src/unix/linux_like/linux/musl/b32/x86/mod.rs +++ b/src/unix/linux_like/linux/musl/b32/x86/mod.rs @@ -74,41 +74,41 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: c_int, - __unused1: c_long, - __unused2: c_long, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { pub shm_perm: crate::ipc_perm, pub shm_segsz: size_t, pub shm_atime: crate::time_t, - __unused1: c_int, + __unused1: Padding, pub shm_dtime: crate::time_t, - __unused2: c_int, + __unused2: Padding, pub shm_ctime: crate::time_t, - __unused3: c_int, + __unused3: Padding, pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: c_ulong, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct msqid_ds { pub msg_perm: crate::ipc_perm, pub msg_stime: crate::time_t, - __unused1: c_int, + __unused1: Padding, pub msg_rtime: crate::time_t, - __unused2: c_int, + __unused2: Padding, pub msg_ctime: crate::time_t, - __unused3: c_int, + __unused3: Padding, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct user_fpxregs_struct { @@ -121,7 +121,7 @@ s! { pub foo: c_long, pub fos: c_long, pub mxcsr: c_long, - __reserved: c_long, + __reserved: Padding, pub st_space: [c_long; 32], pub xmm_space: [c_long; 32], padding: [c_long; 56], diff --git a/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs b/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs index 087e39001e84f..cc52a179e7203 100644 --- a/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs +++ b/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs @@ -16,10 +16,10 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad0: c_ulong, + __pad0: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, - __pad1: c_int, + __pad1: Padding, pub st_blocks: crate::blkcnt_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -27,7 +27,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_uint; 2], + __unused: Padding<[c_uint; 2]>, } pub struct stat64 { @@ -38,10 +38,10 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad0: c_ulong, + __pad0: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, - __pad1: c_int, + __pad1: Padding, pub st_blocks: crate::blkcnt_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -49,7 +49,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_uint; 2], + __unused: Padding<[c_uint; 2]>, } pub struct user_regs_struct { @@ -84,8 +84,8 @@ s! { we'll follow that change in the future release." )] pub __seq: c_ushort, - __unused1: c_long, - __unused2: c_long, + __unused1: Padding, + __unused2: Padding, } pub struct ucontext_t { @@ -103,7 +103,7 @@ s! { pub sp: c_ulong, pub pc: c_ulong, pub pstate: c_ulong, - __reserved: [u64; 512], + __reserved: Padding<[u64; 512]>, } #[repr(align(8))] diff --git a/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs b/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs index c151b0ec32046..e973370a80c88 100644 --- a/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs +++ b/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs @@ -22,10 +22,10 @@ s! { pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad1: crate::dev_t, + __pad1: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, - __pad2: c_int, + __pad2: Padding, pub st_blocks: crate::blkcnt_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -33,7 +33,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2usize], + __unused: Padding<[c_int; 2usize]>, } pub struct stat64 { @@ -55,7 +55,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2], + __unused: Padding<[c_int; 2]>, } pub struct ipc_perm { @@ -66,8 +66,8 @@ s! { pub cgid: crate::gid_t, pub mode: c_uint, pub __seq: c_int, - __unused1: c_ulong, - __unused2: c_ulong, + __unused1: Padding, + __unused2: Padding, } pub struct user_regs_struct { diff --git a/src/unix/linux_like/linux/musl/b64/mips64.rs b/src/unix/linux_like/linux/musl/b64/mips64.rs index 4d40637c0cb99..9626e3db78b8e 100644 --- a/src/unix/linux_like/linux/musl/b64/mips64.rs +++ b/src/unix/linux_like/linux/musl/b64/mips64.rs @@ -10,16 +10,16 @@ pub type blksize_t = i64; s! { pub struct stat { pub st_dev: crate::dev_t, - __pad1: [c_int; 3], + __pad1: Padding<[c_int; 3]>, pub st_ino: crate::ino_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad2: [c_uint; 2], + __pad2: Padding<[c_uint; 2]>, pub st_size: off_t, - __pad3: c_int, + __pad3: Padding, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, pub st_mtime: crate::time_t, @@ -27,23 +27,23 @@ s! { pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, - __pad4: c_uint, + __pad4: Padding, pub st_blocks: crate::blkcnt_t, - __pad5: [c_int; 14], + __pad5: Padding<[c_int; 14]>, } pub struct stat64 { pub st_dev: crate::dev_t, - __pad1: [c_int; 3], + __pad1: Padding<[c_int; 3]>, pub st_ino: crate::ino_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - __pad2: [c_uint; 2], + __pad2: Padding<[c_uint; 2]>, pub st_size: off_t, - __pad3: c_int, + __pad3: Padding, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, pub st_mtime: crate::time_t, @@ -51,9 +51,9 @@ s! { pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, - __pad4: c_uint, + __pad4: Padding, pub st_blocks: crate::blkcnt_t, - __pad5: [c_int; 14], + __pad5: Padding<[c_int; 14]>, } pub struct stack_t { @@ -78,9 +78,9 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: c_int, - __pad1: c_int, - __unused1: c_ulong, - __unused2: c_ulong, + __pad1: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct statfs { diff --git a/src/unix/linux_like/linux/musl/b64/mod.rs b/src/unix/linux_like/linux/musl/b64/mod.rs index 35545402d11d1..6365dbece4578 100644 --- a/src/unix/linux_like/linux/musl/b64/mod.rs +++ b/src/unix/linux_like/linux/musl/b64/mod.rs @@ -30,8 +30,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: c_ulong, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct msqid_ds { @@ -44,8 +44,8 @@ s! { pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __pad1: c_ulong, - __pad2: c_ulong, + __pad1: Padding, + __pad2: Padding, } pub struct sem_t { diff --git a/src/unix/linux_like/linux/musl/b64/powerpc64.rs b/src/unix/linux_like/linux/musl/b64/powerpc64.rs index 34d56192a585a..dbf20c565e438 100644 --- a/src/unix/linux_like/linux/musl/b64/powerpc64.rs +++ b/src/unix/linux_like/linux/musl/b64/powerpc64.rs @@ -26,7 +26,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - __pad0: c_int, + __pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_blksize: crate::blksize_t, @@ -37,7 +37,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_long; 3], + __unused: Padding<[c_long; 3]>, } pub struct stat64 { @@ -47,7 +47,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - __pad0: c_int, + __pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_blksize: crate::blksize_t, @@ -58,7 +58,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __reserved: [c_long; 3], + __reserved: Padding<[c_long; 3]>, } pub struct shmid_ds { @@ -70,7 +70,7 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: c_ulong, - __unused: [c_ulong; 2], + __unused: Padding<[c_ulong; 2]>, } pub struct ipc_perm { @@ -89,8 +89,8 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: c_int, - __unused1: c_long, - __unused2: c_long, + __unused1: Padding, + __unused2: Padding, } } diff --git a/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs index 29e950cc372f9..b987f8358b365 100644 --- a/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs +++ b/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs @@ -33,7 +33,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2usize], + __unused: Padding<[c_int; 2usize]>, } pub struct stat64 { @@ -55,7 +55,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_int; 2], + __unused: Padding<[c_int; 2]>, } pub struct ipc_perm { @@ -65,11 +65,11 @@ s! { pub cuid: crate::uid_t, pub cgid: crate::gid_t, pub mode: c_ushort, - __pad1: c_ushort, + __pad1: Padding, pub __seq: c_ushort, - __pad2: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad2: Padding, + __unused1: Padding, + __unused2: Padding, } #[repr(align(8))] diff --git a/src/unix/linux_like/linux/musl/b64/s390x.rs b/src/unix/linux_like/linux/musl/b64/s390x.rs index c0332205a7948..a7c4cb5d95f9c 100644 --- a/src/unix/linux_like/linux/musl/b64/s390x.rs +++ b/src/unix/linux_like/linux/musl/b64/s390x.rs @@ -26,8 +26,8 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: c_int, - __pad1: c_long, - __pad2: c_long, + __pad1: Padding, + __pad2: Padding, } pub struct stat { @@ -47,7 +47,7 @@ s! { pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, - __unused: [c_long; 3], + __unused: Padding<[c_long; 3]>, } pub struct stat64 { @@ -67,7 +67,7 @@ s! { pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt64_t, - __unused: [c_long; 3], + __unused: Padding<[c_long; 3]>, } pub struct statfs { diff --git a/src/unix/linux_like/linux/musl/b64/wasm32/mod.rs b/src/unix/linux_like/linux/musl/b64/wasm32/mod.rs index 903bd48a37323..d4d0fe69839b3 100644 --- a/src/unix/linux_like/linux/musl/b64/wasm32/mod.rs +++ b/src/unix/linux_like/linux/musl/b64/wasm32/mod.rs @@ -17,7 +17,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - __pad0: c_int, + __pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_blksize: crate::blksize_t, @@ -28,7 +28,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_long; 3], + __unused: Padding<[c_long; 3]>, } pub struct stat64 { @@ -38,7 +38,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - __pad0: c_int, + __pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_blksize: crate::blksize_t, @@ -49,7 +49,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __reserved: [c_long; 3], + __reserved: Padding<[c_long; 3]>, } pub struct ipc_perm { @@ -68,8 +68,8 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: c_int, - __unused1: c_long, - __unused2: c_long, + __unused1: Padding, + __unused2: Padding, } } diff --git a/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs b/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs index 2ad8eb774ded8..364e16b5c9257 100644 --- a/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs +++ b/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs @@ -16,7 +16,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - __pad0: c_int, + __pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_blksize: crate::blksize_t, @@ -27,7 +27,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused: [c_long; 3], + __unused: Padding<[c_long; 3]>, } pub struct stat64 { @@ -37,7 +37,7 @@ s! { pub st_mode: crate::mode_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, - __pad0: c_int, + __pad0: Padding, pub st_rdev: crate::dev_t, pub st_size: off_t, pub st_blksize: crate::blksize_t, @@ -48,7 +48,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __reserved: [c_long; 3], + __reserved: Padding<[c_long; 3]>, } pub struct user_regs_struct { @@ -91,12 +91,12 @@ s! { pub start_code: c_ulong, pub start_stack: c_ulong, pub signal: c_long, - __reserved: c_int, + __reserved: Padding, #[cfg(target_pointer_width = "32")] - __pad1: u32, + __pad1: Padding, pub u_ar0: *mut user_regs_struct, #[cfg(target_pointer_width = "32")] - __pad2: u32, + __pad2: Padding, pub u_fpstate: *mut user_fpregs_struct, pub magic: c_ulong, pub u_comm: [c_char; 32], @@ -127,8 +127,8 @@ s! { pub cgid: crate::gid_t, pub mode: crate::mode_t, pub __seq: c_int, - __unused1: c_long, - __unused2: c_long, + __unused1: Padding, + __unused2: Padding, } #[repr(align(8))] diff --git a/src/unix/linux_like/linux/musl/mod.rs b/src/unix/linux_like/linux/musl/mod.rs index c835ddbde2992..e3f58b4ebf149 100644 --- a/src/unix/linux_like/linux/musl/mod.rs +++ b/src/unix/linux_like/linux/musl/mod.rs @@ -185,7 +185,7 @@ s! { #[cfg(target_endian = "little")] pub f_fsid: c_ulong, #[cfg(target_pointer_width = "32")] - __pad: c_int, + __pad: Padding, #[cfg(target_endian = "big")] pub f_fsid: c_ulong, pub f_flag: c_ulong, @@ -205,7 +205,7 @@ s! { #[cfg(target_endian = "little")] pub f_fsid: c_ulong, #[cfg(target_pointer_width = "32")] - __pad: c_int, + __pad: Padding, #[cfg(target_endian = "big")] pub f_fsid: c_ulong, pub f_flag: c_ulong, @@ -245,7 +245,7 @@ s! { pub struct regex_t { __re_nsub: size_t, __opaque: *mut c_void, - __padding: [*mut c_void; 4usize], + __padding: Padding<[*mut c_void; 4usize]>, __nsub2: size_t, __padding2: c_char, } @@ -435,7 +435,7 @@ s! { pub struct utmpx { pub ut_type: c_short, - __ut_pad1: c_short, + __ut_pad1: Padding, pub ut_pid: crate::pid_t, pub ut_line: [c_char; 32], pub ut_id: [c_char; 4], @@ -453,18 +453,18 @@ s! { #[cfg(musl_v1_2_3)] #[cfg(not(target_endian = "little"))] - __ut_pad2: c_int, + __ut_pad2: Padding, #[cfg(musl_v1_2_3)] pub ut_session: c_int, #[cfg(musl_v1_2_3)] #[cfg(target_endian = "little")] - __ut_pad2: c_int, + __ut_pad2: Padding, pub ut_tv: crate::timeval, pub ut_addr_v6: [c_uint; 4], - __unused: [c_char; 20], + __unused: Padding<[c_char; 20]>, } } diff --git a/src/unix/linux_like/linux/uclibc/arm/mod.rs b/src/unix/linux_like/linux/uclibc/arm/mod.rs index c54d77b194c48..7052d9daac2d2 100644 --- a/src/unix/linux_like/linux/uclibc/arm/mod.rs +++ b/src/unix/linux_like/linux/uclibc/arm/mod.rs @@ -44,14 +44,14 @@ s! { pub struct stat { pub st_dev: c_ulonglong, - __pad1: c_ushort, + __pad1: Padding, pub st_ino: crate::ino_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: c_ulonglong, - __pad2: c_ushort, + __pad2: Padding, pub st_size: off_t, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, @@ -61,8 +61,8 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } pub struct stat64 { @@ -203,44 +203,44 @@ s! { pub cuid: crate::uid_t, pub cgid: crate::gid_t, pub mode: c_ushort, - __pad1: c_ushort, + __pad1: Padding, pub __seq: c_ushort, - __pad2: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad2: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct msqid_ds { pub msg_perm: crate::ipc_perm, pub msg_stime: crate::time_t, - __unused1: c_ulong, + __unused1: Padding, pub msg_rtime: crate::time_t, - __unused2: c_ulong, + __unused2: Padding, pub msg_ctime: crate::time_t, - __unused3: c_ulong, + __unused3: Padding, pub __msg_cbytes: c_ulong, pub msg_qnum: crate::msgqnum_t, pub msg_qbytes: crate::msglen_t, pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } pub struct shmid_ds { pub shm_perm: crate::ipc_perm, pub shm_segsz: size_t, pub shm_atime: crate::time_t, - __unused1: c_ulong, + __unused1: Padding, pub shm_dtime: crate::time_t, - __unused2: c_ulong, + __unused2: Padding, pub shm_ctime: crate::time_t, - __unused3: c_ulong, + __unused3: Padding, pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } // FIXME(1.0) this is actually a union diff --git a/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs b/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs index 7dd0440907855..56137bdc38e6d 100644 --- a/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs +++ b/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs @@ -20,7 +20,7 @@ pub type fsfilcnt64_t = u64; s! { pub struct stat { pub st_dev: crate::dev_t, - st_pad1: [c_long; 2], + st_pad1: Padding<[c_long; 2]>, pub st_ino: crate::ino_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, @@ -29,7 +29,7 @@ s! { pub st_rdev: crate::dev_t, pub st_pad2: [c_long; 1], pub st_size: off_t, - st_pad3: c_long, + st_pad3: Padding, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, pub st_mtime: crate::time_t, @@ -38,19 +38,19 @@ s! { pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, pub st_blocks: crate::blkcnt_t, - st_pad5: [c_long; 14], + st_pad5: Padding<[c_long; 14]>, } pub struct stat64 { pub st_dev: crate::dev_t, - st_pad1: [c_long; 2], + st_pad1: Padding<[c_long; 2]>, pub st_ino: crate::ino64_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: crate::dev_t, - st_pad2: [c_long; 2], + st_pad2: Padding<[c_long; 2]>, pub st_size: off64_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -59,9 +59,9 @@ s! { pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, - st_pad3: c_long, + st_pad3: Padding, pub st_blocks: crate::blkcnt64_t, - st_pad5: [c_long; 14], + st_pad5: Padding<[c_long; 14]>, } pub struct statvfs64 { @@ -114,11 +114,11 @@ s! { 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, + __unused1: Padding<*mut c_void>, + __unused2: Padding<*mut c_void>, + __unused3: Padding<*mut c_void>, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, } pub struct ipc_perm { @@ -129,9 +129,9 @@ s! { pub cgid: crate::gid_t, pub mode: c_uint, pub __seq: c_ushort, - __pad1: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad1: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -143,8 +143,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } pub struct msqid_ds { diff --git a/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs b/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs index 39eb0242730d8..b6adb637493bb 100644 --- a/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs +++ b/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs @@ -15,16 +15,16 @@ pub type wchar_t = i32; s! { pub struct stat { pub st_dev: c_ulong, - st_pad1: [c_long; 2], + st_pad1: Padding<[c_long; 2]>, pub st_ino: crate::ino_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: c_ulong, - st_pad2: [c_ulong; 1], + st_pad2: Padding<[c_ulong; 1]>, pub st_size: off_t, - st_pad3: c_long, + st_pad3: Padding, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, pub st_mtime: crate::time_t, @@ -32,21 +32,21 @@ s! { pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, - st_pad4: c_long, + st_pad4: Padding, pub st_blocks: crate::blkcnt_t, - st_pad5: [c_long; 7], + st_pad5: Padding<[c_long; 7]>, } pub struct stat64 { pub st_dev: c_ulong, - st_pad1: [c_long; 2], + st_pad1: Padding<[c_long; 2]>, pub st_ino: crate::ino64_t, pub st_mode: crate::mode_t, pub st_nlink: crate::nlink_t, pub st_uid: crate::uid_t, pub st_gid: crate::gid_t, pub st_rdev: c_ulong, - st_pad2: [c_long; 2], + st_pad2: Padding<[c_long; 2]>, pub st_size: off64_t, pub st_atime: crate::time_t, pub st_atime_nsec: c_long, @@ -55,9 +55,9 @@ s! { pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, pub st_blksize: crate::blksize_t, - st_pad3: c_long, + st_pad3: Padding, pub st_blocks: crate::blkcnt64_t, - st_pad5: [c_long; 7], + st_pad5: Padding<[c_long; 7]>, } pub struct pthread_attr_t { @@ -85,8 +85,8 @@ s! { pub si_signo: c_int, pub si_code: c_int, pub si_errno: c_int, - _pad: c_int, - _pad2: [c_long; 14], + _pad: Padding, + _pad2: Padding<[c_long; 14]>, } pub struct ipc_perm { @@ -97,9 +97,9 @@ s! { pub cgid: crate::gid_t, pub mode: c_uint, pub __seq: c_ushort, - __pad1: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad1: Padding, + __unused1: Padding, + __unused2: Padding, } pub struct shmid_ds { @@ -111,8 +111,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused4: c_ulong, - __unused5: c_ulong, + __unused4: Padding, + __unused5: Padding, } pub struct msqid_ds { diff --git a/src/unix/linux_like/linux/uclibc/x86_64/mod.rs b/src/unix/linux_like/linux/uclibc/x86_64/mod.rs index 1a2e4bcc1a897..ce6b192580f23 100644 --- a/src/unix/linux_like/linux/uclibc/x86_64/mod.rs +++ b/src/unix/linux_like/linux/uclibc/x86_64/mod.rs @@ -31,11 +31,11 @@ s! { pub cuid: crate::uid_t, pub cgid: crate::gid_t, pub mode: c_ushort, // read / write - __pad1: c_ushort, + __pad1: Padding, pub __seq: c_ushort, - __pad2: c_ushort, - __unused1: c_ulong, - __unused2: c_ulong, + __pad2: Padding, + __unused1: Padding, + __unused2: Padding, } #[cfg(not(target_os = "l4re"))] @@ -72,8 +72,8 @@ s! { pub shm_cpid: crate::pid_t, pub shm_lpid: crate::pid_t, pub shm_nattch: crate::shmatt_t, - __unused1: c_ulong, - __unused2: c_ulong, + __unused1: Padding, + __unused2: Padding, } pub struct msqid_ds { @@ -141,7 +141,7 @@ s! { pub st_mtime_nsec: c_ulong, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_ulong, - st_pad4: [c_long; 3], + st_pad4: Padding<[c_long; 3]>, } // FIXME(1.0): This should not implement `PartialEq` @@ -256,11 +256,11 @@ s! { 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, + __unused1: Padding<*mut c_void>, + __unused2: Padding<*mut c_void>, + __unused3: Padding<*mut c_void>, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, } pub struct cpu_set_t { diff --git a/src/unix/linux_like/mod.rs b/src/unix/linux_like/mod.rs index e79d2098bfcc0..c4ce06c92ec25 100644 --- a/src/unix/linux_like/mod.rs +++ b/src/unix/linux_like/mod.rs @@ -270,7 +270,7 @@ cfg_if! { pub stx_uid: crate::__u32, pub stx_gid: crate::__u32, pub stx_mode: crate::__u16, - __statx_pad1: [crate::__u16; 1], + __statx_pad1: Padding<[crate::__u16; 1]>, pub stx_ino: crate::__u64, pub stx_size: crate::__u64, pub stx_blocks: crate::__u64, @@ -286,13 +286,13 @@ cfg_if! { pub stx_mnt_id: crate::__u64, pub stx_dio_mem_align: crate::__u32, pub stx_dio_offset_align: crate::__u32, - __statx_pad3: [crate::__u64; 12], + __statx_pad3: Padding<[crate::__u64; 12]>, } pub struct statx_timestamp { pub tv_sec: crate::__s64, pub tv_nsec: crate::__u32, - __statx_timestamp_pad1: [crate::__s32; 1], + __statx_timestamp_pad1: Padding<[crate::__s32; 1]>, } } } @@ -316,9 +316,9 @@ s_no_extra_traits! { // the most useful member pub sigev_notify_thread_id: c_int, #[cfg(target_pointer_width = "64")] - __unused1: [c_int; 11], + __unused1: Padding<[c_int; 11]>, #[cfg(target_pointer_width = "32")] - __unused1: [c_int; 12], + __unused1: Padding<[c_int; 12]>, } } @@ -1843,17 +1843,6 @@ extern "C" { pub fn dirfd(dirp: *mut crate::DIR) -> c_int; - pub fn pthread_getattr_np(native: crate::pthread_t, attr: *mut crate::pthread_attr_t) -> c_int; - pub fn pthread_attr_getstack( - attr: *const crate::pthread_attr_t, - stackaddr: *mut *mut c_void, - stacksize: *mut size_t, - ) -> c_int; - pub fn pthread_attr_setstack( - attr: *mut crate::pthread_attr_t, - stackaddr: *mut c_void, - stacksize: size_t, - ) -> c_int; pub fn memalign(align: size_t, size: size_t) -> *mut c_void; pub fn setgroups(ngroups: size_t, ptr: *const crate::gid_t) -> c_int; pub fn pipe2(fds: *mut c_int, flags: c_int) -> c_int; @@ -1878,21 +1867,7 @@ extern "C" { pub fn newlocale(mask: c_int, locale: *const c_char, base: crate::locale_t) -> crate::locale_t; pub fn uselocale(loc: crate::locale_t) -> crate::locale_t; pub fn mknodat(dirfd: c_int, pathname: *const c_char, mode: mode_t, dev: dev_t) -> c_int; - pub fn pthread_condattr_getclock( - attr: *const pthread_condattr_t, - clock_id: *mut clockid_t, - ) -> c_int; - pub fn pthread_condattr_setclock( - attr: *mut pthread_condattr_t, - clock_id: crate::clockid_t, - ) -> c_int; - pub fn pthread_condattr_setpshared(attr: *mut pthread_condattr_t, pshared: c_int) -> c_int; - pub fn pthread_mutexattr_setpshared(attr: *mut pthread_mutexattr_t, pshared: c_int) -> c_int; - pub fn pthread_rwlockattr_getpshared( - attr: *const pthread_rwlockattr_t, - val: *mut c_int, - ) -> c_int; - pub fn pthread_rwlockattr_setpshared(attr: *mut pthread_rwlockattr_t, val: c_int) -> c_int; + pub fn ptsname_r(fd: c_int, buf: *mut c_char, buflen: size_t) -> c_int; pub fn clearenv() -> c_int; pub fn waitid( diff --git a/src/unix/mod.rs b/src/unix/mod.rs index 677788e9fc9ad..62b2cdee67f19 100644 --- a/src/unix/mod.rs +++ b/src/unix/mod.rs @@ -88,49 +88,49 @@ s! { pub ru_stime: timeval, pub ru_maxrss: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad1: u32, + __pad1: Padding, pub ru_ixrss: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad2: u32, + __pad2: Padding, pub ru_idrss: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad3: u32, + __pad3: Padding, pub ru_isrss: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad4: u32, + __pad4: Padding, pub ru_minflt: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad5: u32, + __pad5: Padding, pub ru_majflt: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad6: u32, + __pad6: Padding, pub ru_nswap: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad7: u32, + __pad7: Padding, pub ru_inblock: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad8: u32, + __pad8: Padding, pub ru_oublock: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad9: u32, + __pad9: Padding, pub ru_msgsnd: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad10: u32, + __pad10: Padding, pub ru_msgrcv: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad11: u32, + __pad11: Padding, pub ru_nsignals: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad12: u32, + __pad12: Padding, pub ru_nvcsw: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad13: u32, + __pad13: Padding, pub ru_nivcsw: c_long, #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))] - __pad14: u32, + __pad14: Padding, #[cfg(any(target_env = "musl", target_env = "ohos", target_os = "emscripten"))] - __reserved: [c_long; 16], + __reserved: Padding<[c_long; 16]>, } #[cfg(not(target_os = "nuttx"))] @@ -384,6 +384,7 @@ cfg_if! { target_os = "android", target_os = "openbsd", target_os = "netbsd", + target_os = "cygwin", ))] { pub const FNM_NOESCAPE: c_int = 1 << 0; } else if #[cfg(target_os = "nto")] { @@ -1265,94 +1266,100 @@ extern "C" { #[cfg_attr(target_os = "netbsd", link_name = "__libc_thr_yield")] pub fn sched_yield() -> c_int; pub fn pthread_key_create( - key: *mut pthread_key_t, + key: *mut crate::pthread_key_t, dtor: Option, ) -> c_int; - pub fn pthread_key_delete(key: pthread_key_t) -> c_int; - pub fn pthread_getspecific(key: pthread_key_t) -> *mut c_void; - pub fn pthread_setspecific(key: pthread_key_t, value: *const c_void) -> c_int; + pub fn pthread_key_delete(key: crate::pthread_key_t) -> c_int; + pub fn pthread_getspecific(key: crate::pthread_key_t) -> *mut c_void; + pub fn pthread_setspecific(key: crate::pthread_key_t, value: *const c_void) -> c_int; pub fn pthread_mutex_init( - lock: *mut pthread_mutex_t, - attr: *const pthread_mutexattr_t, + lock: *mut crate::pthread_mutex_t, + attr: *const crate::pthread_mutexattr_t, ) -> c_int; - pub fn pthread_mutex_destroy(lock: *mut pthread_mutex_t) -> c_int; - pub fn pthread_mutex_lock(lock: *mut pthread_mutex_t) -> c_int; - pub fn pthread_mutex_trylock(lock: *mut pthread_mutex_t) -> c_int; - pub fn pthread_mutex_unlock(lock: *mut pthread_mutex_t) -> c_int; + pub fn pthread_mutex_destroy(lock: *mut crate::pthread_mutex_t) -> c_int; + pub fn pthread_mutex_lock(lock: *mut crate::pthread_mutex_t) -> c_int; + pub fn pthread_mutex_trylock(lock: *mut crate::pthread_mutex_t) -> c_int; + pub fn pthread_mutex_unlock(lock: *mut crate::pthread_mutex_t) -> c_int; - pub fn pthread_mutexattr_init(attr: *mut pthread_mutexattr_t) -> c_int; + pub fn pthread_mutexattr_init(attr: *mut crate::pthread_mutexattr_t) -> c_int; #[cfg_attr( all(target_os = "macos", target_arch = "x86"), link_name = "pthread_mutexattr_destroy$UNIX2003" )] - pub fn pthread_mutexattr_destroy(attr: *mut pthread_mutexattr_t) -> c_int; - pub fn pthread_mutexattr_settype(attr: *mut pthread_mutexattr_t, _type: c_int) -> c_int; + pub fn pthread_mutexattr_destroy(attr: *mut crate::pthread_mutexattr_t) -> c_int; + pub fn pthread_mutexattr_settype(attr: *mut crate::pthread_mutexattr_t, _type: c_int) -> c_int; #[cfg_attr( all(target_os = "macos", target_arch = "x86"), link_name = "pthread_cond_init$UNIX2003" )] - pub fn pthread_cond_init(cond: *mut pthread_cond_t, attr: *const pthread_condattr_t) -> c_int; + pub fn pthread_cond_init( + cond: *mut crate::pthread_cond_t, + attr: *const crate::pthread_condattr_t, + ) -> c_int; #[cfg_attr( all(target_os = "macos", target_arch = "x86"), link_name = "pthread_cond_wait$UNIX2003" )] - pub fn pthread_cond_wait(cond: *mut pthread_cond_t, lock: *mut pthread_mutex_t) -> c_int; + pub fn pthread_cond_wait( + cond: *mut crate::pthread_cond_t, + lock: *mut crate::pthread_mutex_t, + ) -> c_int; #[cfg_attr( all(target_os = "macos", target_arch = "x86"), link_name = "pthread_cond_timedwait$UNIX2003" )] #[cfg_attr(gnu_time_bits64, link_name = "__pthread_cond_timedwait64")] pub fn pthread_cond_timedwait( - cond: *mut pthread_cond_t, - lock: *mut pthread_mutex_t, + cond: *mut crate::pthread_cond_t, + lock: *mut crate::pthread_mutex_t, abstime: *const crate::timespec, ) -> c_int; - pub fn pthread_cond_signal(cond: *mut pthread_cond_t) -> c_int; - pub fn pthread_cond_broadcast(cond: *mut pthread_cond_t) -> c_int; - pub fn pthread_cond_destroy(cond: *mut pthread_cond_t) -> c_int; - pub fn pthread_condattr_init(attr: *mut pthread_condattr_t) -> c_int; - pub fn pthread_condattr_destroy(attr: *mut pthread_condattr_t) -> c_int; + pub fn pthread_cond_signal(cond: *mut crate::pthread_cond_t) -> c_int; + pub fn pthread_cond_broadcast(cond: *mut crate::pthread_cond_t) -> c_int; + pub fn pthread_cond_destroy(cond: *mut crate::pthread_cond_t) -> c_int; + pub fn pthread_condattr_init(attr: *mut crate::pthread_condattr_t) -> c_int; + pub fn pthread_condattr_destroy(attr: *mut crate::pthread_condattr_t) -> c_int; #[cfg_attr( all(target_os = "macos", target_arch = "x86"), link_name = "pthread_rwlock_init$UNIX2003" )] pub fn pthread_rwlock_init( - lock: *mut pthread_rwlock_t, - attr: *const pthread_rwlockattr_t, + lock: *mut crate::pthread_rwlock_t, + attr: *const crate::pthread_rwlockattr_t, ) -> c_int; #[cfg_attr( all(target_os = "macos", target_arch = "x86"), link_name = "pthread_rwlock_destroy$UNIX2003" )] - pub fn pthread_rwlock_destroy(lock: *mut pthread_rwlock_t) -> c_int; + pub fn pthread_rwlock_destroy(lock: *mut crate::pthread_rwlock_t) -> c_int; #[cfg_attr( all(target_os = "macos", target_arch = "x86"), link_name = "pthread_rwlock_rdlock$UNIX2003" )] - pub fn pthread_rwlock_rdlock(lock: *mut pthread_rwlock_t) -> c_int; + pub fn pthread_rwlock_rdlock(lock: *mut crate::pthread_rwlock_t) -> c_int; #[cfg_attr( all(target_os = "macos", target_arch = "x86"), link_name = "pthread_rwlock_tryrdlock$UNIX2003" )] - pub fn pthread_rwlock_tryrdlock(lock: *mut pthread_rwlock_t) -> c_int; + pub fn pthread_rwlock_tryrdlock(lock: *mut crate::pthread_rwlock_t) -> c_int; #[cfg_attr( all(target_os = "macos", target_arch = "x86"), link_name = "pthread_rwlock_wrlock$UNIX2003" )] - pub fn pthread_rwlock_wrlock(lock: *mut pthread_rwlock_t) -> c_int; + pub fn pthread_rwlock_wrlock(lock: *mut crate::pthread_rwlock_t) -> c_int; #[cfg_attr( all(target_os = "macos", target_arch = "x86"), link_name = "pthread_rwlock_trywrlock$UNIX2003" )] - pub fn pthread_rwlock_trywrlock(lock: *mut pthread_rwlock_t) -> c_int; + pub fn pthread_rwlock_trywrlock(lock: *mut crate::pthread_rwlock_t) -> c_int; #[cfg_attr( all(target_os = "macos", target_arch = "x86"), link_name = "pthread_rwlock_unlock$UNIX2003" )] - pub fn pthread_rwlock_unlock(lock: *mut pthread_rwlock_t) -> c_int; - pub fn pthread_rwlockattr_init(attr: *mut pthread_rwlockattr_t) -> c_int; - pub fn pthread_rwlockattr_destroy(attr: *mut pthread_rwlockattr_t) -> c_int; + pub fn pthread_rwlock_unlock(lock: *mut crate::pthread_rwlock_t) -> c_int; + pub fn pthread_rwlockattr_init(attr: *mut crate::pthread_rwlockattr_t) -> c_int; + pub fn pthread_rwlockattr_destroy(attr: *mut crate::pthread_rwlockattr_t) -> c_int; #[cfg_attr( any(target_os = "illumos", target_os = "solaris"), diff --git a/src/unix/newlib/vita/mod.rs b/src/unix/newlib/vita/mod.rs index 62cd300e1d6f0..2a456f47363d9 100644 --- a/src/unix/newlib/vita/mod.rs +++ b/src/unix/newlib/vita/mod.rs @@ -82,7 +82,7 @@ s! { pub struct dirent { __offset: [u8; 88], pub d_name: [c_char; 256usize], - __pad: [u8; 8], + __pad: Padding<[u8; 8]>, } } diff --git a/src/unix/nto/mod.rs b/src/unix/nto/mod.rs index fa7745531787e..962e660f2bc16 100644 --- a/src/unix/nto/mod.rs +++ b/src/unix/nto/mod.rs @@ -316,11 +316,11 @@ s! { pub gl_flags: c_int, pub gl_errfunc: extern "C" fn(*const c_char, c_int) -> c_int, - __unused1: *mut c_void, - __unused2: *mut c_void, - __unused3: *mut c_void, - __unused4: *mut c_void, - __unused5: *mut c_void, + __unused1: Padding<*mut c_void>, + __unused2: Padding<*mut c_void>, + __unused3: Padding<*mut c_void>, + __unused4: Padding<*mut c_void>, + __unused5: Padding<*mut c_void>, } pub struct passwd { @@ -485,7 +485,7 @@ s! { pub c_cflag: crate::tcflag_t, pub c_lflag: crate::tcflag_t, pub c_cc: [crate::cc_t; crate::NCCS], - __reserved: [c_uint; 3], + __reserved: Padding<[c_uint; 3]>, pub c_ispeed: crate::speed_t, pub c_ospeed: crate::speed_t, } @@ -538,7 +538,7 @@ s! { pub aio_sigevent: crate::sigevent, pub aio_lio_opcode: c_int, pub _aio_lio_state: *mut c_void, - _aio_pad: [c_int; 3], + _aio_pad: Padding<[c_int; 3]>, pub _aio_next: *mut crate::aiocb, pub _aio_flag: c_uint, pub _aio_iotype: c_uint, @@ -593,7 +593,7 @@ s! { pub __prioceiling: c_int, pub __clockid: c_int, pub __count: c_int, - __reserved: [c_int; 3], + __reserved: Padding<[c_int; 3]>, } pub struct sockcred { @@ -679,9 +679,9 @@ s! { pub struct sockaddr_storage { pub ss_len: u8, pub ss_family: sa_family_t, - __ss_pad1: [c_char; 6], + __ss_pad1: Padding<[c_char; 6]>, __ss_align: i64, - __ss_pad2: [c_char; 112], + __ss_pad2: Padding<[c_char; 112]>, } pub struct utsname { @@ -752,7 +752,7 @@ s_no_extra_traits! { pub msg_type: c_long, pub msg_ts: c_ushort, pub msg_spot: c_short, - _pad: [u8; 4], + _pad: Padding<[u8; 4]>, } pub struct msqid_ds { @@ -765,12 +765,12 @@ s_no_extra_traits! { pub msg_lspid: crate::pid_t, pub msg_lrpid: crate::pid_t, pub msg_stime: crate::time_t, - msg_pad1: c_long, + msg_pad1: Padding, pub msg_rtime: crate::time_t, - msg_pad2: c_long, + msg_pad2: Padding, pub msg_ctime: crate::time_t, - msg_pad3: c_long, - msg_pad4: [c_long; 4], + msg_pad3: Padding, + msg_pad4: Padding<[c_long; 4]>, } pub struct sync_t { @@ -781,7 +781,7 @@ s_no_extra_traits! { #[repr(align(4))] pub struct pthread_barrier_t { // union - __pad: [u8; 28], // union + __pad: Padding<[u8; 28]>, // union } pub struct pthread_rwlock_t { @@ -3130,7 +3130,7 @@ impl siginfo_t { pub unsafe fn si_addr(&self) -> *mut c_void { #[repr(C)] struct siginfo_si_addr { - _pad: [u8; 32], + _pad: Padding<[u8; 32]>, si_addr: *mut c_void, } (*(self as *const siginfo_t as *const siginfo_si_addr)).si_addr @@ -3139,7 +3139,7 @@ impl siginfo_t { pub unsafe fn si_value(&self) -> crate::sigval { #[repr(C)] struct siginfo_si_value { - _pad: [u8; 32], + _pad: Padding<[u8; 32]>, si_value: crate::sigval, } (*(self as *const siginfo_t as *const siginfo_si_value)).si_value @@ -3148,7 +3148,7 @@ impl siginfo_t { pub unsafe fn si_pid(&self) -> crate::pid_t { #[repr(C)] struct siginfo_si_pid { - _pad: [u8; 16], + _pad: Padding<[u8; 16]>, si_pid: crate::pid_t, } (*(self as *const siginfo_t as *const siginfo_si_pid)).si_pid @@ -3157,7 +3157,7 @@ impl siginfo_t { pub unsafe fn si_uid(&self) -> crate::uid_t { #[repr(C)] struct siginfo_si_uid { - _pad: [u8; 24], + _pad: Padding<[u8; 24]>, si_uid: crate::uid_t, } (*(self as *const siginfo_t as *const siginfo_si_uid)).si_uid @@ -3166,7 +3166,7 @@ impl siginfo_t { pub unsafe fn si_status(&self) -> c_int { #[repr(C)] struct siginfo_si_status { - _pad: [u8; 28], + _pad: Padding<[u8; 28]>, si_status: c_int, } (*(self as *const siginfo_t as *const siginfo_si_status)).si_status diff --git a/src/unix/nto/neutrino.rs b/src/unix/nto/neutrino.rs index 8aac468009785..5d12d24047188 100644 --- a/src/unix/nto/neutrino.rs +++ b/src/unix/nto/neutrino.rs @@ -239,7 +239,7 @@ s_no_extra_traits! { pub pminfo: syspage_entry_info, pub old_mdriver: syspage_entry_info, spare0: [u32; 1], - __reserved: [u8; 160], // anonymous union with architecture dependent structs + __reserved: Padding<[u8; 160]>, // anonymous union with architecture dependent structs pub new_asinfo: syspage_array_info, pub new_cpuinfo: syspage_array_info, pub new_cacheattr: syspage_array_info, @@ -1245,13 +1245,13 @@ extern "C" { __id: crate::clockid_t, _new: *const crate::_clockperiod, __old: *mut crate::_clockperiod, - __reserved: c_int, + __reserved: Padding, ) -> c_int; pub fn ClockPeriod_r( __id: crate::clockid_t, _new: *const crate::_clockperiod, __old: *mut crate::_clockperiod, - __reserved: c_int, + __reserved: Padding, ) -> c_int; pub fn ClockId(__pid: crate::pid_t, __tid: c_int) -> c_int; pub fn ClockId_r(__pid: crate::pid_t, __tid: c_int) -> c_int; diff --git a/src/unix/nto/x86_64.rs b/src/unix/nto/x86_64.rs index 521b5d4ab7879..1fbfe3bb449bf 100644 --- a/src/unix/nto/x86_64.rs +++ b/src/unix/nto/x86_64.rs @@ -23,11 +23,11 @@ s! { pub r15: u64, pub rip: u64, pub cs: u32, - rsvd1: u32, + rsvd1: Padding, pub rflags: u64, pub rsp: u64, pub ss: u32, - rsvd2: u32, + rsvd2: Padding, } #[repr(align(8))] diff --git a/src/unix/nuttx/mod.rs b/src/unix/nuttx/mod.rs index 79e3f170e0c1f..e3ad7bafd153c 100644 --- a/src/unix/nuttx/mod.rs +++ b/src/unix/nuttx/mod.rs @@ -47,7 +47,7 @@ s! { pub st_ctim: timespec, pub st_blksize: blksize_t, pub st_blocks: i64, - __reserved: [usize; __DEFAULT_RESERVED_SIZE__], + __reserved: Padding<[usize; __DEFAULT_RESERVED_SIZE__]>, } pub struct sockaddr { @@ -63,7 +63,7 @@ s! { pub pw_gecos: *const c_char, pub pw_dir: *const c_char, pub pw_shell: *const c_char, - __reserved: [usize; __DEFAULT_RESERVED_SIZE__], + __reserved: Padding<[usize; __DEFAULT_RESERVED_SIZE__]>, } pub struct sem_t { @@ -118,7 +118,7 @@ s! { pub int_p_cs_precedes: i8, pub int_p_sep_by_space: i8, pub int_p_sign_posn: i8, - __reserved: [usize; __DEFAULT_RESERVED_SIZE__], + __reserved: Padding<[usize; __DEFAULT_RESERVED_SIZE__]>, } pub struct tm { @@ -133,7 +133,7 @@ s! { pub tm_isdst: i32, pub tm_gmtoff: isize, pub tm_zone: *const c_char, - __reserved: [usize; __DEFAULT_RESERVED_SIZE__], + __reserved: Padding<[usize; __DEFAULT_RESERVED_SIZE__]>, } pub struct addrinfo { @@ -145,7 +145,7 @@ s! { pub ai_addr: *mut sockaddr, pub ai_canonname: *mut c_char, pub ai_next: *mut addrinfo, - __reserved: [usize; __DEFAULT_RESERVED_SIZE__], + __reserved: Padding<[usize; __DEFAULT_RESERVED_SIZE__]>, } pub struct pthread_rwlock_t { @@ -164,7 +164,7 @@ s! { pub f_fsid: usize, pub f_flag: usize, pub f_namemax: usize, - __reserved: [usize; __DEFAULT_RESERVED_SIZE__], + __reserved: Padding<[usize; __DEFAULT_RESERVED_SIZE__]>, } pub struct dirent { @@ -185,7 +185,7 @@ s! { pub sa_mask: sigset_t, pub sa_flags: i32, pub sa_user: usize, - __reserved: [usize; __DEFAULT_RESERVED_SIZE__], + __reserved: Padding<[usize; __DEFAULT_RESERVED_SIZE__]>, } pub struct termios { @@ -195,7 +195,7 @@ s! { pub c_lflag: tcflag_t, pub c_cc: [cc_t; 12], pub c_speed: speed_t, - __reserved: [usize; __DEFAULT_RESERVED_SIZE__], + __reserved: Padding<[usize; __DEFAULT_RESERVED_SIZE__]>, } pub struct in_addr { diff --git a/src/unix/redox/mod.rs b/src/unix/redox/mod.rs index 45d479f94c152..439e8db35b4e0 100644 --- a/src/unix/redox/mod.rs +++ b/src/unix/redox/mod.rs @@ -162,7 +162,7 @@ s! { pub si_signo: c_int, pub si_errno: c_int, pub si_code: c_int, - _pad: [c_int; 29], + _pad: Padding<[c_int; 29]>, _align: [usize; 0], } @@ -203,7 +203,7 @@ s! { pub st_mtime_nsec: c_long, pub st_ctime: crate::time_t, pub st_ctime_nsec: c_long, - _pad: [c_char; 24], + _pad: Padding<[c_char; 24]>, } pub struct statvfs { diff --git a/src/unix/solarish/illumos.rs b/src/unix/solarish/illumos.rs index d83a24075e0b4..c0a17823bb9a7 100644 --- a/src/unix/solarish/illumos.rs +++ b/src/unix/solarish/illumos.rs @@ -212,7 +212,7 @@ pub const TFD_TIMER_ABSTIME: i32 = 1 << 0; pub const TFD_TIMER_CANCEL_ON_SET: i32 = 1 << 1; extern "C" { - pub fn eventfd(init: c_uint, flags: c_int) -> c_int; + pub fn eventfd(initval: c_uint, flags: c_int) -> c_int; pub fn epoll_pwait( epfd: c_int, diff --git a/src/unix/solarish/mod.rs b/src/unix/solarish/mod.rs index 1e5fc221296c1..5341b811fa557 100644 --- a/src/unix/solarish/mod.rs +++ b/src/unix/solarish/mod.rs @@ -226,24 +226,24 @@ s! { pub gl_pathc: size_t, pub gl_pathv: *mut *mut c_char, pub gl_offs: size_t, - __unused1: *mut c_void, - __unused2: c_int, + __unused1: Padding<*mut c_void>, + __unused2: Padding, #[cfg(target_os = "illumos")] - __unused3: c_int, + __unused3: Padding, #[cfg(target_os = "illumos")] - __unused4: c_int, + __unused4: Padding, #[cfg(target_os = "illumos")] - __unused5: *mut c_void, + __unused5: Padding<*mut c_void>, #[cfg(target_os = "illumos")] - __unused6: *mut c_void, + __unused6: Padding<*mut c_void>, #[cfg(target_os = "illumos")] - __unused7: *mut c_void, + __unused7: Padding<*mut c_void>, #[cfg(target_os = "illumos")] - __unused8: *mut c_void, + __unused8: Padding<*mut c_void>, #[cfg(target_os = "illumos")] - __unused9: *mut c_void, + __unused9: Padding<*mut c_void>, #[cfg(target_os = "illumos")] - __unused10: *mut c_void, + __unused10: Padding<*mut c_void>, } pub struct addrinfo { @@ -300,7 +300,7 @@ s! { pub struct sched_param { pub sched_priority: c_int, - sched_pad: [c_int; 8], + sched_pad: Padding<[c_int; 8]>, } pub struct Dl_info { @@ -393,7 +393,7 @@ s! { pub mq_maxmsg: c_long, pub mq_msgsize: c_long, pub mq_curmsgs: c_long, - _pad: [c_int; 12], + _pad: Padding<[c_int; 12]>, } pub struct port_event { @@ -507,9 +507,9 @@ s! { pub struct sockaddr_storage { pub ss_family: crate::sa_family_t, - __ss_pad1: [u8; 6], + __ss_pad1: Padding<[u8; 6]>, __ss_align: i64, - __ss_pad2: [u8; 240], + __ss_pad2: Padding<[u8; 240]>, } pub struct sockaddr_dl { @@ -528,7 +528,7 @@ s! { pub sigev_value: crate::sigval, pub ss_sp: *mut c_void, pub sigev_notify_attributes: *const crate::pthread_attr_t, - __sigev_pad2: c_int, + __sigev_pad2: Padding, } } @@ -685,7 +685,7 @@ s_no_extra_traits! { uid: crate::uid_t, value: crate::sigval, // Pad out to match the SIGCLD value size - _pad: *mut c_void, + _pad: Padding<*mut c_void>, } struct siginfo_sigcld { diff --git a/src/wasi/mod.rs b/src/wasi/mod.rs index a403648f85fc5..9f2539b9400a0 100644 --- a/src/wasi/mod.rs +++ b/src/wasi/mod.rs @@ -159,7 +159,7 @@ s! { pub st_mode: mode_t, pub st_uid: uid_t, pub st_gid: gid_t, - __pad0: c_uint, + __pad0: Padding, pub st_rdev: dev_t, pub st_size: off_t, pub st_blksize: blksize_t, @@ -167,7 +167,7 @@ s! { pub st_atim: timespec, pub st_mtim: timespec, pub st_ctim: timespec, - __reserved: [c_longlong; 3], + __reserved: Padding<[c_longlong; 3]>, } pub struct fd_set {