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