任务调度接口¶
1. 任务类型定义¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
* 如果启用 sched_rr 特性,使用轮转调度(RR); * 如果启用 sched_cfs 特性,使用完全公平调度(CFS); * 否则,使用先进先出调度(FIFO)作为默认调度算法。
2. 任务调度器初始化¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
init_scheduler_secondary 函数用于初始化辅助 CPU 的任务调度器。初始化过程包括运行队列的初始化和定时器的初始化(如果启用了 irq 特性)。
用例:在系统启动时调用 init_scheduler 函数:
1 2 3 4 |
|
3. 任务创建¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
spawn_raw 函数根据给定的任务入口函数、任务名称和栈大小创建一个新任务,并调用 spawn_task 函数将其添加到运行队列中;
spawn 函数使用默认的任务名称和栈大小创建新任务。
用例:创建一个新任务:
1 2 3 4 5 6 7 8 9 |
|
4. 任务调度相关操作¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
sleep 函数使当前任务休眠指定的时间;
sleep_until 函数使当前任务休眠到指定的截止时间,如果未启用 irq 特性,将使用忙等待方式;
exit 函数用于终止当前任务。
用例:任务主动放弃 CPU 时间:
1 2 3 4 5 |
|
评论
作者: