diff --git a/kernel-rs/src/memory/paging/entry.rs b/kernel-rs/src/memory/paging/entry.rs index 506bbf6a..ae2b7355 100644 --- a/kernel-rs/src/memory/paging/entry.rs +++ b/kernel-rs/src/memory/paging/entry.rs @@ -19,7 +19,7 @@ bitflags! { impl Entry { pub fn is_unused(&self) -> bool { - self.0 == 0; + self.0 == 0 } pub fn set_unused(&mut self) { @@ -27,21 +27,21 @@ impl Entry { } pub fn flags(&self) -> EntryFlags { - EntryFlags::from_bits_truncate(self.0); + EntryFlags::from_bits_truncate(self.0) } pub fn pointed_frame(&self) -> Option { - if self.flags().contains(PRESENT) { + if self.flags().contains(EntryFlags::PRESENT) { Some(Frame::containing_address( - self.0 as usize & 0x000fffff_fffff000 // actual addr is bits 12-51 - )) + // actual addr is bits 12-51 + self.0 as usize & 0x000fffff_fffff000)) } else { None } } pub fn set(&mut self, frame: Frame, flags: EntryFlags) { - assert!!(frame.start_address() & !0x000fffff_fffff000 == 0); + assert!(frame.start_address() & !0x000fffff_fffff000 == 0); self.0 = (frame.start_address() as u64) | flags.bits(); } } diff --git a/kernel-rs/src/memory/paging/mod.rs b/kernel-rs/src/memory/paging/mod.rs index 17896565..a4fa45aa 100644 --- a/kernel-rs/src/memory/paging/mod.rs +++ b/kernel-rs/src/memory/paging/mod.rs @@ -1,3 +1,6 @@ +mod entry; +mod table; + use memory::PAGE_SIZE; const ENTRY_COUNT: usize = 512; diff --git a/kernel-rs/src/memory/paging/table.rs b/kernel-rs/src/memory/paging/table.rs index aa11a3ab..5a22f689 100644 --- a/kernel-rs/src/memory/paging/table.rs +++ b/kernel-rs/src/memory/paging/table.rs @@ -8,8 +8,10 @@ pub struct Table { } impl Table { - for entry in self.entries.iter_mut() { - entry.set_unused(); + pub fn zero(&mut self) { + for entry in self.entries.iter_mut() { + entry.set_unused(); + } } } @@ -22,7 +24,7 @@ impl Index for Table { } impl IndexMut for Table { - fn index(&self, index: usize) -> &mut Entry { + fn index_mut(&mut self, index: usize) -> &mut Entry { &mut self.entries[index] } }