diff --git a/src/memory/paging/mod.rs b/src/memory/paging/mod.rs index 9cccd13..55e4825 100644 --- a/src/memory/paging/mod.rs +++ b/src/memory/paging/mod.rs @@ -120,4 +120,18 @@ impl ActivePageTable { assert!(p1[page.p1_index()].is_unused()); p1[page.p1_index()].set(frame, flags | PRESENT); } + + pub fn map(&mut self, page: Page, flags: EntryFlags, allocator: &mut A) + where A: FrameAllocator + { + let frame = allocator.allocate_frame().expect("out of memory"); + self.map_to(page, frame, flags, allocator) + } + + pub fn identity_map(&mut self, frame: Frame, flags: EntryFlags, allocator: &mut A) + where A: FrameAllocator + { + let page = Page::containing_address(frame.start_address()); + self.map_to(page, frame, flags, allocator) + } }