Struct vstd::atomic::PAtomicU64
source · pub struct PAtomicU64 { /* private fields */ }
Implementations§
source§impl PAtomicU64
impl PAtomicU64
sourcepub const exec fn new(i: u64) -> res : (PAtomicU64, Tracked<PermissionU64>)
pub const exec fn new(i: u64) -> res : (PAtomicU64, Tracked<PermissionU64>)
ensures
equal(
res.1@.view(),
PermissionDataU64 {
patomic: res.0.id(),
value: i,
},
),
sourcepub exec fn load(&self, Tracked(perm): Tracked<&PermissionU64>) -> ret : u64
pub exec fn load(&self, Tracked(perm): Tracked<&PermissionU64>) -> ret : u64
requires
equal(self.id(), perm.view().patomic),
ensuresequal(perm.view().value, ret),
sourcepub exec fn store(&self, Tracked(perm): Tracked<&mut PermissionU64>, v: u64)
pub exec fn store(&self, Tracked(perm): Tracked<&mut PermissionU64>, v: u64)
requires
equal(self.id(), old(perm).view().patomic),
ensuresequal(perm.view().value, v) && equal(self.id(), perm.view().patomic),
sourcepub exec fn compare_exchange(
&self,
verus_tmp_perm: Tracked<&mut PermissionU64>,
current: u64,
new: u64
) -> ret : Result<u64, u64>
pub exec fn compare_exchange( &self, verus_tmp_perm: Tracked<&mut PermissionU64>, current: u64, new: u64 ) -> ret : Result<u64, u64>
requires
equal(self.id(), old(perm).view().patomic),
ensuresequal(self.id(), perm.view().patomic)
&& match ret {
Result::Ok(r) => {
current == old(perm).view().value && equal(perm.view().value, new)
&& equal(r, old(perm).view().value)
}
Result::Err(r) => {
current != old(perm).view().value
&& equal(perm.view().value, old(perm).view().value)
&& equal(r, old(perm).view().value)
}
},
sourcepub exec fn compare_exchange_weak(
&self,
verus_tmp_perm: Tracked<&mut PermissionU64>,
current: u64,
new: u64
) -> ret : Result<u64, u64>
pub exec fn compare_exchange_weak( &self, verus_tmp_perm: Tracked<&mut PermissionU64>, current: u64, new: u64 ) -> ret : Result<u64, u64>
requires
equal(self.id(), old(perm).view().patomic),
ensuresequal(self.id(), perm.view().patomic)
&& match ret {
Result::Ok(r) => {
current == old(perm).view().value && equal(perm.view().value, new)
&& equal(r, old(perm).view().value)
}
Result::Err(r) => {
equal(perm.view().value, old(perm).view().value)
&& equal(r, old(perm).view().value)
}
},
sourcepub exec fn swap(&self, Tracked(perm): Tracked<&mut PermissionU64>, v: u64) -> ret : u64
pub exec fn swap(&self, Tracked(perm): Tracked<&mut PermissionU64>, v: u64) -> ret : u64
requires
equal(self.id(), old(perm).view().patomic),
ensuresequal(perm.view().value, v) && equal(old(perm).view().value, ret)
&& equal(self.id(), perm.view().patomic),
sourcepub exec fn into_inner(self, Tracked(perm): Tracked<PermissionU64>) -> ret : u64
pub exec fn into_inner(self, Tracked(perm): Tracked<PermissionU64>) -> ret : u64
requires
equal(self.id(), perm.view().patomic),
ensuresequal(perm.view().value, ret),
sourcepub exec fn fetch_add_wrapping(
&self,
verus_tmp_perm: Tracked<&mut PermissionU64>,
n: u64
) -> ret : u64
pub exec fn fetch_add_wrapping( &self, verus_tmp_perm: Tracked<&mut PermissionU64>, n: u64 ) -> ret : u64
requires
equal(self.id(), old(perm).view().patomic),
ensuresequal(old(perm).view().value, ret),
perm.view().patomic == old(perm).view().patomic,
perm.view().value as int == wrapping_add_u64(old(perm).view().value as int, n as int),
sourcepub exec fn fetch_sub_wrapping(
&self,
verus_tmp_perm: Tracked<&mut PermissionU64>,
n: u64
) -> ret : u64
pub exec fn fetch_sub_wrapping( &self, verus_tmp_perm: Tracked<&mut PermissionU64>, n: u64 ) -> ret : u64
requires
equal(self.id(), old(perm).view().patomic),
ensuresequal(old(perm).view().value, ret),
perm.view().patomic == old(perm).view().patomic,
perm.view().value as int == wrapping_sub_u64(old(perm).view().value as int, n as int),
sourcepub exec fn fetch_add(
&self,
verus_tmp_perm: Tracked<&mut PermissionU64>,
n: u64
) -> ret : u64
pub exec fn fetch_add( &self, verus_tmp_perm: Tracked<&mut PermissionU64>, n: u64 ) -> ret : u64
requires
equal(self.id(), old(perm).view().patomic),
(<u64>::MIN as int) <= old(perm).view().value + n,
old(perm).view().value + n <= (<u64>::MAX as int),
ensuresequal(old(perm).view().value, ret),
perm.view().patomic == old(perm).view().patomic,
perm.view().value == old(perm).view().value + n,
sourcepub exec fn fetch_sub(
&self,
verus_tmp_perm: Tracked<&mut PermissionU64>,
n: u64
) -> ret : u64
pub exec fn fetch_sub( &self, verus_tmp_perm: Tracked<&mut PermissionU64>, n: u64 ) -> ret : u64
requires
equal(self.id(), old(perm).view().patomic),
(<u64>::MIN as int) <= old(perm).view().value - n,
old(perm).view().value - n <= <u64>::MAX as int,
ensuresequal(old(perm).view().value, ret),
perm.view().patomic == old(perm).view().patomic,
perm.view().value == old(perm).view().value - n,
sourcepub exec fn fetch_and(
&self,
verus_tmp_perm: Tracked<&mut PermissionU64>,
n: u64
) -> ret : u64
pub exec fn fetch_and( &self, verus_tmp_perm: Tracked<&mut PermissionU64>, n: u64 ) -> ret : u64
requires
equal(self.id(), old(perm).view().patomic),
ensuresequal(old(perm).view().value, ret),
perm.view().patomic == old(perm).view().patomic,
perm.view().value == (old(perm).view().value & n),
sourcepub exec fn fetch_or(
&self,
verus_tmp_perm: Tracked<&mut PermissionU64>,
n: u64
) -> ret : u64
pub exec fn fetch_or( &self, verus_tmp_perm: Tracked<&mut PermissionU64>, n: u64 ) -> ret : u64
requires
equal(self.id(), old(perm).view().patomic),
ensuresequal(old(perm).view().value, ret),
perm.view().patomic == old(perm).view().patomic,
perm.view().value == (old(perm).view().value | n),
sourcepub exec fn fetch_xor(
&self,
verus_tmp_perm: Tracked<&mut PermissionU64>,
n: u64
) -> ret : u64
pub exec fn fetch_xor( &self, verus_tmp_perm: Tracked<&mut PermissionU64>, n: u64 ) -> ret : u64
requires
equal(self.id(), old(perm).view().patomic),
ensuresequal(old(perm).view().value, ret),
perm.view().patomic == old(perm).view().patomic,
perm.view().value == (old(perm).view().value ^ n),
sourcepub exec fn fetch_nand(
&self,
verus_tmp_perm: Tracked<&mut PermissionU64>,
n: u64
) -> ret : u64
pub exec fn fetch_nand( &self, verus_tmp_perm: Tracked<&mut PermissionU64>, n: u64 ) -> ret : u64
requires
equal(self.id(), old(perm).view().patomic),
ensuresequal(old(perm).view().value, ret),
perm.view().patomic == old(perm).view().patomic,
perm.view().value == !(old(perm).view().value & n),
sourcepub exec fn fetch_max(
&self,
verus_tmp_perm: Tracked<&mut PermissionU64>,
n: u64
) -> ret : u64
pub exec fn fetch_max( &self, verus_tmp_perm: Tracked<&mut PermissionU64>, n: u64 ) -> ret : u64
requires
equal(self.id(), old(perm).view().patomic),
ensuresequal(old(perm).view().value, ret),
perm.view().patomic == old(perm).view().patomic,
perm.view().value
== (if old(perm).view().value > n { old(perm).view().value } else { n }),
sourcepub exec fn fetch_min(
&self,
verus_tmp_perm: Tracked<&mut PermissionU64>,
n: u64
) -> ret : u64
pub exec fn fetch_min( &self, verus_tmp_perm: Tracked<&mut PermissionU64>, n: u64 ) -> ret : u64
requires
equal(self.id(), old(perm).view().patomic),
ensuresequal(old(perm).view().value, ret),
perm.view().patomic == old(perm).view().patomic,
perm.view().value
== (if old(perm).view().value < n { old(perm).view().value } else { n }),
Auto Trait Implementations§
impl RefUnwindSafe for PAtomicU64
impl Send for PAtomicU64
impl Sync for PAtomicU64
impl Unpin for PAtomicU64
impl UnwindSafe for PAtomicU64
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