EN JA
VM_PAGE_BITS(9)
VM_PAGE_BITS(9) FreeBSD Kernel Developer's Manual VM_PAGE_BITS(9)

名称

vm_page_bits, vm_page_set_validclean, vm_page_clear_dirty, vm_page_set_invalid, vm_page_zero_invalid, vm_page_is_valid, vm_page_test_dirty, vm_page_dirty, vm_page_undirtyページのクリーンとダーティビットを管理する

書式

#include < sys/param.h>
#include < vm/vm.h>
#include < vm/vm_page.h>

int
vm_page_bits( int base, int size);

void
vm_page_set_validclean( vm_page_t m, int base, int size);

void
vm_page_clear_dirty( vm_page_t m, int base, int size);

void
vm_page_set_invalid( vm_page_t m, int base, int size);

void
vm_page_zero_invalid( vm_page_t m, boolean_t setvalid);

int
vm_page_is_valid( vm_page_t m, int base, int size);

void
vm_page_test_dirty( vm_page_t m);

void
vm_page_dirty( vm_page_t m);

void
vm_page_undirty( vm_page_t m);

解説

vm_page_bits() は、 basesize の間のバイトの DEV_BSIZE 範囲を表すビットを計算します。バイト範囲は、1 つページ内にあると期待され、 size が 0 であるなら、ビットは、設定されません。

vm_page_set_validclean() は、有効でクリンであるとして basesize の間のバイト範囲にフラグを立てます。範囲は、 DEV_BSIZE で整列され、 PAGE_SIZE より大きくないと期待されます。それが適切に整列されないなら、範囲の最初と終りの DEV_BSIZE ブロックのどんな整列されないチャンク (塊) は、0 クリアされます。

base が 0 であり、 size が 1 ページであるなら、ページマップの変更されたビットは、クリアされます。また、 VPO_NOSYNC フラグもクリアされます。

vm_page_clear_dirty() は、 basesize の間の範囲の 1 つのページ内のダーティビットをクリアします。範囲を表すビットは、 vm_page_bits() を呼び出すことによって、計算されます。

vm_page_set_invalid() は、ページの basesize の間の DEV_BSIZE ブロックを表す有効とダーティフラグの両方のビットをクリアします。ビットは、 vm_page_bits() を呼び出すことによって、計算されます。ページ中のビットをクリアすることと同様に、ページに保持されるオブジェクト中の世代番号は、増加されます。

vm_page_zero_invalid() は、現在無効のフラグが立っている、ページ中のすべてのブロックを 0 クリアします。 setvalidTRUE であるなら、ページ中のすべての有効なビットは、設定されます。

NFS のような、一部の例では、有効ビットは、キャッシュの一貫性を維持するために設定することができません。

vm_page_is_valid() は、ページの basesize の間のすべての DEV_BSIZE ブロックが有効かどうか確認するためにチェックします。 size が 0 であり、ページが完全に無効であるなら、 vm_page_is_valid() は、 TRUE を返し、サイズが 0 の他のすべての場合は、 FALSE を返します。

vm_page_test_dirty() は、1 つのページが物理マップのどれかを通して変更されたかどうかチェックし、そうであれば、すべてのページは、ダーティとしてフラグが立てられます。 vm_page_dirty() は、ダーティビットを変更するために呼び出されます。

vm_page_dirty() は、すべてのページをダーティとしてフラグを立てます。ページが現在キャッシュキューにないと期待されます。

vm_page_undirty() は、1 つのページですべてのダーティビットをクリアします。

これらの関数は、ブロックに許可されていません。

作者

このマニュアルページは、 Chad David <davidc@acns.ab.ca>によって書かれました。
December 1, 2001 FreeBSD