From 2f30b0f7cfabc85ce93e2a0b21a4f54f265c1d17 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Tue, 18 Apr 2017 12:05:29 +0200 Subject: [PATCH] Create a new ActivePageTable struct that derefs to Mapper --- src/memory/paging/mod.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/memory/paging/mod.rs b/src/memory/paging/mod.rs index 873e9cf..cb251b9 100644 --- a/src/memory/paging/mod.rs +++ b/src/memory/paging/mod.rs @@ -1,4 +1,6 @@ pub use self::entry::*; +pub use self::mapper::Mapper; +use core::ops::{Deref, DerefMut}; use core::ptr::Unique; use memory::{PAGE_SIZE, Frame, FrameAllocator}; use self::table::{Table, Level4}; @@ -45,6 +47,32 @@ impl Page { } } +pub struct ActivePageTable { + mapper: Mapper, +} + +impl Deref for ActivePageTable { + type Target = Mapper; + + fn deref(&self) -> &Mapper { + &self.mapper + } +} + +impl DerefMut for ActivePageTable { + fn deref_mut(&mut self) -> &mut Mapper { + &mut self.mapper + } +} + +impl ActivePageTable { + unsafe fn new() -> ActivePageTable { + ActivePageTable { + mapper: Mapper::new(), + } + } +} + pub struct InactivePageTable { p4_frame: Frame, }