首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pick_next_highest_task_rt函数中,如果next->prio <= idx,我们应该继续吗?

在pick_next_highest_task_rt函数中,如果next->prio <= idx,我们应该继续吗?
EN

Stack Overflow用户
提问于 2012-03-09 16:40:25
回答 1查看 83关注 0票数 0

我正在研究linux-3.2.9内核,在sched_rt.c函数pick_next_highest_task_rt()中有一个for循环,它查看所有的rt_rq来查找(下一个)最高的任务。但我对这个"if“条件感到困惑:

代码语言:javascript
复制
for_each-leaf_rt-rq(rt_rq, rq)
    ....
    if (next && next->prio < idx)
        continue;

在这里,next是一个task_struct *,如果已经找到了一个,idx是当前rt_rq上的最高优先级(较低的数值)。在上面的代码中,如果next->prio == idx,那么if条件将失败,我们将去扫描当前的rt_rq。但我认为这将是浪费时间,因为我们将找到的最高优先级任务将具有优先级idx,这与next指出的任务的优先级相同。那么if条件不应该是:

代码语言:javascript
复制
if (next && next->prio <= idx)
    continue;

??

谢谢,迈克尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-13 16:40:08

它看起来像是一个小bug;请关注内核邮件列表。配上一块补丁,你就会出名。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9631099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档