VM_PAGE_FREE(9) | FreeBSD Kernel Developer's Manual | VM_PAGE_FREE(9) |
名称
vm_page_free, vm_page_free_toq, vm_page_free_zero, vm_page_try_to_free — ページを解放する書式
#include < sys/param.h>#include < vm/vm.h>
#include < vm/vm_page.h>
void
vm_page_free( vm_page_t m);
void
vm_page_free_toq( vm_page_t m);
void
vm_page_free_zero( vm_page_t m);
int
vm_page_try_to_free( vm_page_t m);
解説
vm_page_free_toq() 関数は、フリー (空き) キューに 1 ページを移動させ、オブジェクトからそれを切り離します。ページが保持され、wired で、既にフリーであるか、ビジーカウントが 0 でないなら、システムはパニックします。 PG_ZERO フラグがページに設定されるなら、フリーキューの終わりに置かれます。そうでなければ、それは前方に置かれます。ページのオブジェクトがタイプ OBJT_VNODE であって、それがオブジェクトに関連している最後のページであるなら、内在する vnode は解放されるかもしれません。
vm_page_free() と vm_page_free_zero() 関数は両方とも実際にページを解放するために vm_page_free_toq() を呼び出しますが、 vm_page_free_zero() は PG_ZERO フラグを設定し、 vm_page_free() は vm_page_free_toq() への呼び出しの前に PG_ZERO フラグをクリアします。
vm_page_try_to_free() 関数は、ページが保持されず、wired で、ビジーまたはダーティか検証します、そうだとすれば、ページをビジーとマークして、ページに設定されるすべての保護を落として、それを解放します。
戻り値
vm_page_try_to_free() はページを解放することができるなら、1 を返し、そうでなければ、0 を返します。作者
このマニュアルページは、 <davidc@acns.ab.ca>によって書かれました。July 24, 2001 | FreeBSD |