add_timer.9


名前

add_timer, del_timer, init_timer - イベントタイマを管理する

書式
       #include <asm/param.h>
       #include <linux/timer.h>

       extern void add_timer(struct timer_list * timer);
       extern int  del_timer(struct timer_list * timer);
       extern inline void init_timer(struct timer_list * timer);
説明

add_timerは1つのイベントをスケジュールし、それをカーネルが管理 するイベントのリンク・リストに追加する。del_timerはスケジュール ・イベントを削除する。timer は以下の構造体を指す。

       struct timer_list {
               struct timer_list *next;
               struct timer_list *prev;
               unsigned long expires;
               unsigned long data;
               void (*function)(unsigned long);
       };
    

init_timerはnextとprevをNULLにセットする。これはadd_timerへの 引数として必要となる。expiresはタイマがタイムアウトするまでの 希望する持続時間をjiffiesで指定する。jiffiesは、1秒間にHZ (一般的には100)回カウント・アップされる単位である。

タイマが満了すると、指定した関数がdataをその引数としてコール される。そのイベントを削除するのは関数の責任である。複数の タイマに同じ関数がマッピングされている場合、いずれかのタイマを 取り消すためにその引数が利用できる。

返り値

del_timerは0を返すか、もしnextまたはprevがNULLでないのにタイマ が見つからない場合は負の数を返す。del_timerはまた、そのタイマが 満了する前に、expiresに残り時間をセットし、nextとprevにNULLを セットする。しかしながら、add_timerの直後にdel_timerをコール しても何も起こらない。これは、2つのコールの間にはカーネル内部 の時計が進まないからである。

著者

Linus Torvalds