1 #pragma once
2 
3 #include <common/glib.h>
4 #include <process/process.h>
5 
6 // @todo: 用红黑树重写cfs的队列
7 struct sched_queue_t
8 {
9     long count;                 // 当前队列中的数量
10     long cpu_exec_proc_jiffies; // 进程可执行的时间片数量
11     struct process_control_block proc_queue;
12 };
13 
14 extern struct sched_queue_t sched_cfs_ready_queue[MAX_CPU_NUM]; // 就绪队列
15 
16 /**
17  * @brief 调度函数
18  *
19  */
20 void sched_cfs();
21 
22 /**
23  * @brief 将PCB加入就绪队列
24  *
25  * @param pcb
26  */
27 void sched_cfs_enqueue(struct process_control_block *pcb);
28 
29 /**
30  * @brief 从就绪队列中取出PCB
31  *
32  * @return struct process_control_block*
33  */
34 struct process_control_block *sched_cfs_dequeue();
35 /**
36  * @brief 初始化CFS进程调度器
37  *
38  */
39 void sched_cfs_init();
40