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