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

时间:2012-03-09 08:40:25

标签: linux-kernel real-time

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

for_each-leaf_rt-rq(rt_rq, rq)
    ....
    if (next && next->prio < idx)
        continue;

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

if (next && next->prio <= idx)
    continue;

...

谢谢, 迈克尔

1 个答案:

答案 0 :(得分:0)

它看起来像一个小虫子;请带到内核邮件列表。随附补丁,你可以成名。 :)