カーネルタイマー add_timer のコールバックの仕組み(途中)

現状のLinuxには、2種類のカーネルタイマがあります.

  1. timer_list構造体を使用するカーネルタイマ.
  2. hrtimer構造体を使用する高精度カーネルタイマ(hrtimer).

今回は、前者について調べてみました.

呼び出しの仕組み

カーネルタイマの基本的な呼び出しフローは、以下のようになっています.

  1. init_timer で構造体を初期化
  2. add_timer で監視リストに追加.
  3. 以下の3つのうち、どれかが発生.
    • イベントが発生し、コールバックされる. リストから削除される.
    • mod_timer が呼ばれ、再度要求を投げる.
    • del_timer が呼ばれ、要求が監視リストから削除される.


個々のケースを追っていきたいと思います.

イベントが発生した場合

(途中)

タイマイベントの監視方法

タイマイベントの監視はどのように行っているのでしょうか. 従来のタイマの場合、 tick ベースで動作しますから、タイマ割り込みのタイミングでtimer_listを走査しているような気がします.

(続く)

hrtiemr