rusl 0.5.0

Rust linux interface layer
Documentation
transparent_bitflags! {
    pub struct MemoryProtection: i32 {
        const DEFAULT = 0;
        const PROT_NONE = linux_rust_bindings::mman::PROT_NONE;
        const PROT_READ = linux_rust_bindings::mman::PROT_READ;
        const PROT_WRITE = linux_rust_bindings::mman::PROT_WRITE;
        const PROT_EXEC = linux_rust_bindings::mman::PROT_EXEC;
        const PROT_SEM = linux_rust_bindings::mman::PROT_SEM;
        const PROT_GROWSDOWN = linux_rust_bindings::mman::PROT_GROWSDOWN;
        const PROT_GROWSUP = linux_rust_bindings::mman::PROT_GROWSUP;
    }
}

#[derive(Debug, Copy, Clone)]
pub enum MapRequiredFlag {
    MapShared,
    MapSharedValidate,
    MapPrivate,
}

impl MapRequiredFlag {
    pub(crate) const fn into_flag(self) -> MapAdditionalFlags {
        MapAdditionalFlags(match self {
            MapRequiredFlag::MapShared => linux_rust_bindings::mman::MAP_SHARED as u32,
            MapRequiredFlag::MapSharedValidate => {
                linux_rust_bindings::mman::MAP_SHARED_VALIDATE as u32
            }
            MapRequiredFlag::MapPrivate => linux_rust_bindings::mman::MAP_PRIVATE as u32,
        })
    }
}

transparent_bitflags! {
    pub struct MapAdditionalFlags: u32 {
        const DEFAULT = 0;
        const MAP_TYPE = linux_rust_bindings::mman::MAP_TYPE as u32;
        const MAP_FIXED = linux_rust_bindings::mman::MAP_FIXED as u32;
        const MAP_ANONYMOUS = linux_rust_bindings::mman::MAP_ANONYMOUS as u32;
        const MAP_POPULATE = linux_rust_bindings::mman::MAP_POPULATE as u32;
        const MAP_NONBLOCK = linux_rust_bindings::mman::MAP_NONBLOCK as u32;
        const MAP_STACK = linux_rust_bindings::mman::MAP_STACK as u32;
        const MAP_HUGETLB = linux_rust_bindings::mman::MAP_HUGETLB as u32;
        const MAP_SYNC = linux_rust_bindings::mman::MAP_SYNC as u32;
        const MAP_FIXED_NOREPLACE = linux_rust_bindings::mman::MAP_FIXED_NOREPLACE as u32;
        const MAP_UNINITIALIZED = linux_rust_bindings::mman::MAP_UNINITIALIZED as u32;
        const MAP_FILE = linux_rust_bindings::mman::MAP_FILE as u32;
        const MAP_GROWSDOWN = linux_rust_bindings::mman::MAP_GROWSDOWN as u32;
        const MAP_DENYWRITE = linux_rust_bindings::mman::MAP_DENYWRITE as u32;
        const MAP_EXECUTABLE = linux_rust_bindings::mman::MAP_EXECUTABLE as u32;
        const MAP_LOCKED = linux_rust_bindings::mman::MAP_LOCKED as u32;
        const MAP_NORESERVE = linux_rust_bindings::mman::MAP_NORESERVE as u32;
        const MAP_HUGE_SHIFT = linux_rust_bindings::mman::MAP_HUGE_SHIFT as u32;
        const MAP_HUGE_MASK = linux_rust_bindings::mman::MAP_HUGE_MASK as u32;
        const MAP_HUGE_16KB = linux_rust_bindings::mman::MAP_HUGE_16KB as u32;
        const MAP_HUGE_64KB = linux_rust_bindings::mman::MAP_HUGE_64KB as u32;
        const MAP_HUGE_512KB = linux_rust_bindings::mman::MAP_HUGE_512KB as u32;
        const MAP_HUGE_1MB = linux_rust_bindings::mman::MAP_HUGE_1MB as u32;
        const MAP_HUGE_2MB = linux_rust_bindings::mman::MAP_HUGE_2MB as u32;
        const MAP_HUGE_8MB = linux_rust_bindings::mman::MAP_HUGE_8MB as u32;
        const MAP_HUGE_16MB = linux_rust_bindings::mman::MAP_HUGE_16MB as u32;
        const MAP_HUGE_32MB = linux_rust_bindings::mman::MAP_HUGE_32MB as u32;
        const MAP_HUGE_256MB = linux_rust_bindings::mman::MAP_HUGE_256MB as u32;
        const MAP_HUGE_512MB = linux_rust_bindings::mman::MAP_HUGE_512MB as u32;
        const MAP_HUGE_1GB = linux_rust_bindings::mman::MAP_HUGE_1GB as u32;
        const MAP_HUGE_2GB = linux_rust_bindings::mman::MAP_HUGE_2GB as u32;
        #[expect(clippy::cast_possible_truncation)]
        const MAP_HUGE_16GB = linux_rust_bindings::mman::MAP_HUGE_16GB as u32;
    }
}