cfs.h 778 B

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