総合手引 | セクション 9 | English | オプション |
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/proc.h>
パラメータ wmesg は ps(1) のようなツールのためのスリープ状態を解説する文字列です。 これらのプログラムの任意の文字列を表示するための領域の制限のため、 このメッセージは 6 文字を超えるべきではありません。
wakeup_one() 関数はパラメータ ident 上でスリープしているキューの中の最初のプロセスを実行可能に するために使用されます。 これは、多数のプロセスが同じアドレス上でスリープしているが、 実行可能となったときその中の 1 つのみが実際には役に立つ作業ができるときに、 システムが飽和することを防ぐことが可能です。
tsleep() 関数は一般的なスリープの呼び出しです。 明示された識別子上の wakeup が実行されるまでの間、 現在のプロセスを一時停止させます。 それからそのプロセスは明示された優先度 priority で実行可能にされます。 長くて timo amp;/ hz 秒間 (0 はタイムアウトなしを意味します) スリープします。 Giant ロックが保持されていないなら、 timo は 0 以外でなければなりません。 priority が PCATCH フラグを含む場合には、スリープの前後でシグナルがチェックされます。 そうでない場合には、シグナルはチェックされません。 起こされた場合には 0 を返し、タイムアウトが経過した場合には EWOULDBLOCK を返します。 PCATCH が設定されていてシグナルが配信される必要がある場合で、 可能であれば現在のシステムコールが再開始されるべきである場合には ERESTART が返され、 ( EINTR を返す) シグナルによってそのシステムコールが中断されるべき場合には EINTR が返されます。
msleep() 関数は tsleep の変種です。 パラメータ mtx は、スリープの前に抜け、 msleep() が戻る前に入る mutex です。 priority が PDROP フラグを含む場合には、戻る前に mtx 引数を再取得しません。 ある状態を不可分にチェックできることを保証し、 その状態の変更も対応する wakeup も失うことなく 現在のプロセスを中断できることを保証するために、 この mutex は使用されます。
tsleep() 関数は BSD 4.4 で登場しました。
sleep() 関数は伝統的な形式でした。 これはタイムアウトも wmesg も指定できないため、使用取り止めとなりました。
SLEEP (9) | December 17, 1998 |
総合手引 | セクション 9 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.