*参照元 [#mc513562] #backlinks *説明 [#b8c214c6] -パス: [[linux-2.6.33/include/linux/wait.h]] -FIXME: これは何? -イベントが発生するまでタスクをスリープさせる。 -イベントが発生するまでタスクをスリープさせるマクロ。 --この関数が返ってくるのは下記の場合である。 ---他のタスクから wakeup され、引数に指定した条件が真であったとき。 ---シグナルに割り込まれたとき。 ---※他にもあるかも知れない。 **引数 [#n187632a] -wait_queue_head_t *wq --タスクが待機するキューを指定する。 --[[linux-2.6.33/wait_queue_head_t]] -condition --待ち受ける条件を指定する。この条件が真になるまで待つ。 --指定した式は if () の条件式として評価される(例: (a > 0) など。) **返り値 [#o738d98d] -int --成功した場合は 0 を返す。失敗した場合は負のエラー値を返す。 --例えばシグナルに割り込まれた場合は -ERESTARTSYS が返る。 **参考 [#pbd7cd69] *実装 [#t4e3a9dc] /** * wait_event_interruptible - sleep until a condition gets true * @wq: the waitqueue to wait on * @condition: a C expression for the event to wait for * * The process is put to sleep (TASK_INTERRUPTIBLE) until the * @condition evaluates to true or a signal is received. * The @condition is checked each time the waitqueue @wq is woken up. * * wake_up() has to be called after changing any variable that could * change the result of the wait condition. * * The function will return -ERESTARTSYS if it was interrupted by a * signal and 0 if @condition evaluated to true. */ #define wait_event_interruptible(wq, condition) \ ({ \ int __ret = 0; \ if (!(condition)) \ __wait_event_interruptible(wq, condition, __ret); \ - --[[linux-2.6.33/__wait_event_interruptible()]] __ret; \ }) *コメント [#b75c8c5e]