性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

程序小白
認證:優(yōu)質(zhì)創(chuàng)作者
所在專題目錄 查看專題
關(guān)于軟件的作用域和生命周期的一些理解
淺析RTOS中的鉤子函數(shù)(HOOK)
RTOS的時間片調(diào)度不同處——FreeRTOS與RTT
FreeRTOS中任務(wù)間的同步——事件組與全局變量
FreeRTOS的優(yōu)先級翻轉(zhuǎn)與繼承
作者動態(tài) 更多
基于stm32采用PWM驅(qū)動伺服控制器學(xué)習(xí)筆記
5天前
基于STM32驅(qū)動TM1638學(xué)習(xí)筆記——軟件篇
04-19 12:42
基于TM1638驅(qū)動8位數(shù)碼管設(shè)計分享
02-24 11:26
RT-Thread驅(qū)動之路: Studio創(chuàng)建FAL分區(qū)⑤
01-02 08:30
RT-Thread驅(qū)動之路: Studio 掛載通用SPI flash④
2024-12-23 13:41

淺析RTOS中的鉤子函數(shù)(HOOK)


什么是鉤子函數(shù)?


      鉤子函數(shù)的本質(zhì):還是函數(shù),只是多了一個鉤子的功能。那什么又是鉤子?再去聊鉤子就有點斷章取義了。還是應(yīng)該站在鉤子函數(shù)的應(yīng)用場景來理解。

      鉤子函數(shù)在有系統(tǒng)的軟件中應(yīng)用較多,例如我們的FreeRTOS中。系統(tǒng)提供特定的環(huán)境上下文空間執(zhí)行功能。例如在【空閑任務(wù)】中執(zhí)行用戶的代碼。那這個功能該如何實現(xiàn)呢?


假如這個系統(tǒng)是我寫的,也不打算給別人使用,那么……


      那么最簡單的方式就是將這部分代碼手動添加到空閑函數(shù)中。這么做現(xiàn)在用當(dāng)然沒什么問題,但是系統(tǒng)級代碼與用戶代碼的耦合度就會非常高。啥子是高耦合,就是你把你的代碼直接嵌入進了系統(tǒng)代碼中,假如后續(xù)官方(也就是你咯)升級了系統(tǒng),你在本地也需要同步升級系統(tǒng)源碼版本。升級后的代碼會直接覆蓋原系統(tǒng)代碼,而你在空閑函數(shù)中添加的用戶級代碼也就沒有了。為了解決這一種情形,于是引入了松耦合的鉤子概念。


解決上述問題的辦法


      你需要在空閑任務(wù)中執(zhí)行的函數(shù),只需要通過空閑鉤子,鏈接到系統(tǒng)的空閑任務(wù)中即可。系統(tǒng)并不關(guān)心你的函數(shù)在哪里定義,因為他與系統(tǒng)的代碼是完全分離的,只是在執(zhí)行時才會建立聯(lián)系。這個時候你在升級你的代碼時就不會出現(xiàn)系統(tǒng)代碼覆蓋應(yīng)用代碼的情況。


鉤子函數(shù)的意義


      系統(tǒng)提供建立鉤子函數(shù),將對應(yīng)的用戶定義函數(shù)與系統(tǒng)建立應(yīng)用鏈接。當(dāng)系統(tǒng)運行時到相應(yīng)的環(huán)境上下文時,先查找是否有鉤子函數(shù)連接,如果有,那么轉(zhuǎn)而調(diào)用相應(yīng)的函數(shù)。

聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 4
收藏 3
關(guān)注 150
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧