miri::concurrency::data_race

Struct ThreadClockSet

Source
pub(super) struct ThreadClockSet {
    pub(super) clock: VClock,
    fence_acquire: VClock,
    fence_release: VClock,
    pub(super) write_seqcst: VClock,
    pub(super) read_seqcst: VClock,
}
Expand description

The current set of vector clocks describing the state of a thread, contains the happens-before clock and additional metadata to model atomic fence operations.

Fields§

§clock: VClock

The increasing clock representing timestamps that happen-before this thread.

§fence_acquire: VClock

The set of timestamps that will happen-before this thread once it performs an acquire fence.

§fence_release: VClock

The last timestamp of happens-before relations that have been released by this thread by a release fence.

§write_seqcst: VClock

Timestamps of the last SC write performed by each thread, updated when this thread performs an SC fence. This is never acquired into the thread’s clock, it just limits which old writes can be seen in weak memory emulation.

§read_seqcst: VClock

Timestamps of the last SC fence performed by each thread, updated when this thread performs an SC read. This is never acquired into the thread’s clock, it just limits which old writes can be seen in weak memory emulation.

Implementations§

Source§

impl ThreadClockSet

Source

fn apply_release_fence(&mut self)

Apply the effects of a release fence to this set of thread vector clocks.

Source

fn apply_acquire_fence(&mut self)

Apply the effects of an acquire fence to this set of thread vector clocks.

Source

fn increment_clock(&mut self, index: VectorIdx, current_span: Span)

Increment the happens-before clock at a known index.

Source

fn join_with(&mut self, other: &ThreadClockSet)

Join the happens-before clock with that of another thread, used to model thread join operations.

Trait Implementations§

Source§

impl Clone for ThreadClockSet

Source§

fn clone(&self) -> ThreadClockSet

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ThreadClockSet

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ThreadClockSet

Source§

fn default() -> ThreadClockSet

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 320 bytes