pub struct TaskDeadlineQueue { /* private fields */ }Expand description
Fixed-capacity value heap created during CPU-local initialization.
Construction is the only operation that reserves memory. Arming, cancelling, and expiring never grow or shrink the allocation.
Implementations§
Source§impl TaskDeadlineQueue
impl TaskDeadlineQueue
Sourcepub fn new(capacity: usize) -> Self
pub fn new(capacity: usize) -> Self
Preallocates capacity independent slots for each typed timer class.
Sourcepub fn arm(
&mut self,
node: &TaskDeadlineNode,
deadline: MonotonicDeadline,
kind: TaskDeadlineKind,
) -> Result<TaskDeadlineRegistration, TaskDeadlineError>
pub fn arm( &mut self, node: &TaskDeadlineNode, deadline: MonotonicDeadline, kind: TaskDeadlineKind, ) -> Result<TaskDeadlineRegistration, TaskDeadlineError>
Arms a typed task deadline for an absolute monotonic deadline.
Rearming replaces this physical node’s previous entry in place. Distinct nodes for one thread remain independent, and each node consumes at most one preallocated heap slot.
§Errors
Returns TaskDeadlineError::Capacity without changing the queue or
consuming an arm generation if no heap slot remains. A node may retain
the lazily assigned identity used for this capacity check. Returns
TaskDeadlineError::GenerationExhausted instead of reusing an old
generation.
Queue mutation must remain serialized on its owner CPU. The returned
move-only registration owns the physical entry; the queue stores the
thread, generation, and event kind by value and does not retain node.
Sourcepub fn cancel(&mut self, registration: &TaskDeadlineRegistration) -> bool
pub fn cancel(&mut self, registration: &TaskDeadlineRegistration) -> bool
Cancels one matching arm operation and immediately releases its heap slot.
Unlike lazy tombstoning, physical removal releases capacity immediately and makes the registration terminal as soon as this method returns.
Sourcepub fn next_deadline(&self) -> Option<MonotonicDeadline>
pub fn next_deadline(&self) -> Option<MonotonicDeadline>
Returns the earliest logical task deadline without mutating the queue.
Sourcepub fn expire(
&mut self,
request: TaskDeadlineExpireRequest,
output: &mut [ExpiredTaskDeadline],
) -> TaskDeadlineExpireBatch
pub fn expire( &mut self, request: TaskDeadlineExpireRequest, output: &mut [ExpiredTaskDeadline], ) -> TaskDeadlineExpireBatch
Expires timers into caller-provided storage without allocating or invoking callbacks.