2012-11-28 89 views
3

我使用了一個週期性的定時器,其中處理函數在使用mod_timer完成時重新設置定時器。當我使用del_timer_sync()終止定時器並且處理程序正在運行時,這是否意味着定時器被重新設置並且不會被刪除,或者函數是否會以某種方式終止定時器?如果它不殺死定時器,是否有辦法通過返回值知道函數是否必須等待處理程序完成?在這種情況下,我可以在循環中調用del_timer_sync(),直到返回不是該值。我正在使用的內核版本是2.6.26.5del_timer_sync()當處理程序重新使用mod_timer時使用mod_timer

回答

4

看看如何del_timer_sync()is defined in the Linux kernel,它將確保它返回之前,計時器被殺死,不會被重新武裝。

換句話說,del_timer_sync()是一個阻塞函數調用。當被調用時,如果定時器處理程序正在運行,del_timer_sync()僅在之後返回,定時器處理程序最後一次完成執行。