VM_PAGE_ALLOC(9) | FreeBSD Kernel Developer's Manual | VM_PAGE_ALLOC(9) |
名称
vm_page_alloc — vm_object のためにページを割り付ける書式
#include < sys/param.h>#include < vm/vm.h>
#include < vm/vm_page.h>
vm_page_t
vm_page_alloc( vm_object_t object, vm_pindex_t pindex, int req);
解説
vm_page_alloc() 関数は、 object の中の pindex に 1 つのページを割り付けます。 1 つページが既に pindex に割り付けられていないことを仮定します。返されたページは、 VM_ALLOC_NOOBJ が req で指定されていないなら、オブジェクトに挿入されます。ページは、vm オブジェクトのキャッシュに存在し、その場合、キャッシュからオブジェクトページのリストに移動して、代わりに再起動されます。vm_page_alloc() は、スリープしません。
その引数は、次の通りです:
- object
- ページを割り付ける VM オブジェクト。 object は、 VM_ALLOC_NOOBJ が指定されないなら、ロックされなければなりません。
- pindex
- ページが挿入されるべきであるオブジェクトのインデックス。
- req
-
どのようにページが割り付けられるべきであるかを示すクラスのビット単位の包括的論理和 (OR) とオプションのフラグ。
正確に次のクラスの 1 つが指定されなければなりません:
- VM_ALLOC_NORMAL
- ページは、特別な処理なしで割り付けられるべきです。
- VM_ALLOC_SYSTEM
- キャッシュが空であるなら、ページを割り付けることができ、空きのページ数は、割り込み予約のウォータマーク (水位標) を超過します。システムが本当にページを必要とするときだけ、このフラグは、使用されるべきです。
- VM_ALLOC_INTERRUPT
- vm_page_alloc() は、割り込みの間、呼び出されています。空きページ数が 0 以上であるなら、成功してページが返されます。
オプションのフラグは、次の通りです:
- VM_ALLOC_NOBUSY
- 返されたページは、排他的なビジーではありません。
- VM_ALLOC_NODUMP
- 返されたページは、それが KVA にマップされてもされていなくても、あらゆるカーネルのコアダンプに含まれません。
- VM_ALLOC_NOOBJ
- 割り付けられたページを、vm オブジェクトに関連付けません。 object 引数は、無視されます。
- VM_ALLOC_IFCACHED
- キャッシュされている場合にだけ、ページを割り付けます。そうでなければ、 NULL を返します。
- VM_ALLOC_IFNOTCACHED
- ページが object にキャッシュされないなら、単にページを割り付けます。指定された pindex のページがキャッシュされているなら、代わりに NULL を返します。
- VM_ALLOC_SBUSY
- 返されたページは、共有されたビジーです。
- VM_ALLOC_WIRED
- 返されたページは、ワイヤード (wired) されています。
- VM_ALLOC_ZERO
- 前もって 0 クリアされたページを選択することを示します。返されたページが 0 クリアされている保証はありませんが、 0 クリアされているなら、 PG_ZERO フラグ設定があります。
戻り値
成功すれば、割り付けられた vm_page_t が返されます。そうでなければ、 NULL が返されます。注
ページャのプロセスは、 VM_ALLOC_INTERRUPT が設定されない場合、常に VM_ALLOC_SYSTEM にアップグレードされます。作者
このマニュアルページは、 <davidc@acns.ab.ca>によって書かれました。January 28, 2012 | FreeBSD |