日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VxWorks关于任务创建的几个函数的概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? 對于VxWorks?的任務創建可以通過調用 taskSpawn()或是taskInit()/taskActivate()兩種方式,以下就對這兩種方式進行說明。

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

int? taskSpawn (char *name,????????????? /*任務名稱必須惟一的標示*/

????????????????????????? int priority,??????????????? /*任務優先級(0-255)越小標示優先級越高*/

????????????????????????? int options,?????????????? /*任務選項*/

??????????????????????????int stackSize,??????????? /*任務棧大小(不包含任務名稱)*/

????????????????????????? FUNCPTR entryPt,?????/*任務入口函數指針*/

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

函數調用成功時,返回新任務的ID,或者返回ERROR。?

參數options任務選項,可以是以下的標志組合:

????????????? VX_FP_TASK:標志浮點寄存器是否屬于上下文,若函數中使用了浮點數,應帶上此標記。

????????????? VX_PRIVATE_ENV:支持任務私有環境變量。

????????????? VX_NO_STACK_FILL:不進行初始任務棧的填充。

????????????? VX_UNBREAKABLE:任務不允許斷點調試(忽略斷點)。

????????????? VX_DSP_TASK:DSP 協處理器支持。

????????????? VX_ALTIVEC_TASK:ALTIVEC 協處理器支持。

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

?? taskInit()實現創建任務,必須由taskActivate()來激活。以下就對這兩個函數進行分解:

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

????????????????????????? char* name,???????????? /*任務名稱必須惟一的標示*/

????????????????????????? int priority,?????????????? /*任務優先級(0-255)越小標示優先級越高*/

????????????????????????? int options,???????????????/*任務選項*/

????????????????????????? char* pStackBase,?? /*任務棧的起始地址*/

???????????????????????? ?int stackSize,?????????? /*任務棧大小(不包含任務名稱)*/

??????????????????????????FUNCPTR entryPt,??? /*任務入口函數指針*/

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

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

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

參數tid是表示惟一的任務ID。

?? 其實 taskSpawn() 內部調用taskInit()/taskActivate()來完成的。或者提供了更為細致的任務控制而已。而這兩種的創建任務的差別:

??? 1、taskSpawn()自動在系統堆上分配任務棧空間,并在任務棧上創建TCB;而taskInit()由調用者分配與釋放的,TCB不屬于任務棧的空間。

??? 2、taskSpawn()生成任務后進入就緒隊列;而taskInit()生成任務后處于掛起狀態,不能被直接調用,直到taskActivate()激活。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。