91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

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

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


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


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

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


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


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


解決上述問題的辦法


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


鉤子函數(shù)的意義


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

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 4
收藏 3
關(guān)注 151
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧
主站蜘蛛池模板: 曲松县| 乐昌市| 甘泉县| 穆棱市| 麻江县| 温泉县| 盖州市| 玛纳斯县| 新建县| 开封市| 繁峙县| 亚东县| 莲花县| 罗甸县| 额尔古纳市| 屯昌县| 金昌市| 三门县| 太湖县| 玉山县| 即墨市| 香港| 铜陵市| 镇雄县| 湟源县| 错那县| 肇庆市| 保靖县| 确山县| 夏津县| 新化县| 双鸭山市| 晋中市| 增城市| 图木舒克市| 巴东县| 庐江县| 东宁县| 新晃| 邻水| 临邑县|