Sha256: b31889f972676f57e3599375dfcd59dd72975977ef345d11c22d51f0d4a6400b

Contents?: true

Size: 1.44 KB

Versions: 13

Compression:

Stored size: 1.44 KB

Contents

//! Rust implementation of the `CPU_*` macro API.

#![allow(non_snake_case)]

use super::types::RawCpuSet;
use core::mem::size_of_val;

#[inline]
pub(crate) fn CPU_SET(cpu: usize, cpuset: &mut RawCpuSet) {
    let size_in_bits = 8 * size_of_val(&cpuset.bits[0]); // 32, 64 etc
    let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
    cpuset.bits[idx] |= 1 << offset
}

#[inline]
pub(crate) fn CPU_ZERO(cpuset: &mut RawCpuSet) {
    cpuset.bits.fill(0)
}

#[inline]
pub(crate) fn CPU_CLR(cpu: usize, cpuset: &mut RawCpuSet) {
    let size_in_bits = 8 * size_of_val(&cpuset.bits[0]); // 32, 64 etc
    let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
    cpuset.bits[idx] &= !(1 << offset)
}

#[inline]
pub(crate) fn CPU_ISSET(cpu: usize, cpuset: &RawCpuSet) -> bool {
    let size_in_bits = 8 * size_of_val(&cpuset.bits[0]);
    let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
    (cpuset.bits[idx] & (1 << offset)) != 0
}

#[inline]
pub(crate) fn CPU_COUNT_S(size_in_bytes: usize, cpuset: &RawCpuSet) -> u32 {
    let size_of_mask = size_of_val(&cpuset.bits[0]);
    let idx = size_in_bytes / size_of_mask;
    cpuset.bits[..idx]
        .iter()
        .fold(0, |acc, i| acc + i.count_ones())
}

#[inline]
pub(crate) fn CPU_COUNT(cpuset: &RawCpuSet) -> u32 {
    CPU_COUNT_S(core::mem::size_of::<RawCpuSet>(), cpuset)
}

#[inline]
pub(crate) fn CPU_EQUAL(this: &RawCpuSet, that: &RawCpuSet) -> bool {
    this.bits == that.bits
}

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
wasmtime-29.0.0 ./ext/cargo-vendor/rustix-0.38.44/src/backend/linux_raw/process/cpu_set.rs
wasmtime-28.0.0 ./ext/cargo-vendor/rustix-0.38.43/src/backend/linux_raw/process/cpu_set.rs
wasmtime-27.0.0 ./ext/cargo-vendor/rustix-0.38.41/src/backend/linux_raw/process/cpu_set.rs
wasmtime-26.0.0 ./ext/cargo-vendor/rustix-0.38.37/src/backend/linux_raw/process/cpu_set.rs
wasmtime-25.0.2 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/process/cpu_set.rs
wasmtime-25.0.1 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/process/cpu_set.rs
wasmtime-25.0.0 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/process/cpu_set.rs
wasmtime-24.0.0 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/process/cpu_set.rs
wasmtime-23.0.2 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/process/cpu_set.rs
wasmtime-22.0.0 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/process/cpu_set.rs
wasmtime-21.0.1 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/process/cpu_set.rs
wasmtime-20.0.2 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/process/cpu_set.rs
wasmtime-20.0.0 ./ext/cargo-vendor/rustix-0.38.34/src/backend/linux_raw/process/cpu_set.rs