Expand description
§embassy-executor
An async/await executor designed for embedded usage.
- No alloc, no heap needed.
- Tasks are statically allocated. Each task gets its own static, with the exact size to hold the task (or multiple instances of it, if usingpool_size) calculated automatically at compile time. If tasks don’t fit in RAM, this is detected at compile time by the linker. Runtime panics due to running out of memory are not possible.
- No “fixed capacity” data structures, executor works with 1 or 1000 tasks without needing config/tuning.
- Integrated timer queue: sleeping is easy, just do Timer::after_secs(1).await;.
- No busy-loop polling: CPU sleeps when there’s no work to do, using interrupts or WFE/SEV.
- Efficient polling: a wake will only poll the woken task, not all of them.
- Fair: a task can’t monopolize CPU time even if it’s constantly being woken. All other tasks get a chance to run before a given task gets polled for the second time.
- Creating multiple executor instances is supported, to run tasks with multiple priority levels. This allows higher-priority tasks to preempt lower-priority tasks.
§Feature flags
- nightly— Enable nightly-only features
- defmt— Enable defmt logging
- log— Enable log logging
§Architecture
- arch-std— std
- arch-cortex-m— Cortex-M
- arch-cortex-ar— Cortex-A/R
- arch-riscv32— RISC-V 32
- arch-wasm— WASM
- arch-avr— AVR
- arch-spin— spin (architecture agnostic; never sleeps)
§Metadata
- metadata-name— Enable the- namefield in task metadata.
§Executor
- executor-thread— Enable the thread-mode executor (using WFE/SEV in Cortex-M, WFI in other embedded archs)
- executor-interrupt— Enable the interrupt-mode executor (available in Cortex-M only)
- trace— Enable tracing hooks
- rtos-trace— Enable support for rtos-trace framework
- scheduler-deadline— Enable “Earliest Deadline First” Scheduler, using soft-realtime “deadlines” to prioritize tasks based on the remaining time before their deadline. Adds some overhead.
- scheduler-priority— Enable “Highest Priority First” Scheduler. Adds some overhead.
- embassy-time-driver— Enable the embassy_time_driver dependency. This can unlock extra APIs, for example for the- sheduler-deadline
Modules§
- raw
- Raw executor.
Structs§
- Executor
- Thread mode executor, using WFE/SEV.
- InterruptExecutor 
- Interrupt mode executor.
- Metadata
- Metadata associated with a task.
- SendSpawner 
- Handle to spawn tasks into an executor from any thread.
- SpawnToken 
- Token to spawn a newly-created task in an executor.
- Spawner
- Handle to spawn tasks into an executor.
Enums§
- SpawnError 
- Error returned when spawning a task.
Attribute Macros§
- main
- Creates a new executorinstance and declares an application entry point for Cortex-M spawning the corresponding function body as an async task.
- task
- Declares an async task that can be run by embassy-executor. The optionalpool_sizeparameter can be used to specify how many concurrent tasks can be spawned (default is 1) for the function.