pub trait LocalRunQueue<T = Task> {
// Required methods
fn current(&self) -> Option<&Arc<T>>;
fn update_current(&mut self, flags: UpdateFlags) -> bool;
fn pick_next_current(&mut self) -> Option<&Arc<T>>;
fn dequeue_current(&mut self) -> Option<Arc<T>>;
}
Expand description
The local view of a per-CPU runqueue.
This local view provides the interface for the runqueue of a CPU core to be inspected and manipulated by the code running on this particular CPU core.
Conceptually, a local runqueue consists of two parts: (1) a priority queue of runnable tasks; (2) the current running task. The exact definition of “priority” is left for the concrete implementation to decide.
Required Methods§
Sourcefn update_current(&mut self, flags: UpdateFlags) -> bool
fn update_current(&mut self, flags: UpdateFlags) -> bool
Updates the current runnable task’s scheduling statistics and potentially its position in the queue.
If the current runnable task needs to be preempted, the method returns true
.
Sourcefn pick_next_current(&mut self) -> Option<&Arc<T>>
fn pick_next_current(&mut self) -> Option<&Arc<T>>
Picks the next current runnable task.
This method returns the chosen next current runnable task. If there is no
candidate for next current runnable task, this method returns None
.
Sourcefn dequeue_current(&mut self) -> Option<Arc<T>>
fn dequeue_current(&mut self) -> Option<Arc<T>>
Removes the current runnable task from runqueue.
This method returns the current runnable task. If there is no current runnable
task, this method returns None
.