pub enum ThreadNotification {
NoAction,
SetBits(u32),
Increment,
SetValueWithOverwrite(u32),
SetValueWithoutOverwrite(u32),
}Expand description
Thread notification actions.
Defines different ways to notify a thread using the FreeRTOS task notification mechanism. Task notifications provide a lightweight alternative to semaphores and queues for simple signaling between threads or from ISRs to threads.
§Performance
Task notifications are faster and use less memory than semaphores or queues, but each thread has only one notification value (32 bits).
§Common Patterns
- Event Signaling: Use
IncrementorSetBitsto signal events - Value Passing: Use
SetValueWithOverwriteto pass a value - Non-Blocking Updates: Use
SetValueWithoutOverwriteto avoid data races
§Examples
use osal_rs::os::{Thread, ThreadNotification};
let thread = Thread::current();
// Increment notification counter
thread.notify(ThreadNotification::Increment);
// Set specific bits (can combine multiple events)
thread.notify(ThreadNotification::SetBits(0b1010));
// Set value, overwriting any existing value
thread.notify(ThreadNotification::SetValueWithOverwrite(42));
// Set value only if no pending notifications
thread.notify(ThreadNotification::SetValueWithoutOverwrite(100));Variants§
NoAction
Don’t update the notification value.
Can be used to just query whether a task has been notified.
SetBits(u32)
Bitwise OR the notification value with the specified bits.
Useful for setting multiple event flags that accumulate.
Increment
Increment the notification value by one.
Useful for counting events or implementing a lightweight counting semaphore.
SetValueWithOverwrite(u32)
Set the notification value, overwriting any existing value.
Use when you want to send a value and don’t care if it overwrites a previous unread value.
SetValueWithoutOverwrite(u32)
Set the notification value only if the receiving thread has no pending notifications.
Use when you want to avoid overwriting an unread value. Returns an error if a notification is already pending.
Trait Implementations§
Source§impl Clone for ThreadNotification
impl Clone for ThreadNotification
Source§fn clone(&self) -> ThreadNotification
fn clone(&self) -> ThreadNotification
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more