*参照元 [#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]


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS