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

名称

vm_map_wire, vm_map_unwire仮想メモリマップ中でページ接続を管理する

書式

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

int
vm_map_wire( vm_map_t map, vm_offset_t start, vm_offset_t end, int flags);

int
vm_map_unwire( vm_map_t map, vm_offset_t start, vm_offset_t end, int flags);

解説

vm_map_wire() 関数はマップ map 中で startend の間の範囲でワイヤ (wiring) ページに責任を負います。ワイヤページは、物理メモリにロックされ、それらのワイヤカウントが 0 より上である限り、ページアウトされません。

vm_map_unwire() 関数は対応するワイヤ解除操作を実行します。

flags 引数はビットマスクで、次のフラグから成ります:

VM_MAP_WIRE_USER フラグが設定されるなら、関数はユーザアドレス空間の中で動作します。

VM_MAP_WIRE_HOLESOK フラグが設定されるなら、 map のアドレス空間の中の任意の範囲で動作します。

連続した範囲が望まれるなら、呼び出し側は、 VM_MAP_WIRE_NOHOLES フラグを指定することによって、それらの目的を明らかに伝達するべきです。

実装に関する注

両方の関数は、 vm_map_lock(9) を使用してマップ上のロックを獲得することを試み、呼び出しの存続期間それを保持します。 MAP_ENTRY_IN_TRANSITION を検出するなら、それらは、マップが再び利用可能になるまで、 vm_map_unlock_and_wait(9) を呼び出します。

マップは、別の消費者によって保持されているように、このウィンドウの間に変化するかもしれません、したがって、このインタフェースの消費者は下記の返り値を使用して、この状態をチェックするべきです。

戻り値

vm_map_wire() と vm_map_unwire() 関数は、同じ返り値を持ちます。関数は、範囲中のすべてのページが成功してワイヤ (ワイヤ解除) されるなら、 KERN_SUCCESS を返します。

そうでなければ、指定された範囲が有効でなかったか、または MAP_ENTRY_IN_TRANSITION フラグが設定される間にマップが変化したなら、 KERN_INVALID_ADDRESS が返されます。

作者

このマニュアルページは、 Bruce M Simpson <bms@spc.org>によって書かれました。
July 19, 2003 FreeBSD