From 96b0dc0c66bf7dfc860e78775ee8962a4ee32391 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Tue, 8 Dec 2015 22:47:39 +0100 Subject: [PATCH] Model page tables --- src/memory/paging/mod.rs | 1 + src/memory/paging/table.rs | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 src/memory/paging/table.rs diff --git a/src/memory/paging/mod.rs b/src/memory/paging/mod.rs index d0e7145f..53ad489b 100644 --- a/src/memory/paging/mod.rs +++ b/src/memory/paging/mod.rs @@ -1,4 +1,5 @@ mod entry; +mod table; const ENTRY_COUNT: usize = 512; diff --git a/src/memory/paging/table.rs b/src/memory/paging/table.rs new file mode 100644 index 00000000..0a1935e2 --- /dev/null +++ b/src/memory/paging/table.rs @@ -0,0 +1,29 @@ +use memory::paging::entry::*; +use memory::paging::ENTRY_COUNT; +use core::ops::{Index, IndexMut}; + +pub struct Table { + entries: [Entry; ENTRY_COUNT], +} + +impl Table { + pub fn zero(&mut self) { + for entry in self.entries.iter_mut() { + entry.set_unused(); + } + } +} + +impl Index for Table { + type Output = Entry; + + fn index(&self, index: usize) -> &Entry { + &self.entries[index] + } +} + +impl IndexMut for Table { + fn index_mut(&mut self, index: usize) -> &mut Entry { + &mut self.entries[index] + } +}