Mac OS Xのカーネル Xnuのメモ書き

WaitQueue


Rev.5を表示中。最新版はこちら

作成中

ブロックしたプロセスをつないでおくキュー。
ブロックする要因毎にキューがある。

どんなところにあるかと言うと
スケジューラの
wait_queues[]
eventのハッシュ値をキーとしている
eventは他だのキー
void *で
ブロック要因に応じたキー(アドレスだったり)
データのポインタをイベントとしてつかってユニークな値となるようにする

セマフォ取得待ちでブロックする場合は
s->wait_queue

LinuxなんかだとBlockDevice構造体にI/O待ちのWaitQがあったりした。


wait_queue_assert_wait(wq, event, interruptible, deadline)
カレントプロレスを指定WaitQueueに入れる。

wait_queue_wakeup_one(wq, event, result)
指定WaitQueueの指定イベントを待っているプロセスを1つだけ起動する。

wait_queue_wakeup_all(wq, event, result)
指定WaitQueueの指定イベントを待っているプロセスを全て起動する。



最終更新 2006/05/23 20:00:03 - kztomita
(2006/05/22 23:10:09 作成)
添付ファイル
waitqueue.png - kztomita


最近更新したページ