Skip to main content

ExecLock

Struct ExecLock 

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

The executor’s lock: the port’s recursive priority-inheriting mutex and the two calls that take and give it. Installed once, before any second thread can reach the executor (super::Executor::set_exec_lock), and never changed while one can.

Implementations§

Source§

impl ExecLock

Source

pub unsafe fn new( ctx: *mut c_void, lock: ExecLockFn, unlock: ExecLockFn, ) -> Option<Self>

A lock over the port’s mutex at ctx, already initialised by the caller. None for a NULL ctx.

§Safety

ctx is NULL or an initialised recursive mutex that lock / unlock take and give, and it outlives every executor the lock is installed on.

Source

pub unsafe fn with_thread_id(self, id: ThreadIdFn) -> Self

This lock, with the port’s thread identity: a pass that holds it releases it around each user callback (phase-509 P9b item 2).

§Safety

id answers the calling thread’s identity, from any thread, equal on one thread and distinct across threads that are alive together.

Trait Implementations§

Source§

impl Clone for ExecLock

Source§

fn clone(&self) -> ExecLock

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for ExecLock

Source§

impl Debug for ExecLock

Source§

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

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

impl Send for ExecLock

Source§

impl Sync for ExecLock

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> 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.