VxWorks下基于看門狗的通用定時器設(shè)計
2.3.3 定時器管理模塊實現(xiàn)
定時器管理模塊是共享定時機(jī)制的核心,用來維護(hù)定時器的注冊、注銷以及定時器鏈表的排序、刪除、清空等操作。本文引用地址:http://www.biyoush.com/article/148020.htm
定時器的注冊流程如圖4所示,首先使用RegistTimer()函數(shù)注冊一個新的定時器任務(wù),并將該定時器的TimerInfo結(jié)構(gòu)插入鏈表中維護(hù),然后針對該結(jié)構(gòu)中的tExe變量對鏈表按照升序排列,執(zhí)行時間最小的將置于表頭;若在插入該定時器任務(wù)之前鏈表中為空,則定時器處于休眠狀態(tài),此時置定時器狀態(tài)為運(yùn)行;若插入前鏈表中己存在其他定時器任務(wù),則無須重啟定時器。
定時器的注銷流程如圖5所示,首先使用UnRegistTimer()函數(shù)注銷一個己注冊的定時器任務(wù),并將該定時器的Timerlnfo結(jié)構(gòu)從鏈表中刪除,然后針對該結(jié)構(gòu)中的tExe變量對鏈表按照升序排列,執(zhí)行時間最小的將置于表頭;若在刪除該定時器任務(wù)之前鏈表中除了該定時任務(wù)沒有其他定時任務(wù)時,則置定時器為休眠狀態(tài);反之,則無須重置定時器狀態(tài)。
3 結(jié)束語
共享定時器提供了簡單、高效、通用的定時方法,使用者可以拋開管理諸多看門狗定時器的煩惱,從而專心于系統(tǒng)其他方面的設(shè)計。作為一個通用的系統(tǒng)組件,開發(fā)人員不僅可以直接使用,縮短開發(fā)時間,也可以繼承此定時器類,實現(xiàn)更多豐富的功能,提供了良好的擴(kuò)展性與靈活性。
該機(jī)制在VxWorks的網(wǎng)絡(luò)報文應(yīng)答、設(shè)備狀態(tài)監(jiān)控等方面得到了廣泛應(yīng)用,在有效節(jié)省系統(tǒng)資源的同時提高了系統(tǒng)定時機(jī)制的靈活性。
評論