4

mod_timer を使用して完了したときにハンドラー関数がタイマーをリセットする定期的なタイマーを使用しています。del_timer_sync() を使用してタイマーを強制終了し、ハンドラーが実行されている場合、これはタイマーが再起動されて削除されないことを意味しますか、それとも関数が何らかの方法でタイマーを強制終了しますか? タイマーを強制終了しない場合、関数がハンドラーの終了を待つ必要があるかどうかを戻り値から知る方法はありますか? その場合、戻り値がその値でなくなるまで、ループ内で del_timer_sync() を呼び出すことができます。私が使用しているカーネルのバージョンは 2.6.26.5 です

4

1 に答える 1

4

del_timer_sync()Linux カーネルで がどのように定義されているかを見ると、タイマーが戻る前に、タイマーが強制終了され、再起動されないことが保証されます。

つまり、del_timer_sync()ブロッキング関数呼び出しです。呼び出されると、タイマー ハンドラーが実行中の場合、タイマー ハンドラーが最後に実行を完了したdel_timer_sync()にのみ戻ります。

于 2012-11-28T04:49:40.667 に答える