Spinlock

Struct Spinlock 

Source
#[repr(C, align(16))]
pub struct Spinlock { /* private fields */ }
Expand description

A blocking cross core lock to guarantee mutual exclusive access. While this lock might block other cores to continue processing this lock should be held as short as possible. Also care shall be taken while using this lock within interrupt handlers, as this might lead to deadlock situations if the lock holding core is interrupted and the interrupt is also trying to aquire the same lock.

Implementations§

Source§

impl Spinlock

Source

pub const fn new() -> Spinlock

Create a new Spinlock. To ensure it is shared between cores, it’s typically assigned to a static variable

§Example
static LOCK: Spinlock = Spinlock::new();
Source

pub fn aquire(&self)

Aquire a spinlock. This will block the current core until the lock could be aquired.

§Example
static LOCK: Spinlock = Spinlock::new();
    LOCK.aquire();
    // execution continues only if the lock could be aquired
Source

pub fn release(&self)

Release an aquired spinlock.

§Example
static LOCK: Spinlock = Spinlock::new();
    LOCK.release();

Trait Implementations§

Source§

impl Debug for Spinlock

Source§

fn fmt(&self, f: &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 = 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.