91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vxworks中Task的Hook怎么用

發布時間:2021-12-22 10:34:36 來源:億速云 閱讀:339 作者:小新 欄目:互聯網科技

這篇文章給大家分享的是有關vxworks中Task的Hook怎么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

VxWorks里可以給Task注冊6種Hook,分別用于Create、Delete、Stop、Continue、Switch、Swap。

Create

vxworks中Task的Hook怎么用

其參數createHook是一個函數,原型如下

vxworks中Task的Hook怎么用

這個taskCreateHookAdd()的作用是: 每次有Task在創建新Task的過程中,就會自動調用注冊的函數createHook()

taskCreateHookDelete()負責刪除之前注冊的Hook

taskCreateHookAdd()可以注冊的Hook數量默認為40

vxworks中Task的Hook怎么用

 

Delete

vxworks中Task的Hook怎么用

與Create的類似,每次有Task刪除其它Task時,都會自動調用函數deleteHook()

Stop

vxworks中Task的Hook怎么用

每次有Task在Stop其它Task時,都會自動調用函數stopHook()

可以注冊的Hook最多為4個

vxworks中Task的Hook怎么用

 

Continue

vxworks中Task的Hook怎么用

每次有Task在Continue其它Task時,都會自動調用函數contHook()

Switch

vxworks中Task的Hook怎么用

每次有Task切換執行時,都會調用函數switchHook()。例如Task B搶占了正在執行的Task A,就會調用switchHook()。Task A再恢復執行時,就再次調用switchHook()。

可以注冊的Hook最多為16個

vxworks中Task的Hook怎么用

 

Swap

vxworks中Task的Hook怎么用

與Switch比較像,都是在Task切換時調用相應的Hook。

區別是:Switch是每次Task切換都會調用相應的Hook;而Swap注冊Hook后,只對taskSwapHookAttach()掛接的任務有效。而且taskSwapHookAttach()掛接時,還可以指定是切入有效,還是切出有效。例如taskSwapHookAttach((FUNCPTR)swapHook,TaskA,1,0)表示TaskA被CPU執行時才會調用swapHook(),即切入有效;而TaskA被其它Task搶占了,是不會觸發swapHook()的,即切出無效。

另外,Switch與Swap注冊的Hook是在Kernel的上下文里執行,因此并不是所有的系統函數都可以在它們的Hook里調用。可以被調用的函數如下

vxworks中Task的Hook怎么用

 

下面我們看一個完整的Hook例子

先聲明幾個Hook函數:Create、Delete、Stop和Continue的Hook都是打印Task的名字;Switch和Stop的Hook因為能夠調用的函數很有限,因此我們只是記錄一下切換的次數

vxworks中Task的Hook怎么用

 

然后分別注冊這些Hook。注冊Swap時,我們在例子中只注冊一個方向,例如切入方向。

并啟動一個test Task,它循環打印自己的執行次數,然后掛起自己。

vxworks中Task的Hook怎么用

在VxWorks里試試這個例子

執行testHook(),可以看到createHook()提示Shell創建了T1。然后test()自己打印執行了一次。

vxworks中Task的Hook怎么用

看一下切換次數,是不是符合預期。swapOut為0,因為我們沒有記錄它。

vxworks中Task的Hook怎么用

看看test的狀態

vxworks中Task的Hook怎么用

然后讓它再跑一圈,看看切換次數還對不對。swapOut保持不變,其它幾個計數器變大了

vxworks中Task的Hook怎么用

 

試試Stop和Continue,也沒問題

vxworks中Task的Hook怎么用

最后是Delete

vxworks中Task的Hook怎么用

是不是有點意思?

最后了才想起來要查看Task Name的話,可以直接使用 taskName(),沒必要訪問TCB的成員呀 ?

vxworks中Task的Hook怎么用

感謝各位的閱讀!關于“vxworks中Task的Hook怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建湖县| 遂溪县| 淅川县| 衢州市| 张家口市| 横峰县| 宕昌县| 安新县| 九江市| 资溪县| 崇阳县| 赤壁市| 苏尼特右旗| 安仁县| 文安县| 贡嘎县| 汪清县| 临朐县| 奉新县| 广元市| 离岛区| 宝清县| 泸西县| 怀来县| 原平市| 通榆县| 南澳县| 越西县| 定西市| 南投县| 泽普县| 镇雄县| 陆丰市| 诸暨市| 尉犁县| 重庆市| 商城县| 龙岩市| 凯里市| 资讯| 双流县|