add_timer
- すでにpenging状態(timer-listに登録されている状態)の場合はエラーとなる
- 中でmod_timer()を呼ぶ
__mod_timer
- 基本動作は、del_timer() -> internal_add_timer() (timer-listに登録)
- 次にどのCPUのtimer-list(base)に登録するかをみつけ、lockする( lock_timer_base() )
- penging状態の場合、
- (コメントより)なるべくmod_timer()関数を呼んだCPUのtimer-listに登録するが、
1.現在動作中のtimerであったり、
2.del_timer_sync()で(他のCPUに登録されたtimerをdel_timerをする場合で)
そのtimerが終了したかどうかわからない場合、
そのtimerのbase(動作するtimer-list)を変更しない(=>もとのままのtimer-list(base)に登録する)。
これは、そのtimerがシリアライズに動作することを保証するためである。
lock_timer_base()
- CPUごとにあるtimer-list(base)をspinlockする
- returnしてきた場合、base->lockをlockした状態で戻る