cfs_rq 创建的源码
时间: 2024-03-17 19:41:14 浏览: 66
CFS.zip_CFS-GA_cfs
CFS 运行队列的创建主要是在 Linux 内核的调度器代码中实现的。下面是 CFS 运行队列的创建源码示例:
```c
static inline void
enqueue_task_cfs_rq(struct sched_entity *se, bool head)
{
struct cfs_rq *cfs_rq;
cfs_rq = task_cfs_rq(se->task);
update_curr(cfs_rq);
__enqueue_entity(cfs_rq, se, head);
}
```
上述代码实现了将一个调度实体(sched_entity)插入到相应 CFS 运行队列(cfs_rq)的操作,其中 `task_cfs_rq` 函数用于获取该调度实体所在的 CFS 运行队列。在将调度实体插入到队列时,会调用 `__enqueue_entity` 函数进行实际的操作。同时,还会调用 `update_curr` 函数更新队列中每个调度实体的当前 CPU 时间片(vruntime)和动态权重(load.weight),以便后续的调度决策。
阅读全文