4个版本
0.2.1 | 2024年7月28日 |
---|---|
0.2.0 | 2024年7月16日 |
0.1.1 | 2024年7月11日 |
0.1.0 | 2023年5月9日 |
#184 in 操作系统
2,486 每月下载量
在 3 crates 中使用
21KB
468 行
memory_addr
物理和虚拟内存地址的包装器和辅助函数。
示例
use memory_addr::{pa, va, va_range, PhysAddr, VirtAddr};
let phys_addr = PhysAddr::from(0x12345678);
let virt_addr = VirtAddr::from(0x87654321);
assert_eq!(phys_addr.align_down(0x1000usize), pa!(0x12345000));
assert_eq!(phys_addr.align_offset_4k(), 0x678);
assert_eq!(virt_addr.align_up_4k(), va!(0x87655000));
assert!(!virt_addr.is_aligned_4k());
assert!(va!(0xabcedf0).is_aligned(16usize));
let va_range = va_range!(0x87654000..0x87655000);
assert_eq!(va_range.start, va!(0x87654000));
assert_eq!(va_range.size(), 0x1000);
assert!(va_range.contains(virt_addr));
assert!(va_range.contains_range(va_range!(virt_addr..virt_addr + 0x100)));
assert!(!va_range.contains_range(va_range!(virt_addr..virt_addr + 0x1000)));