日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

VxWorks关于任务创建的几个函数的概述

發(fā)布時(shí)間:2023/12/15 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VxWorks关于任务创建的几个函数的概述 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? 對(duì)于VxWorks?的任務(wù)創(chuàng)建可以通過(guò)調(diào)用 taskSpawn()或是taskInit()/taskActivate()兩種方式,以下就對(duì)這兩種方式進(jìn)行說(shuō)明。

? taskSpawn() 實(shí)現(xiàn)任務(wù)的創(chuàng)建分為兩步:1、分配任務(wù)棧的空間,初始化WIND_TCB; 2、激活任務(wù)。taskSpawn()函數(shù)的定義,

int? taskSpawn (char *name,????????????? /*任務(wù)名稱(chēng)必須惟一的標(biāo)示*/

????????????????????????? int priority,??????????????? /*任務(wù)優(yōu)先級(jí)(0-255)越小標(biāo)示優(yōu)先級(jí)越高*/

????????????????????????? int options,?????????????? /*任務(wù)選項(xiàng)*/

??????????????????????????int stackSize,??????????? /*任務(wù)棧大小(不包含任務(wù)名稱(chēng))*/

????????????????????????? FUNCPTR entryPt,?????/*任務(wù)入口函數(shù)指針*/

????????????????????????? int arg1,int arg2, int arg3,int arg4, int arg5, int arg6,int arg7, int arg8, int arg9, int arg10)

函數(shù)調(diào)用成功時(shí),返回新任務(wù)的ID,或者返回ERROR。?

參數(shù)options任務(wù)選項(xiàng),可以是以下的標(biāo)志組合:

????????????? VX_FP_TASK:標(biāo)志浮點(diǎn)寄存器是否屬于上下文,若函數(shù)中使用了浮點(diǎn)數(shù),應(yīng)帶上此標(biāo)記。

????????????? VX_PRIVATE_ENV:支持任務(wù)私有環(huán)境變量。

????????????? VX_NO_STACK_FILL:不進(jìn)行初始任務(wù)棧的填充。

????????????? VX_UNBREAKABLE:任務(wù)不允許斷點(diǎn)調(diào)試(忽略斷點(diǎn))。

????????????? VX_DSP_TASK:DSP 協(xié)處理器支持。

????????????? VX_ALTIVEC_TASK:ALTIVEC 協(xié)處理器支持。

參數(shù)int型的10個(gè),主要傳入入口函數(shù)的參數(shù),若不足10個(gè),后面剩余的設(shè)為0。

?? taskInit()實(shí)現(xiàn)創(chuàng)建任務(wù),必須由taskActivate()來(lái)激活。以下就對(duì)這兩個(gè)函數(shù)進(jìn)行分解:

STATUS taskInit (WIND_TCB* Ptcb,???? /*任務(wù)控制塊WIND_TCB地址*/

????????????????????????? char* name,???????????? /*任務(wù)名稱(chēng)必須惟一的標(biāo)示*/

????????????????????????? int priority,?????????????? /*任務(wù)優(yōu)先級(jí)(0-255)越小標(biāo)示優(yōu)先級(jí)越高*/

????????????????????????? int options,???????????????/*任務(wù)選項(xiàng)*/

????????????????????????? char* pStackBase,?? /*任務(wù)棧的起始地址*/

???????????????????????? ?int stackSize,?????????? /*任務(wù)棧大小(不包含任務(wù)名稱(chēng))*/

??????????????????????????FUNCPTR entryPt,??? /*任務(wù)入口函數(shù)指針*/

??????????????????????????int arg1,int arg2, int arg3,int arg4, int arg5, int arg6,int arg7, int arg8, int arg9, int arg10)

與taskSpawn() 相比多了兩個(gè)參數(shù)WIND_TCB*和char* pStackBase,任務(wù)控制塊參數(shù)由調(diào)用者分配空間,并由其釋放;而任務(wù)棧也也是由調(diào)試者分配與釋放,特別留意的是任務(wù)棧的起始地址有兩種可能,地段地址或高端地址,具體由BSP而定。

STATUS?taskActivate (int tid) /*tid = (int )pTcb;*/

參數(shù)tid是表示惟一的任務(wù)ID。

?? 其實(shí) taskSpawn() 內(nèi)部調(diào)用taskInit()/taskActivate()來(lái)完成的。或者提供了更為細(xì)致的任務(wù)控制而已。而這兩種的創(chuàng)建任務(wù)的差別:

??? 1、taskSpawn()自動(dòng)在系統(tǒng)堆上分配任務(wù)??臻g,并在任務(wù)棧上創(chuàng)建TCB;而taskInit()由調(diào)用者分配與釋放的,TCB不屬于任務(wù)棧的空間。

??? 2、taskSpawn()生成任務(wù)后進(jìn)入就緒隊(duì)列;而taskInit()生成任務(wù)后處于掛起狀態(tài),不能被直接調(diào)用,直到taskActivate()激活。

總結(jié)

以上是生活随笔為你收集整理的VxWorks关于任务创建的几个函数的概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。