Skip to main content

IrqWaitDrain

Struct IrqWaitDrain 

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

Revoked IRQ registration waiting out an in-flight notification claim.

A drain never writes registration state. The notifier’s Notifying claim covers every access to the node and its wake payload, and publishes Detached as its final action, so this type only needs to observe that publication before the registration may be reused.

Implementations§

Source§

impl IrqWaitDrain

Source

pub fn is_quiescent(&self) -> bool

Reports whether the in-flight notifier has published its release.

Source

pub fn finish(self)

Waits until the in-flight notifier has published its release.

Every notifier section runs in hard IRQ or with preemption disabled, so the claim always ends in bounded time. This is Linux’s hard-path irq_work_sync() shape (while (irq_work_is_busy(work)) cpu_relax();): a park would require exactly the post-release completion wake that the Notifying-covers-everything ownership rule removes.

Trait Implementations§

Source§

impl Debug for IrqWaitDrain

Source§

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

Formats the value using the given formatter. 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> 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, 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.