#[derive(PartialEq, Eq)]
pub enum MonitorState {
OpenAccess,
ExclusiveAccess { address: u32 },
}
pub struct LocalMonitor {
pub state: MonitorState,
pub granule: u32,
}
impl LocalMonitor {
pub fn new(granule: u32) -> Self {
assert!(
granule.is_power_of_two(),
"Exclusives reservation granule must be a power of two."
);
assert!(
(granule >= 4) && (granule <= 512),
"Exclusive reservation granule must be in [4, 512]."
);
Self {
state: MonitorState::OpenAccess,
granule,
}
}
}