pub struct Guards<'rcu, C: PageTableConfig> {
pub guards: Map<usize, Option<PageTableGuard<'rcu, C>>>,
}Fields§
§guards: Map<usize, Option<PageTableGuard<'rcu, C>>>Implementations§
Source§impl<'rcu, C: PageTableConfig> Guards<'rcu, C>
impl<'rcu, C: PageTableConfig> Guards<'rcu, C>
Sourcepub open spec fn lock_held(self, addr: usize) -> bool
pub open spec fn lock_held(self, addr: usize) -> bool
{ self.guards.contains_key(addr) && self.guards[addr] is None }Sourcepub proof fn take(tracked &mut self, addr: usize) -> tracked guard : PageTableGuard<'rcu, C>
pub proof fn take(tracked &mut self, addr: usize) -> tracked guard : PageTableGuard<'rcu, C>
requires
old(self).locked(addr),old(self).guards[addr] is Some,ensuresfinal(self).lock_held(addr),guard == old(self).guards[addr].unwrap(),Sourcepub proof fn put(tracked &mut self, addr: usize, tracked guard: PageTableGuard<'rcu, C>)
pub proof fn put(tracked &mut self, addr: usize, tracked guard: PageTableGuard<'rcu, C>)
requires
old(self).lock_held(addr),ensuresfinal(self).locked(addr),final(self).guards[addr] == Some(guard),Auto Trait Implementations§
impl<'rcu, C> Freeze for Guards<'rcu, C>
impl<'rcu, C> !RefUnwindSafe for Guards<'rcu, C>
impl<'rcu, C> Send for Guards<'rcu, C>
impl<'rcu, C> Sync for Guards<'rcu, C>
impl<'rcu, C> Unpin for Guards<'rcu, C>where
C: Unpin,
impl<'rcu, C> UnsafeUnpin for Guards<'rcu, C>
impl<'rcu, C> !UnwindSafe for Guards<'rcu, C>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more