Sha256: d7d3f6813eac0e0f22fb8bcac3d193a22584393c1f7fa233999bd09c4e2059f7

Contents?: true

Size: 773 Bytes

Versions: 4

Compression:

Stored size: 773 Bytes

Contents

//! `ioctl` opcode behavior for BSD platforms.

use super::{Direction, RawOpcode};

pub(super) const fn compose_opcode(
    dir: Direction,
    group: RawOpcode,
    num: RawOpcode,
    size: RawOpcode,
) -> RawOpcode {
    let dir = match dir {
        Direction::None => NONE,
        Direction::Read => READ,
        Direction::Write => WRITE,
        Direction::ReadWrite => READ | WRITE,
    };

    dir | num | (group << 8) | ((size & IOCPARAM_MASK) << 16)
}

// `IOC_VOID`
pub const NONE: RawOpcode = 0x2000_0000;
// `IOC_OUT` (“out” is from the perspective of the kernel)
pub const READ: RawOpcode = 0x4000_0000;
// `IOC_IN` (“in” is from the perspective of the kernel)
pub const WRITE: RawOpcode = 0x8000_0000;
pub const IOCPARAM_MASK: RawOpcode = 0x1FFF;

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
wasmtime-29.0.0 ./ext/cargo-vendor/rustix-0.38.44/src/ioctl/bsd.rs
wasmtime-28.0.0 ./ext/cargo-vendor/rustix-0.38.43/src/ioctl/bsd.rs
wasmtime-27.0.0 ./ext/cargo-vendor/rustix-0.38.41/src/ioctl/bsd.rs
wasmtime-26.0.0 ./ext/cargo-vendor/rustix-0.38.37/src/ioctl/bsd.rs