From 3696c7bacb9e9962314bfca5430a35afd11d0406 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Thu, 13 Apr 2017 19:23:49 +0200 Subject: [PATCH] Add `map` and `identity_map` functions for convenience --- src/memory/paging/mod.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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) + } }