diff options
| author | Valentin Popov <valentin@popov.link> | 2024-07-19 15:37:58 +0300 | 
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2024-07-19 15:37:58 +0300 | 
| commit | a990de90fe41456a23e58bd087d2f107d321f3a1 (patch) | |
| tree | 15afc392522a9e85dc3332235e311b7d39352ea9 /vendor/rustix/src/backend/linux_raw/thread | |
| parent | 3d48cd3f81164bbfc1a755dc1d4a9a02f98c8ddd (diff) | |
| download | fparkan-a990de90fe41456a23e58bd087d2f107d321f3a1.tar.xz fparkan-a990de90fe41456a23e58bd087d2f107d321f3a1.zip  | |
Deleted vendor folder
Diffstat (limited to 'vendor/rustix/src/backend/linux_raw/thread')
| -rw-r--r-- | vendor/rustix/src/backend/linux_raw/thread/futex.rs | 45 | ||||
| -rw-r--r-- | vendor/rustix/src/backend/linux_raw/thread/mod.rs | 2 | ||||
| -rw-r--r-- | vendor/rustix/src/backend/linux_raw/thread/syscalls.rs | 347 | 
3 files changed, 0 insertions, 394 deletions
diff --git a/vendor/rustix/src/backend/linux_raw/thread/futex.rs b/vendor/rustix/src/backend/linux_raw/thread/futex.rs deleted file mode 100644 index 263e980..0000000 --- a/vendor/rustix/src/backend/linux_raw/thread/futex.rs +++ /dev/null @@ -1,45 +0,0 @@ -bitflags::bitflags! { -    /// `FUTEX_*` flags for use with [`futex`]. -    /// -    /// [`futex`]: crate::thread::futex -    #[repr(transparent)] -    #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] -    pub struct FutexFlags: u32 { -        /// `FUTEX_PRIVATE_FLAG` -        const PRIVATE = linux_raw_sys::general::FUTEX_PRIVATE_FLAG; -        /// `FUTEX_CLOCK_REALTIME` -        const CLOCK_REALTIME = linux_raw_sys::general::FUTEX_CLOCK_REALTIME; - -        // This deliberately lacks a `const _ = !0`, so that users can use -        // `from_bits_truncate` to extract the `SocketFlags` from a flags -        // value that also includes a `SocketType`. -    } -} - -/// `FUTEX_*` operations for use with [`futex`]. -/// -/// [`futex`]: crate::thread::futex -#[derive(Debug, Copy, Clone, Eq, PartialEq)] -#[repr(u32)] -pub enum FutexOperation { -    /// `FUTEX_WAIT` -    Wait = linux_raw_sys::general::FUTEX_WAIT, -    /// `FUTEX_WAKE` -    Wake = linux_raw_sys::general::FUTEX_WAKE, -    /// `FUTEX_FD` -    Fd = linux_raw_sys::general::FUTEX_FD, -    /// `FUTEX_REQUEUE` -    Requeue = linux_raw_sys::general::FUTEX_REQUEUE, -    /// `FUTEX_CMP_REQUEUE` -    CmpRequeue = linux_raw_sys::general::FUTEX_CMP_REQUEUE, -    /// `FUTEX_WAKE_OP` -    WakeOp = linux_raw_sys::general::FUTEX_WAKE_OP, -    /// `FUTEX_LOCK_PI` -    LockPi = linux_raw_sys::general::FUTEX_LOCK_PI, -    /// `FUTEX_UNLOCK_PI` -    UnlockPi = linux_raw_sys::general::FUTEX_UNLOCK_PI, -    /// `FUTEX_TRYLOCK_PI` -    TrylockPi = linux_raw_sys::general::FUTEX_TRYLOCK_PI, -    /// `FUTEX_WAIT_BITSET` -    WaitBitset = linux_raw_sys::general::FUTEX_WAIT_BITSET, -} diff --git a/vendor/rustix/src/backend/linux_raw/thread/mod.rs b/vendor/rustix/src/backend/linux_raw/thread/mod.rs deleted file mode 100644 index 6a002c6..0000000 --- a/vendor/rustix/src/backend/linux_raw/thread/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub(crate) mod futex; -pub(crate) mod syscalls; diff --git a/vendor/rustix/src/backend/linux_raw/thread/syscalls.rs b/vendor/rustix/src/backend/linux_raw/thread/syscalls.rs deleted file mode 100644 index 0095eed..0000000 --- a/vendor/rustix/src/backend/linux_raw/thread/syscalls.rs +++ /dev/null @@ -1,347 +0,0 @@ -//! linux_raw syscalls supporting `rustix::thread`. -//! -//! # Safety -//! -//! See the `rustix::backend` module documentation for details. -#![allow(unsafe_code, clippy::undocumented_unsafe_blocks)] - -use crate::backend::c; -use crate::backend::conv::{ -    by_mut, by_ref, c_int, c_uint, ret, ret_c_int, ret_c_int_infallible, ret_usize, -    slice_just_addr, slice_just_addr_mut, zero, -}; -use crate::fd::BorrowedFd; -use crate::io; -use crate::pid::Pid; -use crate::thread::{ClockId, FutexFlags, FutexOperation, NanosleepRelativeResult, Timespec}; -use core::mem::MaybeUninit; -#[cfg(target_pointer_width = "32")] -use linux_raw_sys::general::timespec as __kernel_old_timespec; -use linux_raw_sys::general::{__kernel_timespec, TIMER_ABSTIME}; - -#[inline] -pub(crate) fn clock_nanosleep_relative( -    id: ClockId, -    req: &__kernel_timespec, -) -> NanosleepRelativeResult { -    #[cfg(target_pointer_width = "32")] -    unsafe { -        let mut rem = MaybeUninit::<__kernel_timespec>::uninit(); -        match ret(syscall!( -            __NR_clock_nanosleep_time64, -            id, -            c_int(0), -            by_ref(req), -            &mut rem -        )) -        .or_else(|err| { -            // See the comments in `rustix_clock_gettime_via_syscall` about -            // emulation. -            if err == io::Errno::NOSYS { -                clock_nanosleep_relative_old(id, req, &mut rem) -            } else { -                Err(err) -            } -        }) { -            Ok(()) => NanosleepRelativeResult::Ok, -            Err(io::Errno::INTR) => NanosleepRelativeResult::Interrupted(rem.assume_init()), -            Err(err) => NanosleepRelativeResult::Err(err), -        } -    } -    #[cfg(target_pointer_width = "64")] -    unsafe { -        let mut rem = MaybeUninit::<__kernel_timespec>::uninit(); -        match ret(syscall!( -            __NR_clock_nanosleep, -            id, -            c_int(0), -            by_ref(req), -            &mut rem -        )) { -            Ok(()) => NanosleepRelativeResult::Ok, -            Err(io::Errno::INTR) => NanosleepRelativeResult::Interrupted(rem.assume_init()), -            Err(err) => NanosleepRelativeResult::Err(err), -        } -    } -} - -#[cfg(target_pointer_width = "32")] -unsafe fn clock_nanosleep_relative_old( -    id: ClockId, -    req: &__kernel_timespec, -    rem: &mut MaybeUninit<__kernel_timespec>, -) -> io::Result<()> { -    let old_req = __kernel_old_timespec { -        tv_sec: req.tv_sec.try_into().map_err(|_| io::Errno::INVAL)?, -        tv_nsec: req.tv_nsec.try_into().map_err(|_| io::Errno::INVAL)?, -    }; -    let mut old_rem = MaybeUninit::<__kernel_old_timespec>::uninit(); -    ret(syscall!( -        __NR_clock_nanosleep, -        id, -        c_int(0), -        by_ref(&old_req), -        &mut old_rem -    ))?; -    let old_rem = old_rem.assume_init(); -    rem.write(__kernel_timespec { -        tv_sec: old_rem.tv_sec.into(), -        tv_nsec: old_rem.tv_nsec.into(), -    }); -    Ok(()) -} - -#[inline] -pub(crate) fn clock_nanosleep_absolute(id: ClockId, req: &__kernel_timespec) -> io::Result<()> { -    #[cfg(target_pointer_width = "32")] -    unsafe { -        ret(syscall_readonly!( -            __NR_clock_nanosleep_time64, -            id, -            c_uint(TIMER_ABSTIME), -            by_ref(req), -            zero() -        )) -        .or_else(|err| { -            // See the comments in `rustix_clock_gettime_via_syscall` about -            // emulation. -            if err == io::Errno::NOSYS { -                clock_nanosleep_absolute_old(id, req) -            } else { -                Err(err) -            } -        }) -    } -    #[cfg(target_pointer_width = "64")] -    unsafe { -        ret(syscall_readonly!( -            __NR_clock_nanosleep, -            id, -            c_uint(TIMER_ABSTIME), -            by_ref(req), -            zero() -        )) -    } -} - -#[cfg(target_pointer_width = "32")] -unsafe fn clock_nanosleep_absolute_old(id: ClockId, req: &__kernel_timespec) -> io::Result<()> { -    let old_req = __kernel_old_timespec { -        tv_sec: req.tv_sec.try_into().map_err(|_| io::Errno::INVAL)?, -        tv_nsec: req.tv_nsec.try_into().map_err(|_| io::Errno::INVAL)?, -    }; -    ret(syscall_readonly!( -        __NR_clock_nanosleep, -        id, -        c_int(0), -        by_ref(&old_req), -        zero() -    )) -} - -#[inline] -pub(crate) fn nanosleep(req: &__kernel_timespec) -> NanosleepRelativeResult { -    #[cfg(target_pointer_width = "32")] -    unsafe { -        let mut rem = MaybeUninit::<__kernel_timespec>::uninit(); -        match ret(syscall!( -            __NR_clock_nanosleep_time64, -            ClockId::Realtime, -            c_int(0), -            by_ref(req), -            &mut rem -        )) -        .or_else(|err| { -            // See the comments in `rustix_clock_gettime_via_syscall` about -            // emulation. -            if err == io::Errno::NOSYS { -                nanosleep_old(req, &mut rem) -            } else { -                Err(err) -            } -        }) { -            Ok(()) => NanosleepRelativeResult::Ok, -            Err(io::Errno::INTR) => NanosleepRelativeResult::Interrupted(rem.assume_init()), -            Err(err) => NanosleepRelativeResult::Err(err), -        } -    } -    #[cfg(target_pointer_width = "64")] -    unsafe { -        let mut rem = MaybeUninit::<__kernel_timespec>::uninit(); -        match ret(syscall!(__NR_nanosleep, by_ref(req), &mut rem)) { -            Ok(()) => NanosleepRelativeResult::Ok, -            Err(io::Errno::INTR) => NanosleepRelativeResult::Interrupted(rem.assume_init()), -            Err(err) => NanosleepRelativeResult::Err(err), -        } -    } -} - -#[cfg(target_pointer_width = "32")] -unsafe fn nanosleep_old( -    req: &__kernel_timespec, -    rem: &mut MaybeUninit<__kernel_timespec>, -) -> io::Result<()> { -    let old_req = __kernel_old_timespec { -        tv_sec: req.tv_sec.try_into().map_err(|_| io::Errno::INVAL)?, -        tv_nsec: req.tv_nsec.try_into().map_err(|_| io::Errno::INVAL)?, -    }; -    let mut old_rem = MaybeUninit::<__kernel_old_timespec>::uninit(); -    ret(syscall!(__NR_nanosleep, by_ref(&old_req), &mut old_rem))?; -    let old_rem = old_rem.assume_init(); -    rem.write(__kernel_timespec { -        tv_sec: old_rem.tv_sec.into(), -        tv_nsec: old_rem.tv_nsec.into(), -    }); -    Ok(()) -} - -#[inline] -pub(crate) fn gettid() -> Pid { -    unsafe { -        let tid = ret_c_int_infallible(syscall_readonly!(__NR_gettid)); -        Pid::from_raw_unchecked(tid) -    } -} - -// TODO: This could be de-multiplexed. -#[inline] -pub(crate) unsafe fn futex( -    uaddr: *mut u32, -    op: FutexOperation, -    flags: FutexFlags, -    val: u32, -    utime: *const Timespec, -    uaddr2: *mut u32, -    val3: u32, -) -> io::Result<usize> { -    #[cfg(target_pointer_width = "32")] -    { -        ret_usize(syscall!( -            __NR_futex_time64, -            uaddr, -            (op, flags), -            c_uint(val), -            utime, -            uaddr2, -            c_uint(val3) -        )) -        .or_else(|err| { -            // See the comments in `rustix_clock_gettime_via_syscall` about -            // emulation. -            if err == io::Errno::NOSYS { -                futex_old(uaddr, op, flags, val, utime, uaddr2, val3) -            } else { -                Err(err) -            } -        }) -    } -    #[cfg(target_pointer_width = "64")] -    ret_usize(syscall!( -        __NR_futex, -        uaddr, -        (op, flags), -        c_uint(val), -        utime, -        uaddr2, -        c_uint(val3) -    )) -} - -#[cfg(target_pointer_width = "32")] -unsafe fn futex_old( -    uaddr: *mut u32, -    op: FutexOperation, -    flags: FutexFlags, -    val: u32, -    utime: *const Timespec, -    uaddr2: *mut u32, -    val3: u32, -) -> io::Result<usize> { -    let old_utime = __kernel_old_timespec { -        tv_sec: (*utime).tv_sec.try_into().map_err(|_| io::Errno::INVAL)?, -        tv_nsec: (*utime).tv_nsec.try_into().map_err(|_| io::Errno::INVAL)?, -    }; -    ret_usize(syscall!( -        __NR_futex, -        uaddr, -        (op, flags), -        c_uint(val), -        by_ref(&old_utime), -        uaddr2, -        c_uint(val3) -    )) -} - -#[inline] -pub(crate) fn setns(fd: BorrowedFd<'_>, nstype: c::c_int) -> io::Result<c::c_int> { -    unsafe { ret_c_int(syscall_readonly!(__NR_setns, fd, c_int(nstype))) } -} - -#[inline] -pub(crate) fn unshare(flags: crate::thread::UnshareFlags) -> io::Result<()> { -    unsafe { ret(syscall_readonly!(__NR_unshare, flags)) } -} - -#[inline] -pub(crate) fn capget( -    header: &mut linux_raw_sys::general::__user_cap_header_struct, -    data: &mut [MaybeUninit<linux_raw_sys::general::__user_cap_data_struct>], -) -> io::Result<()> { -    unsafe { -        ret(syscall!( -            __NR_capget, -            by_mut(header), -            slice_just_addr_mut(data) -        )) -    } -} - -#[inline] -pub(crate) fn capset( -    header: &mut linux_raw_sys::general::__user_cap_header_struct, -    data: &[linux_raw_sys::general::__user_cap_data_struct], -) -> io::Result<()> { -    unsafe { ret(syscall!(__NR_capset, by_mut(header), slice_just_addr(data))) } -} - -#[inline] -pub(crate) fn setuid_thread(uid: crate::ugid::Uid) -> io::Result<()> { -    unsafe { ret(syscall_readonly!(__NR_setuid, uid)) } -} - -#[inline] -pub(crate) fn setresuid_thread( -    ruid: crate::ugid::Uid, -    euid: crate::ugid::Uid, -    suid: crate::ugid::Uid, -) -> io::Result<()> { -    #[cfg(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc"))] -    unsafe { -        ret(syscall_readonly!(__NR_setresuid32, ruid, euid, suid)) -    } -    #[cfg(not(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc")))] -    unsafe { -        ret(syscall_readonly!(__NR_setresuid, ruid, euid, suid)) -    } -} - -#[inline] -pub(crate) fn setgid_thread(gid: crate::ugid::Gid) -> io::Result<()> { -    unsafe { ret(syscall_readonly!(__NR_setgid, gid)) } -} - -#[inline] -pub(crate) fn setresgid_thread( -    rgid: crate::ugid::Gid, -    egid: crate::ugid::Gid, -    sgid: crate::ugid::Gid, -) -> io::Result<()> { -    #[cfg(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc"))] -    unsafe { -        ret(syscall_readonly!(__NR_setresgid32, rgid, egid, sgid)) -    } -    #[cfg(not(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc")))] -    unsafe { -        ret(syscall_readonly!(__NR_setresgid, rgid, egid, sgid)) -    } -}  | 
