sched.h 931 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. #include <common/glib.h>
  3. #include <process/process.h>
  4. #pragma GCC push_options
  5. #pragma GCC optimize("O0")
  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. extern struct sched_queue_t sched_cfs_ready_queue[MAX_CPU_NUM]; // 就绪队列
  14. /**
  15. * @brief 调度函数
  16. *
  17. */
  18. void sched_cfs();
  19. /**
  20. * @brief 将PCB加入就绪队列
  21. *
  22. * @param pcb
  23. */
  24. void sched_cfs_enqueue(struct process_control_block *pcb);
  25. /**
  26. * @brief 从就绪队列中取出PCB
  27. *
  28. * @return struct process_control_block*
  29. */
  30. struct process_control_block *sched_cfs_dequeue();
  31. /**
  32. * @brief 初始化进程调度器
  33. *
  34. */
  35. void sched_init();
  36. /**
  37. * @brief 当时钟中断到达时,更新时间片
  38. *
  39. */
  40. void sched_update_jiffies();
  41. #pragma GCC pop_options