*参照元 [#h85f3b2e] #backlinks *説明 [#bcae8f62] -パス: [[linux-2.6.33/include/linux/wait.h]] -FIXME: これは何? --説明 **引数 [#q232cbae] -wait_queue_head_t *wq --タスクが待機するキューを指定する。 --[[linux-2.6.33/wait_queue_head_t]] -condition --待ち受ける条件を指定する。この条件が真になるまで待つ。 --指定した式は if () の条件式として評価される(例: (a > 0) など。) -int ret --返り値を格納する変数を指定する。 --ポインタではない。あえて言うなら参照のような使い方をしている。 **返り値 [#h810b4ac] -なし **参考 [#idf659ba] *実装 [#p255f986] #define __wait_event_interruptible(wq, condition, ret) \ do { \ DEFINE_WAIT(__wait); \ \ - --[[linux-2.6.33/DEFINE_WAIT()]] for (;;) { \ prepare_to_wait(&wq, &__wait, TASK_INTERRUPTIBLE); \ - --[[linux-2.6.33/prepare_to_wait()]] if (condition) \ break; \ if (!signal_pending(current)) { \ - --[[linux-2.6.33/signal_pending()]] --[[linux-2.6.33/current(global)]] schedule(); \ - --[[linux-2.6.33/schedule()]] continue; \ } \ ret = -ERESTARTSYS; \ break; \ - --[[linux-2.6.33/ERESTARTSYS]] } \ finish_wait(&wq, &__wait); \ - --[[linux-2.6.33/finish_wait()]] } while (0) *コメント [#t525c1dd]