Struct kernel::scheduler::cooperative::CooperativeSched
source · pub struct CooperativeSched<'a> {
pub processes: List<'a, CoopProcessNode<'a>>,
}
Expand description
Cooperative Scheduler
Fields§
§processes: List<'a, CoopProcessNode<'a>>
Implementations§
source§impl<'a> CooperativeSched<'a>
impl<'a> CooperativeSched<'a>
pub const fn new() -> CooperativeSched<'a>
Trait Implementations§
source§impl<'a, C: Chip> Scheduler<C> for CooperativeSched<'a>
impl<'a, C: Chip> Scheduler<C> for CooperativeSched<'a>
source§fn next(&self) -> SchedulingDecision
fn next(&self) -> SchedulingDecision
Decide which process to run next. Read more
source§fn result(&self, result: StoppedExecutingReason, _: Option<u32>)
fn result(&self, result: StoppedExecutingReason, _: Option<u32>)
Inform the scheduler of why the last process stopped executing, and how
long it executed for. Notably,
execution_time_us
will be None
if the the scheduler requested this process be run cooperatively.source§unsafe fn execute_kernel_work(&self, chip: &C)
unsafe fn execute_kernel_work(&self, chip: &C)
Tell the scheduler to execute kernel work such as interrupt bottom
halves and dynamic deferred calls. Most schedulers will use this default
implementation, but schedulers which at times wish to defer interrupt
handling will reimplement it. Read more
source§unsafe fn do_kernel_work_now(&self, chip: &C) -> bool
unsafe fn do_kernel_work_now(&self, chip: &C) -> bool
Ask the scheduler whether to take a break from executing userspace
processes to handle kernel tasks. Most schedulers will use this default
implementation, which always prioritizes kernel work, but schedulers
that wish to defer interrupt handling may reimplement it.
Auto Trait Implementations§
impl<'a> !Freeze for CooperativeSched<'a>
impl<'a> !RefUnwindSafe for CooperativeSched<'a>
impl<'a> !Send for CooperativeSched<'a>
impl<'a> !Sync for CooperativeSched<'a>
impl<'a> Unpin for CooperativeSched<'a>
impl<'a> !UnwindSafe for CooperativeSched<'a>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more