Linuxカーネルドライバーで後で発生するアクションをスケジュールするには、2つのオプションがあります。
add_timer
queue_delayed_work
私が知っている1つの違い:タイマーexpires
の場合、タイマーが期限切れになるときのjiffies値を指定する必要があります。遅延作業の場合、jiffiesの遅延を指定する必要があります。
タイマーとwork_queueに関する他の質問を読んでいますが、タイマーがプロセスコンテキストの外部で実行されると記載されています。これは遅延作業とは異なりますか?
また、タイマーに問題があることも知っています。計算時にexpires
値がオーバーフローする可能性があるため、計算された値は現在のjiffiesよりも小さく、タイマーはすぐに期限切れになります(ここで間違っている場合は修正してください)。遅れた仕事は同じ問題に苦しんでいますか?もしそうなら、どのように
私には、遅延作業を使用する方が簡単なようです(作業は定期的ではないため)。しかし、タイマーを使用することよりも不利な点は何ですか?
編集
私はいくつかのさらなる研究をしました。内部queue_delayed_work
で使用しているようです。add_timer
だから私の新しい質問は、タイマーのjiffiesオーバーフローを適切に処理するにはどうすればよいですか?たとえば、timer / delayd_workを10分の遅延に設定するにはどうすればよいですか?