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

Universal Page List


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

作成中

ページのRead/Writeをする時にPagerやI/O処理部間でデータの引渡しに使われているPage Listデータ構造。

I/Oが完了したら、commitかabortをしてVM Objectのページの状態を実体に合わせる(PageOutしたならm->pageoutをTRUEにするなど)。





図1 UPLの構造

[関連関数]
vm_object_upl_request()
指定VM Objectのoffsetからsize分に関するページのUPLを構築する。
UPL_COPYOUT_FROMが指定されていた場合はPageOut要求のUPLを作成する。

PageinのUPLを作る際、ページがまだ割り当ててなかったらページを割り当てる(absent:TRUEとなる)。

upl_create(flags, size)
size(Byte)分のUPLを作成する。

upl_destroy()
UPLを解放する。commitかabort後に行なう。

upl_commit()
実行した処理に応じてvm_pageの状態を更新する。

upl_abort()
エラー種別に応じてvm_pageを更新する。

ubc_upl_commit()
ubc_upl_abort()


最終更新 2006/06/18 13:09:34 - kztomita
(2006/06/13 16:12:46 作成)
添付ファイル
upl.png - kztomita
pageoutobject.png - kztomita


最近更新したページ