#page-table #virtual-memory #paging #arceos

nightly no-std page_table_entry

为各种硬件架构定义页表条目

8 个版本

0.3.3 2024年8月9日
0.3.2 2024年8月2日
0.3.1 2024年7月31日
0.2.0 2024年7月25日
0.1.2 2024年7月17日

#166 in 硬件支持

Download history 404/week @ 2024-07-15 610/week @ 2024-07-22 1222/week @ 2024-07-29 367/week @ 2024-08-05 295/week @ 2024-08-12

每月下载量 2,525
用于 page_table_multiarch

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

24KB
463

page_table_entry

Crates.io Docs.rs CI

此crate提供了各种硬件架构的页表条目定义。

当前支持的架构和页表条目类型

所有这些类型都实现了 GenericPTE trait,它提供了操作各种页表条目的统一方法。

示例(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)
);

依赖项

~670KB
~12K SLoC