xref: /DragonOS/kernel/src/sched/idle.rs (revision f0c87a897fe813b7f06bf5a9e93c43ad9519dafd)
1*f0c87a89SGnoCiYeH use super::Scheduler;
2*f0c87a89SGnoCiYeH 
3*f0c87a89SGnoCiYeH pub struct IdleScheduler;
4*f0c87a89SGnoCiYeH 
5*f0c87a89SGnoCiYeH impl Scheduler for IdleScheduler {
enqueue( _rq: &mut super::CpuRunQueue, _pcb: alloc::sync::Arc<crate::process::ProcessControlBlock>, _flags: super::EnqueueFlag, )6*f0c87a89SGnoCiYeH     fn enqueue(
7*f0c87a89SGnoCiYeH         _rq: &mut super::CpuRunQueue,
8*f0c87a89SGnoCiYeH         _pcb: alloc::sync::Arc<crate::process::ProcessControlBlock>,
9*f0c87a89SGnoCiYeH         _flags: super::EnqueueFlag,
10*f0c87a89SGnoCiYeH     ) {
11*f0c87a89SGnoCiYeH         // idle已经被设置,无需入队
12*f0c87a89SGnoCiYeH     }
13*f0c87a89SGnoCiYeH 
dequeue( _rq: &mut super::CpuRunQueue, _pcb: alloc::sync::Arc<crate::process::ProcessControlBlock>, _flags: super::DequeueFlag, )14*f0c87a89SGnoCiYeH     fn dequeue(
15*f0c87a89SGnoCiYeH         _rq: &mut super::CpuRunQueue,
16*f0c87a89SGnoCiYeH         _pcb: alloc::sync::Arc<crate::process::ProcessControlBlock>,
17*f0c87a89SGnoCiYeH         _flags: super::DequeueFlag,
18*f0c87a89SGnoCiYeH     ) {
19*f0c87a89SGnoCiYeH     }
20*f0c87a89SGnoCiYeH 
yield_task(_rq: &mut super::CpuRunQueue)21*f0c87a89SGnoCiYeH     fn yield_task(_rq: &mut super::CpuRunQueue) {}
22*f0c87a89SGnoCiYeH 
check_preempt_currnet( rq: &mut super::CpuRunQueue, _pcb: &alloc::sync::Arc<crate::process::ProcessControlBlock>, _flags: super::WakeupFlags, )23*f0c87a89SGnoCiYeH     fn check_preempt_currnet(
24*f0c87a89SGnoCiYeH         rq: &mut super::CpuRunQueue,
25*f0c87a89SGnoCiYeH         _pcb: &alloc::sync::Arc<crate::process::ProcessControlBlock>,
26*f0c87a89SGnoCiYeH         _flags: super::WakeupFlags,
27*f0c87a89SGnoCiYeH     ) {
28*f0c87a89SGnoCiYeH         rq.resched_current();
29*f0c87a89SGnoCiYeH     }
30*f0c87a89SGnoCiYeH 
pick_task( _rq: &mut super::CpuRunQueue, ) -> Option<alloc::sync::Arc<crate::process::ProcessControlBlock>>31*f0c87a89SGnoCiYeH     fn pick_task(
32*f0c87a89SGnoCiYeH         _rq: &mut super::CpuRunQueue,
33*f0c87a89SGnoCiYeH     ) -> Option<alloc::sync::Arc<crate::process::ProcessControlBlock>> {
34*f0c87a89SGnoCiYeH         panic!()
35*f0c87a89SGnoCiYeH     }
36*f0c87a89SGnoCiYeH 
37*f0c87a89SGnoCiYeH     /// ### 表示idle被选中
38*f0c87a89SGnoCiYeH     ///
39*f0c87a89SGnoCiYeH     /// 主要做一些统计工作
pick_next_task( _rq: &mut super::CpuRunQueue, _pcb: Option<alloc::sync::Arc<crate::process::ProcessControlBlock>>, ) -> Option<alloc::sync::Arc<crate::process::ProcessControlBlock>>40*f0c87a89SGnoCiYeH     fn pick_next_task(
41*f0c87a89SGnoCiYeH         _rq: &mut super::CpuRunQueue,
42*f0c87a89SGnoCiYeH         _pcb: Option<alloc::sync::Arc<crate::process::ProcessControlBlock>>,
43*f0c87a89SGnoCiYeH     ) -> Option<alloc::sync::Arc<crate::process::ProcessControlBlock>> {
44*f0c87a89SGnoCiYeH         // TODO: Fixme
45*f0c87a89SGnoCiYeH         // 做一些统计工作
46*f0c87a89SGnoCiYeH         None
47*f0c87a89SGnoCiYeH     }
48*f0c87a89SGnoCiYeH 
tick( _rq: &mut super::CpuRunQueue, _pcb: alloc::sync::Arc<crate::process::ProcessControlBlock>, _queued: bool, )49*f0c87a89SGnoCiYeH     fn tick(
50*f0c87a89SGnoCiYeH         _rq: &mut super::CpuRunQueue,
51*f0c87a89SGnoCiYeH         _pcb: alloc::sync::Arc<crate::process::ProcessControlBlock>,
52*f0c87a89SGnoCiYeH         _queued: bool,
53*f0c87a89SGnoCiYeH     ) {
54*f0c87a89SGnoCiYeH         // Nothing to do
55*f0c87a89SGnoCiYeH     }
56*f0c87a89SGnoCiYeH 
task_fork(_pcb: alloc::sync::Arc<crate::process::ProcessControlBlock>)57*f0c87a89SGnoCiYeH     fn task_fork(_pcb: alloc::sync::Arc<crate::process::ProcessControlBlock>) {
58*f0c87a89SGnoCiYeH         todo!()
59*f0c87a89SGnoCiYeH     }
60*f0c87a89SGnoCiYeH 
put_prev_task( _rq: &mut super::CpuRunQueue, _prev: alloc::sync::Arc<crate::process::ProcessControlBlock>, )61*f0c87a89SGnoCiYeH     fn put_prev_task(
62*f0c87a89SGnoCiYeH         _rq: &mut super::CpuRunQueue,
63*f0c87a89SGnoCiYeH         _prev: alloc::sync::Arc<crate::process::ProcessControlBlock>,
64*f0c87a89SGnoCiYeH     ) {
65*f0c87a89SGnoCiYeH         // Nothing todo
66*f0c87a89SGnoCiYeH     }
67*f0c87a89SGnoCiYeH }
68