zephyr::sys::sync::semaphore

Struct Semaphore

source
pub struct Semaphore { /* private fields */ }
Expand description

A zephyr k_sem usable from safe Rust code.

Implementations§

source§

impl Semaphore

source

pub fn new(initial_count: c_uint, limit: c_uint) -> Result<Semaphore>

Create a new semaphore.

Create a new dynamically allocated Semaphore. This semaphore can only be used from system threads. The arguments are as described in the docs.

source

pub fn take<T>(&self, timeout: T) -> Result<()>
where T: Into<Timeout>,

Take a semaphore.

Can be called from ISR if called with NoWait.

source

pub fn give(&self)

Give a semaphore.

This routine gives to the semaphore, unless the semaphore is already at its maximum permitted count.

source

pub fn reset(&mut self)

Resets a semaphor’s count to zero.

This resets the count to zero. Any outstanding take calls will be aborted with Error(EAGAIN).

source

pub fn count_get(&mut self) -> usize

Get a semaphore’s count.

Returns the current count.

Trait Implementations§

source§

impl Debug for Semaphore

source§

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

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

impl Send for Semaphore

source§

impl Sync for Semaphore

By nature, Semaphores are both Sync and Send. Safety is handled by the underlying Zephyr implementation (which is why Clone is also implemented).

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.