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] + } +}