diff --git a/src/riscv/lib/src/machine_state/memory/buddy.rs b/src/riscv/lib/src/machine_state/memory/buddy.rs index 091ffbbd122667a2270d9a985bec46753e34cd56..8d7016f984ba44a0bed18653af1d395f767f2344 100644 --- a/src/riscv/lib/src/machine_state/memory/buddy.rs +++ b/src/riscv/lib/src/machine_state/memory/buddy.rs @@ -85,12 +85,6 @@ pub trait Buddy: NewState { where M: ManagerRead; - /// Perform a deep refresh of the memory manager infos. - #[cfg(test)] - fn deep_refresh(&mut self) - where - M: ManagerReadWrite; - /// Clone the memory manager state. fn clone(&self) -> Self where @@ -130,7 +124,6 @@ mod tests { let mut manager = F::manager(); let mut state = ::Buddy::new(&mut manager); - state.deep_refresh(); let total_pages = state.longest_free_sequence(); @@ -156,7 +149,6 @@ mod tests { let mut manager = F::manager(); let mut state = ::Buddy::new(&mut manager); - state.deep_refresh(); let total_pages = state.longest_free_sequence(); @@ -192,7 +184,6 @@ mod tests { let mut manager = F::manager(); let mut state = ::Buddy::new(&mut manager); - state.deep_refresh(); // Create a distribution of allocation sizes that when used together would allocate all // available memory diff --git a/src/riscv/lib/src/machine_state/memory/buddy/branch.rs b/src/riscv/lib/src/machine_state/memory/buddy/branch.rs index ac45123a391da8f570ae0f7eb99f52721f91207a..56bc99a48a2587bea5a43f08f050063c32c8f066 100644 --- a/src/riscv/lib/src/machine_state/memory/buddy/branch.rs +++ b/src/riscv/lib/src/machine_state/memory/buddy/branch.rs @@ -9,7 +9,6 @@ use serde::Serialize; use super::Buddy; use super::BuddyLayout; -use crate::default::ConstDefault; use crate::state::NewState; use crate::state_backend::Atom; use crate::state_backend::Cell; @@ -46,17 +45,6 @@ pub struct FreeInfo { right_free_end: u64, } -impl ConstDefault for FreeInfo { - const DEFAULT: Self = FreeInfo { - left_longest_free_sequence: !0, - left_free_start: !0, - left_free_end: !0, - right_longest_free_sequence: !0, - right_free_start: !0, - right_free_end: !0, - }; -} - struct_layout! { pub struct BuddyBranch2Layout { free_info: Atom, @@ -113,7 +101,7 @@ impl, M: ManagerBase> BuddyBranch2 { impl NewState for BuddyBranch2 where - B: NewState, + B: Buddy, M: ManagerBase, { fn new(manager: &mut M) -> Self @@ -121,7 +109,14 @@ where M: ManagerAlloc, { Self { - free_info: Cell::new(manager), + free_info: Cell::new_with(manager, FreeInfo { + left_longest_free_sequence: B::PAGES, + left_free_start: B::PAGES, + left_free_end: B::PAGES, + right_longest_free_sequence: B::PAGES, + right_free_start: B::PAGES, + right_free_end: B::PAGES, + }), left: Box::new(B::new(manager)), right: Box::new(B::new(manager)), } @@ -283,18 +278,6 @@ where self.free_info.left_free_end.saturating_add(B::PAGES) } - #[cfg(test)] - fn deep_refresh(&mut self) - where - M: ManagerReadWrite, - { - // TODO: RV-568: `FreeInfo` of `BuddyBranch2` is incorrectly initialised - - self.left.deep_refresh(); - self.right.deep_refresh(); - self.refresh(); - } - fn clone(&self) -> Self where M: ManagerClone, diff --git a/src/riscv/lib/src/machine_state/memory/buddy/branch_combinations.rs b/src/riscv/lib/src/machine_state/memory/buddy/branch_combinations.rs index e13468162894ac5f84cbd744c161bb318ea57ad4..c880c1262e31772014cfa7c540db1391fc3b20ba 100644 --- a/src/riscv/lib/src/machine_state/memory/buddy/branch_combinations.rs +++ b/src/riscv/lib/src/machine_state/memory/buddy/branch_combinations.rs @@ -176,7 +176,7 @@ macro_rules! combined_buddy_branch { impl NewState for $name where - B: NewState, + B: Buddy, M: ManagerBase, { fn new(manager: &mut M) -> Self @@ -236,14 +236,6 @@ macro_rules! combined_buddy_branch { self.0.count_free_end() } - #[cfg(test)] - fn deep_refresh(&mut self) - where - M: ManagerReadWrite - { - self.0.deep_refresh() - } - fn clone(&self) -> Self where M: ManagerClone, diff --git a/src/riscv/lib/src/machine_state/memory/buddy/leaf.rs b/src/riscv/lib/src/machine_state/memory/buddy/leaf.rs index 45170db061e739c1731954c7d75540a95762e546..a252d71c3eba80766a390efc1c6c016ba598ce84 100644 --- a/src/riscv/lib/src/machine_state/memory/buddy/leaf.rs +++ b/src/riscv/lib/src/machine_state/memory/buddy/leaf.rs @@ -217,14 +217,6 @@ impl Buddy for BuddyLeaf { (self.set.read().leading_zeros() as u64).saturating_sub(leading_unused_bits) } - #[cfg(test)] - fn deep_refresh(&mut self) - where - M: ManagerReadWrite, - { - // There is no extra information to be updated - } - fn clone(&self) -> Self where M: ManagerClone,