16 releases (4 breaking)

Uses new Rust 2024

0.5.3 Mar 3, 2025
0.5.1 Jan 19, 2025
0.5.0 Dec 17, 2024
0.4.1 Oct 10, 2024
0.3.1 Jul 31, 2024

#439 in Hardware support

Download history 679/week @ 2024-11-21 355/week @ 2024-11-28 471/week @ 2024-12-05 894/week @ 2024-12-12 864/week @ 2024-12-19 751/week @ 2024-12-26 659/week @ 2025-01-02 568/week @ 2025-01-09 342/week @ 2025-01-16 226/week @ 2025-01-23 127/week @ 2025-01-30 447/week @ 2025-02-06 450/week @ 2025-02-13 265/week @ 2025-02-20 664/week @ 2025-02-27 613/week @ 2025-03-06

2,029 downloads per month
Used in 3 crates

GPL-3.0-or-later OR Apache-2…

30KB
608 lines

page_table_entry

Crates.io Docs.rs CI

This crate provides the definition of page table entry for various hardware architectures.

Currently supported architectures and page table entry types:

All these types implement the GenericPTE trait, which provides unified methods for manipulating various page table entries.

Examples (x86_64)

use memory_addr::PhysAddr;
use x86_64::structures::paging::page_table::PageTableFlags;
use page_table_entry::{GenericPTE, MappingFlags, x86_64::X64PTE};

let paddr = PhysAddr::from(0x233000);
let pte = X64PTE::new_page(
    paddr,
    /* flags: */ MappingFlags::READ | MappingFlags::WRITE,
    /* is_huge: */ false,
);
assert!(!pte.is_unused());
assert!(pte.is_present());
assert_eq!(pte.paddr(), paddr);
assert_eq!(
    pte.bits(),
    0x800_0000000233_003, // PRESENT | WRITE | NO_EXECUTE | paddr(0x233000)
);

Dependencies

~730KB
~13K SLoC