watchdog簡述

watchdog是vxworks提供的一種定時器機制,當限定的時間到以後,會自動執行指定的程序;依稀記得VB中就有一個Timer組 件,watchdog就完成類似的功能。在vxworks中,watchdog的使用通常是爲了防止程序死鎖,例如定時檢測程序的執行情況,如果定時器到 了,但程序還沒有執行結束,很有可能就是因爲程序死鎖了,可以觸發復位或者進行任務切換,因此watchdog指定的程序不被執行是很正常的事,千萬不要 感到奇怪。

watchdog使用時,主要是五個函數:wdCreate()和wdDelete()函數、wdStart()和wdCancel()函數、 wdShow()函數。wdCreate用於創建一個watchdog,wdDelete()用於刪除指定的watchdog並釋放相關資 源;wdStart()用於啓動一個定時器,當指定的時間到以後,就會運行相應的函數,並且運行方式是以中斷方式的函數運行的,函數如果不能立即被執行, 會放置到tExecTask工作隊列中,該工作隊列中的函數通常是以優先級爲0的優先級進行運行的。wdCancel()用於取消一個定時器,很多人可能 比較奇怪,既然啓動了定時器,爲什麼還要取消,是不是沒事找事?當然不是,很簡單的一個例子;如果程序死鎖了,就執行指定的程序,那如果沒有死鎖呢?自然 不需要執行了,但定時器都指定了,怎麼保證程序不執行,有辦法,直接刪掉watchdog不就OK了。對,沒錯,但是某些條件下不允許刪除,怎麼辦?而且 這麼頻繁的刪除、建立,合適嘛?有更好的辦法嘛?那就是運行wdCance()取消掉定時器;既然沒死鎖,那麼自然會在定時器超時之前運行到 wdCancel語句,既然能運行到這個語句,自然也就沒有死鎖,OK,問題解決。wdShow()函數可以用來查看定時器的信息,例如超時時間、指定的 程序所在的地址等等。

其實watchdog的使用還是比較簡單的,在這裏不多說了,看個例子和其運行結果更能理解其使用和機制:http://files.cnblogs.com/lotusswan/watchdog.rar

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章