#[repr(u8)]pub enum WakeSourceId {
CallerBudget,
Timer,
Session,
Platform(u8),
RouteDeadline,
}Expand description
phase-436 B2 — the other half of the seam, for the boards that now use it.
port_park above is what a port hands the executor to WAIT with;
these are what it hands the executor to be told WHEN. A board registering
a deadline source receives a WakeSourceId and reads it back out of
Executor::last_park(), so without this re-export it could match on
neither.
phase-436 — which deadline source bounded the last park.
Attribution is what turns “why did we wake” from a guess into a number. Recording it costs one byte per spin and is the difference between a schedulability argument you can audit and one you have to trust.
Variants§
CallerBudget
The spin_once caller’s own timeout — always a member of the source
set, which is why the park is never unbounded.
Timer
A registered timer’s next expiry (issue 1192).
Session
The backend’s next internal event (lease keepalive, heartbeat,
ACK-NACK). Folded into the same min as everything else rather than
capping the budget separately upstream, so one rule decides the park
and one attribution explains it.
Platform(u8)
A source the PLATFORM registered: a k_poll event set, an epoll
group, a FreeRTOS queue set, a ThreadX event-flags group, or a
bare-metal device ISR. The core never names an RTOS; it only asks each
registered source when it will next need the executor.
RouteDeadline
phase-503 — the earliest deadline of a pending supervised route: the
park ends there so route-deadline-runtime judges it on time.
Trait Implementations§
Source§impl Clone for WakeSourceId
impl Clone for WakeSourceId
Source§fn clone(&self) -> WakeSourceId
fn clone(&self) -> WakeSourceId
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more