zephyr::sys::sync::semaphore

Struct Semaphore

Source
pub struct Semaphore(/* private fields */);
Expand description

General Zephyr Semaphores

Implementations§

Source§

impl Semaphore

Source

pub const fn new(initial_count: c_uint, limit: c_uint) -> 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.

Note that this API has changed, and it now doesn’t return a Result, since the Result time generally doesn’t work (in stable rust) with const.

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 take_async<'a>( &'a self, timeout: impl Into<Timeout>, ) -> impl Future<Output = Result<()>> + 'a

Take a semaphore, async version.

Returns a future that either waits for the semaphore, or returns status.

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(&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(&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.