VM_PAGE_INSERT(9) | FreeBSD Kernel Developer's Manual | VM_PAGE_INSERT(9) |
名称
vm_page_insert, vm_page_remove — オブジェクトにページを追加するか、オブジェクトから削除する書式
#include < sys/param.h>#include < vm/vm.h>
#include < vm/vm_page.h>
void
vm_page_insert( vm_page_t m, vm_object_t object, vm_pindex_t pindex);
void
vm_page_remove( vm_page_t m);
解説
vm_page_insert() 関数は与えられたインデックスにおける与えられたオブジェクトに 1 つのページを追加します。ページは VM ページハッシュテーブルとオブジェクトのページのリストの両方に追加されますが、ハードウェアページテーブルを更新されません。 1 つのユーザページの場合では、それがアクセスされているとき、フォルトされます。ページがカーネルページであるなら、呼び出し側はカーネルの pmap にページを追加するハンドルのはずです。PG_WRITEABLE がページのフラグに設定されるなら、 OBJ_WRITEABLE と OBJ_MIGHTBEDIRTY はオブジェクトのフラグに設定されます。
vm_page_remove() 関数はオブジェクトと VM ページハッシュテーブルから与えられたページを削除します。ページはこの呼び出しの前にビジーであるに違いません、またはシステムはパニックします。ページのための pmap エントリはこの関数によって削除されません。
vm_page_insert() への引数は次の通りです:
- m
- オブジェクトに追加されるページ。
- object
- ページが追加されるべきであるオブジェクト。
- pindex
- ページが置かれるべきであるオブジクトへのインデックス。
vm_page_remove() への引数は次の通りです:
- m
- 削除されるページ。
実装に関する注
VM オブジクトの 1 つのページのインデックスはページ境界に切り捨てられた同じオブジクトへのバイトインデックスです。例えば、ページサイズが 4096 バイトであり、オブジクトのアドレスが 81944 であるなら、ページインデックスは 20 となります。作者
このマニュアルページは、 <davidc@acns.ab.ca>によって書かれました。July 17, 2001 | FreeBSD |