/share/man/man9/vm_map_wire.9
https://bitbucket.org/freebsd/freebsd-head/ · Unknown · 114 lines · 114 code · 0 blank · 0 comment · 0 complexity · 5f998d4d0bba9cb23ba81b233f4a7d72 MD5 · raw file
- .\"
- .\" Copyright (c) 2003 Bruce M Simpson <bms@spc.org>
- .\" All rights reserved.
- .\"
- .\" Redistribution and use in source and binary forms, with or without
- .\" modification, are permitted provided that the following conditions
- .\" are met:
- .\" 1. Redistributions of source code must retain the above copyright
- .\" notice, this list of conditions and the following disclaimer.
- .\" 2. Redistributions in binary form must reproduce the above copyright
- .\" notice, this list of conditions and the following disclaimer in the
- .\" documentation and/or other materials provided with the distribution.
- .\"
- .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- .\" SUCH DAMAGE.
- .\"
- .\" $FreeBSD$
- .\"
- .Dd July 19, 2003
- .Dt VM_MAP_WIRE 9
- .Os
- .Sh NAME
- .Nm vm_map_wire ,
- .Nm vm_map_unwire
- .Nd manage page wiring within a virtual memory map
- .Sh SYNOPSIS
- .In sys/param.h
- .In vm/vm.h
- .In vm/vm_map.h
- .Ft int
- .Fn vm_map_wire "vm_map_t map" "vm_offset_t start" "vm_offset_t end" "int flags"
- .Ft int
- .Fo vm_map_unwire
- .Fa "vm_map_t map" "vm_offset_t start" "vm_offset_t end" "int flags"
- .Fc
- .Sh DESCRIPTION
- The
- .Fn vm_map_wire
- function is responsible for wiring pages in the range between
- .Fa start
- and
- .Fa end
- within the map
- .Fa map .
- Wired pages are locked into physical memory, and may not be paged out
- as long as their wire count remains above zero.
- .Pp
- The
- .Fn vm_map_unwire
- function performs the corresponding unwire operation.
- .Pp
- The
- .Fa flags
- argument is a bit mask, consisting of the following flags:
- .Pp
- If the
- .Dv VM_MAP_WIRE_USER
- flag is set, the function operates within user address space.
- .Pp
- If the
- .Dv VM_MAP_WIRE_HOLESOK
- flag is set, it may operate upon an arbitrary range within the
- address space of
- .Fa map .
- .Pp
- If a contiguous range is desired, callers should explicitly express
- their intent by specifying the
- .Dv VM_MAP_WIRE_NOHOLES
- flag.
- .Sh IMPLEMENTATION NOTES
- Both functions will attempt to acquire a lock on the map using
- .Xr vm_map_lock 9
- and hold it for the duration of the call.
- If they detect
- .Dv MAP_ENTRY_IN_TRANSITION ,
- they will call
- .Xr vm_map_unlock_and_wait 9
- until the map becomes available again.
- .Pp
- The map could have changed during this window as it was held by another
- consumer, therefore consumers of this interface should check for this
- condition using the return values below.
- .Sh RETURN VALUES
- The
- .Fn vm_map_wire
- and
- .Fn vm_map_unwire
- functions have identical return values.
- The functions return
- .Dv KERN_SUCCESS
- if all pages within the range were [un]wired successfully.
- .Pp
- Otherwise, if the specified range was not valid,
- or if the map changed while the
- .Dv MAP_ENTRY_IN_TRANSITION
- flag was set,
- .Dv KERN_INVALID_ADDRESS
- is returned.
- .Sh SEE ALSO
- .Xr mlockall 2 ,
- .Xr munlockall 2 ,
- .Xr vm_map 9
- .Sh AUTHORS
- This manual page was written by
- .An Bruce M Simpson Aq bms@spc.org .