ucos-iii學習之就緒列表以及新增任務到就緒佇列
阿新 • • 發佈:2019-01-23
1.就緒列表
準備好執行的任務就被放到就緒列表中。
就緒列表是一個數組(OSRdyList[]),共有OS_CFG_PRIO_MAX條記錄,記錄的資料型別為OS_RDY_LIST,其中包含三個變數:.Entries 、.TailPtr 、.HeadPtr。
.Entries 中該優先順序的就緒任務數。當該優先順序中沒有任務就緒時,.Entries 就會被設定為 0。
.TailPtr 和.HeadPtr 用於該優先順序就緒任務的建立雙向列表。.HeadPtr 指向列表的頭部,.TailPtr 指向列表的尾部。
2.新增任務到就緒佇列
常用OSTaskCreate()將任務插入到列表的末部。
OS_RdyListInsertTail()的作用是將新新增進來的 TCB 連結到就緒佇列中對應的優先順序記錄。
OSTaskCreate()還會呼叫 OS_PrioInsert()設定位映像表中的相應位。
3.總結
就緒佇列包含兩個資料結構:位映像表儲存了哪個優先順序中有任務待執行,優先順序列表中包含了這該優先順序下等待執行的任務。