page_table_entry 0.1.0

Page table entry definition for various hardware architectures
Documentation

page_table_entry

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 page_table_entry::{GenericPTE, MappingFlags, x86_64::X64PTE};
use x86_64::structures::paging::page_table::PageTableFlags;

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)