From cba8d9e6d80634b4b586b3f695d2054a25d69509 Mon Sep 17 00:00:00 2001 From: Yifan Wu Date: Thu, 13 Jan 2022 17:27:09 -0800 Subject: [PATCH] Now PageTable::unmap calls PageTable::find_pte instead of PageTable::find_pte_create. --- os/src/mm/page_table.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/os/src/mm/page_table.rs b/os/src/mm/page_table.rs index d1bc645f..0ce485ce 100644 --- a/os/src/mm/page_table.rs +++ b/os/src/mm/page_table.rs @@ -102,12 +102,12 @@ impl PageTable { } result } - fn find_pte(&self, vpn: VirtPageNum) -> Option<&PageTableEntry> { + fn find_pte(&self, vpn: VirtPageNum) -> Option<&mut PageTableEntry> { let idxs = vpn.indexes(); let mut ppn = self.root_ppn; - let mut result: Option<&PageTableEntry> = None; + let mut result: Option<&mut PageTableEntry> = None; for i in 0..3 { - let pte = &ppn.get_pte_array()[idxs[i]]; + let pte = &mut ppn.get_pte_array()[idxs[i]]; if i == 2 { result = Some(pte); break; @@ -127,7 +127,7 @@ impl PageTable { } #[allow(unused)] pub fn unmap(&mut self, vpn: VirtPageNum) { - let pte = self.find_pte_create(vpn).unwrap(); + let pte = self.find_pte(vpn).unwrap(); assert!(pte.is_valid(), "vpn {:?} is invalid before unmapping", vpn); *pte = PageTableEntry::empty(); }