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