use crate::paging::{PhysAddr, VirtAddr};
pub mod alloc;
pub mod mapper;
pub struct Page(VirtAddr);
impl Page {
pub fn new(addr: VirtAddr) -> Self {
Self(addr)
}
pub fn as_mut_ptr(&self) -> *mut u8 {
self.0.addr() as *mut u8
}
pub fn as_ptr(&self) -> *const u8 {
self.0.addr() as *const u8
}
pub fn start_address_virt(&self) -> &VirtAddr {
&self.0
}
pub fn start_address(&self) -> u64 {
self.start_address_virt().addr()
}
}
pub struct PhysFrame(PhysAddr);
impl PhysFrame {
pub fn new(phys: PhysAddr) -> Self {
Self(phys)
}
pub fn start_address_phys(&self) -> &PhysAddr {
&self.0
}
pub fn start_address(&self) -> u64 {
self.start_address_phys().addr()
}
}