Sha256: 4e78c84589b535ca9ca633633696ef212393a98f2890b181acaa8f908fbc5ae2

Contents?: true

Size: 990 Bytes

Versions: 24

Compression:

Stored size: 990 Bytes

Contents

//! Linux `futex`.
//!
//! # Safety
//!
//! Futex is a very low-level mechanism for implementing concurrency
//! primitives.
#![allow(unsafe_code)]

use crate::thread::Timespec;
use crate::{backend, io};

pub use backend::thread::{FutexFlags, FutexOperation};

/// `futex(uaddr, op, val, utime, uaddr2, val3)`
///
/// # References
///  - [Linux `futex` system call]
///  - [Linux `futex` feature]
///
/// # Safety
///
/// This is a very low-level feature for implementing synchronization
/// primitives. See the references links above.
///
/// [Linux `futex` system call]: https://man7.org/linux/man-pages/man2/futex.2.html
/// [Linux `futex` feature]: https://man7.org/linux/man-pages/man7/futex.7.html
#[inline]
pub unsafe fn futex(
    uaddr: *mut u32,
    op: FutexOperation,
    flags: FutexFlags,
    val: u32,
    utime: *const Timespec,
    uaddr2: *mut u32,
    val3: u32,
) -> io::Result<usize> {
    backend::thread::syscalls::futex(uaddr, op, flags, val, utime, uaddr2, val3)
}

Version data entries

24 entries across 15 versions & 1 rubygems

Version Path
wasmtime-13.0.0 ./ext/cargo-vendor/rustix-0.37.23/src/thread/futex.rs
wasmtime-13.0.0 ./ext/cargo-vendor/rustix-0.38.8/src/thread/futex.rs
wasmtime-12.0.1 ./ext/cargo-vendor/rustix-0.38.8/src/thread/futex.rs
wasmtime-12.0.1 ./ext/cargo-vendor/rustix-0.37.23/src/thread/futex.rs
wasmtime-12.0.0 ./ext/cargo-vendor/rustix-0.37.23/src/thread/futex.rs
wasmtime-12.0.0 ./ext/cargo-vendor/rustix-0.38.8/src/thread/futex.rs
wasmtime-11.0.0 ./ext/cargo-vendor/rustix-0.37.23/src/thread/futex.rs
wasmtime-11.0.0 ./ext/cargo-vendor/rustix-0.38.8/src/thread/futex.rs
wasmtime-10.0.1 ./ext/cargo-vendor/rustix-0.37.23/src/thread/futex.rs
wasmtime-10.0.1 ./ext/cargo-vendor/rustix-0.38.8/src/thread/futex.rs
wasmtime-10.0.0 ./ext/cargo-vendor/rustix-0.37.23/src/thread/futex.rs
wasmtime-10.0.0 ./ext/cargo-vendor/rustix-0.38.8/src/thread/futex.rs
wasmtime-9.0.4 ./ext/cargo-vendor/rustix-0.38.8/src/thread/futex.rs
wasmtime-9.0.4 ./ext/cargo-vendor/rustix-0.37.23/src/thread/futex.rs
wasmtime-9.0.1 ./ext/cargo-vendor/rustix-0.37.19/src/thread/futex.rs
wasmtime-8.0.0 ./ext/cargo-vendor/rustix-0.37.13/src/thread/futex.rs
wasmtime-8.0.0 ./ext/cargo-vendor/rustix-0.36.12/src/thread/futex.rs
wasmtime-7.0.0 ./ext/cargo-vendor/rustix-0.36.11/src/thread/futex.rs
wasmtime-7.0.0 ./ext/cargo-vendor/rustix-0.37.5/src/thread/futex.rs
wasmtime-6.0.1 ./ext/cargo-vendor/rustix-0.36.8/src/thread/futex.rs