0
我正在學習linux-3.2.9內核,並在sched_rt.c函數pick_next_highest_task_rt()中有一個for循環,它查找所有rt_rq來查找(下一個)最高任務。但我這個「如果」條件疑惑:在pick_next_highest_task_rt函數中,如果next-> prio <= idx?
for_each-leaf_rt-rq(rt_rq, rq)
....
if (next && next->prio < idx)
continue;
這裏,旁邊是一個的task_struct *如果一個已經被找到,IDX是對當前rt_rq最高優先級(數值越低)。在上面的代碼中,如果next-> prio == idx,那麼if條件將失敗,我們將去掃描當前的rt_rq。但是我認爲這會浪費時間,因爲我們發現的最高優先級的任務將具有優先級idx,這與下一個任務指出的優先級相同。所以不應該如果條件是:
if (next && next->prio <= idx)
continue;
?? ??
感謝, 邁克爾
謝謝。我剛剛將補丁提交給LKML。讓我們看看會發生什麼...... – mwang25 2012-03-16 02:09:54
更新:Yong Zhang和Peter Zijlsra非常好,並引導我完成了幾個修訂版本,並重新發布了一個已被接受的補丁。我想它會在3.3.x中出現。 – mwang25 2012-03-23 07:13:39
另外,我瞭解到您應該遵循Documentation/SubmittingPatches中的說明。然後我建議您將整個補丁提交放在一個文本文件中,並在其上運行scripts/checkpatch.pl。 – mwang25 2012-03-23 07:17:46