Skip to main content

Fence

Struct Fence 

Source
pub struct Fence { /* private fields */ }
Expand description

The receiving counterpart of a DriverFence.

The Rust DMA fence implementation has a dualistic design: DriverFences are the producer-side, intended to be always owned by only one party. That party has the monopoly on signaling the fence.

A Fence is the counterpart for consumers. Thus, Fences are always refcounted and can shared with an arbitrary number of parties, including userspace. A Fence can only be used for actions such as checking the fence’s status or for registering callbacks on it.

Once the associated DriverFence signals, all FenceCallbackRegistrations registered on the Fence will be executed.

A Fence can arbitrarily outlive its DriverFence and the FenceContext. Signaling a DriverFence decouples it from its Fences.

Implementations§

Source§

impl Fence

Source

pub fn is_signaled(&self) -> bool

Check whether the fence was signaled at the moment of the function call.

Note that this can return true for a Fence whose DriverFence has not yet been dropped. The reason is that the fence ops callbacks can cause the fence to get signaled by the C backend.

Source

pub fn seqno(&self) -> u64

Get the fence’s sequence number.

Source

pub unsafe fn from_raw<'a>(ptr: *mut dma_fence) -> &'a Self

Create a Fence from a raw C [bindings::dma_fence].

§Safety

ptr must point to an initialized fence that is embedded into a Fence.

Trait Implementations§

Source§

impl AlwaysRefCounted for Fence

Source§

fn inc_ref(&self)

Increments the reference count on the object.
Source§

unsafe fn dec_ref(ptr: NonNull<Self>)

Decrements the reference count on the object. Read more
Source§

impl Send for Fence

Source§

impl Sync for Fence

Auto Trait Implementations§

§

impl !Freeze for Fence

§

impl !RefUnwindSafe for Fence

§

impl !Unpin for Fence

§

impl !UnsafeUnpin for Fence

§

impl UnwindSafe for Fence

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Init<T> for T

Source§

fn chain<F>(self, f: F) -> ChainInit<Self, F, T, E>
where F: FnOnce(&mut T) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
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<S, T> IntoSafeCast<T> for S
where T: FromSafeCast<S>,

Source§

fn into_safe_cast(self) -> T

Convert self into a T. This operation is guaranteed to be lossless.
Source§

impl<S, T> IntoSafeCastArch<T> for S
where T: FromSafeCastArch<S>,

Source§

fn into_safe_cast_arch(self) -> T

Convert self into a T. This operation is guaranteed to be lossless.
Source§

impl<T> KnownSize for T

Source§

const MIN_SIZE: usize = const MIN_SIZE: usize = size_of::<T>();

Minimum size of this type known at compile-time.
Source§

const MIN_ALIGN: Alignment = const MIN_ALIGN: Alignment = Alignment::of::<T>();

Minimum alignment of this type known at compile-time.
Source§

fn size(_: *const T) -> usize

Get the size of an object of this type in bytes, with the metadata of the given pointer.
Source§

impl<T> PinInit<T> for T

Source§

unsafe fn __init(self, slot: *mut T) -> Result<(), !>

Initializes slot. Read more
Source§

fn pin_chain<F>(self, f: F) -> ChainPinInit<Self, F, T, E>
where F: FnOnce(Pin<&mut T>) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<T, U, const N: u32> TryIntoBounded<T, N> for U
where T: Integer, U: TryInto<T>,

Source§

fn try_into_bounded(self) -> Option<Bounded<T, N>>

Attempts to convert self into a Bounded using N bits. Read more