Parcourir la source

mm: remove `take()` from `PTE`

greatbridf il y a 8 mois
Parent
commit
b4e2516cbc
2 fichiers modifiés avec 6 ajouts et 7 suppressions
  1. 0 6
      arch/src/x86_64/mm.rs
  2. 6 1
      crates/eonix_mm/src/page_table/pte.rs

+ 0 - 6
arch/src/x86_64/mm.rs

@@ -52,12 +52,6 @@ impl PTE for PTE64 {
             PageAttribute64(self.0 & PA_MASK),
         )
     }
-
-    fn take(&mut self) -> (PFN, Self::Attr) {
-        let pfn_attr = self.get();
-        self.0 = 0;
-        pfn_attr
-    }
 }
 
 impl PagingMode for PagingMode4Levels {

+ 6 - 1
crates/eonix_mm/src/page_table/pte.rs

@@ -30,7 +30,12 @@ pub trait PTE: Sized {
 
     fn set(&mut self, pfn: PFN, attr: Self::Attr);
     fn get(&self) -> (PFN, Self::Attr);
-    fn take(&mut self) -> (PFN, Self::Attr);
+
+    fn take(&mut self) -> (PFN, Self::Attr) {
+        let pfn_attr = self.get();
+        self.set(PFN::from_val(0), Self::Attr::new());
+        pfn_attr
+    }
 
     fn set_pfn(&mut self, pfn: PFN) {
         self.set(pfn, self.get_attr());