|
本帖最后由 xueren 于 2013-7-16 02:13 編輯
任務(wù)控制塊的初始化是在創(chuàng)建任務(wù)的時(shí)候必須要執(zhí)行的操作,對(duì)任務(wù)控制塊和一些相關(guān)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了處理。
內(nèi)核在進(jìn)行任務(wù)調(diào)度的時(shí)候,必須知道哪個(gè)任務(wù)在運(yùn)行、哪個(gè)任務(wù)是就緒的最高優(yōu)先級(jí)的任務(wù)。任務(wù)控制塊初始化函數(shù)OS_TCBInit聲明如下:
50.png (41.01 KB, 下載次數(shù): 79)
下載附件
2013-7-16 02:11 上傳
50.png (49.76 KB, 下載次數(shù): 65)
下載附件
2013-7-16 02:09 上傳
52.png (23.92 KB, 下載次數(shù): 64)
下載附件
2013-7-16 02:08 上傳
這個(gè)函數(shù)是uC/OS-II的內(nèi)部函數(shù),當(dāng)任務(wù)被創(chuàng)建的時(shí)候用來(lái)初始化任務(wù)控制塊。
參數(shù)解析如下:
* pri: 被創(chuàng)建的任務(wù)的優(yōu)先級(jí)
* ptos: 任務(wù)堆棧棧頂?shù)牡刂?br />
* pbos: 任務(wù)堆棧棧底的地址,如果是使用OSTaskCreate()創(chuàng)建的任務(wù),那么是沒有擴(kuò)展功能的,不能進(jìn)行堆棧檢查,就不合適用pbos這個(gè)參數(shù),這個(gè)參數(shù)可以傳遞為NULL。
* id: 任務(wù)的ID,16位,取值范圍是0~65535。
* stk_size: 堆棧的大小。
* pext: 任務(wù)控制塊的擴(kuò)展塊的地址。
* opt: 其他的選項(xiàng)。
返回值如下:
* OS_ERR_NONE: 成功調(diào)用。
* OS_EER_TASK_NO_MORE_TCB: 如果沒有空閑的任務(wù)控制塊。
注意:該函數(shù)屬于操作系統(tǒng)內(nèi)部函數(shù),不應(yīng)該在外部調(diào)用。
在操作系統(tǒng)要?jiǎng)?chuàng)建一個(gè)任務(wù)時(shí),如果空閑任務(wù)控制塊鏈表中有任務(wù)控制塊,說(shuō)明可以創(chuàng)建任務(wù),這時(shí)將取下一個(gè)任務(wù)塊,并給任務(wù)控制塊的各個(gè)域進(jìn)行賦值,隨后調(diào)用兩個(gè)鉤子函數(shù),這兩個(gè)鉤子函數(shù)允許用戶自己填寫代碼,默認(rèn)為空。隨后對(duì)任務(wù)優(yōu)先級(jí)指針表和就緒組及就緒表進(jìn)行相關(guān)操作,如下圖所示:
53.png (19.68 KB, 下載次數(shù): 68)
下載附件
2013-7-16 02:08 上傳
|
|