32 "RoundRobinScheduler::Enqueue: ready_queue full, dropping task");
36 task->sched_info.time_slice_remaining =
37 task->sched_info.time_slice_default;
91 [[nodiscard]]
auto IsEmpty() const ->
bool override {
106 task->sched_info.time_slice_remaining =
107 task->sched_info.time_slice_default;
132 etl::list<TaskControlBlock*, kernel::config::kMaxReadyTasks>
ready_queue_;
etl::list< TaskControlBlock *, kernel::config::kMaxReadyTasks > ready_queue_
就绪队列 (双向链表,支持从头部取、向尾部放,固定容量)
RoundRobinScheduler(const RoundRobinScheduler &)=delete
auto OnPreempted(TaskControlBlock *task) -> void override
任务被抢占时调用
auto operator=(RoundRobinScheduler &&) -> RoundRobinScheduler &=delete
auto Dequeue(TaskControlBlock *task) -> void override
从就绪队列中移除指定任务
auto OnTimeSliceExpired(TaskControlBlock *task) -> bool override
时间片耗尽处理
RoundRobinScheduler()=default
auto PickNext() -> TaskControlBlock *override
选择下一个要运行的任务
auto operator=(const RoundRobinScheduler &) -> RoundRobinScheduler &=delete
auto Enqueue(TaskControlBlock *task) -> void override
将任务加入就绪队列尾部
auto GetQueueSize() const -> size_t override
获取就绪队列大小
~RoundRobinScheduler() override=default
RoundRobinScheduler(RoundRobinScheduler &&)=delete
auto IsEmpty() const -> bool override
判断队列是否为空
auto Err(etl::format_string< Args... > fmt, Args &&... args) -> void
以 ERROR 级别记录日志
size_t total_dequeues
总出队次数
size_t total_preemptions
总抢占次数
size_t total_enqueues
总入队次数