sleep_on.9


名前

sleep_on - 状態変数を使ってプロセスの同期を取る

書式
       #include <linux/sched.h>

       void sleep_on(struct wait_queue**condition)
説明

sleep_on関数は、プロセスと割り込みハンドラ間の同期合わせの手段を 提供する。condition変数は、漠然とした(opaque)wait_queueタイプ のポインタである。condition変数を0に初期化してから、その変数へ のポインタをsleep_on関数に渡してやる。基本的な使用法は以下の通り。

       struct wait_queue*con = 0;
            [...]
       sleep_on(&con);
    

プロセスがスリープしている間は、そのプロセスは、当該関数に入るとき のCPU状態にかかわらず完全に割込み可能となっている。スリープか ら解除される際に、CPUの状態は当該関数に入るときの状態に戻される。

sleep_onにNULL(0)が渡されても、スリープせずに即時に復帰する。 これは何もしないことと同じである。

返り値

sleep_on関数は、明示的にスリープから解除された場合のみ関数から 返ってくる。

可用性(AVAILABILITY)

Linux 1+

関連項目
       wake_up(9)

       /usr/src/linux/kernel/sched.c
    
著者

Stephen Williams (steve@icarus.com)

バグ

sleep_on(0) のようにコールすることは、瞬間的に割り込みを許可 するためのちょっと気の利いたやり方のように思われるが、実際は 何も起こらない。

sleep_on関数を割り込みハンドラからコールすることはできない。

この関数は、ドライバの開発者が状態の確認をするためにちょっと 入れてみるような、ごく基本的な関数ではない。そのため、sleep_on 関数を実行しようとしている関数は、割り込みから保護されている 必要がある。このコールに失敗してしまった場合、その結果は一般的 にはタイミングに依存する。