summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/man/man9/Makefile10
-rw-r--r--share/man/man9/pbuf.910
-rw-r--r--share/man/man9/vm_page_cache.951
-rw-r--r--share/man/man9/vm_page_copy.95
-rw-r--r--share/man/man9/vm_page_deactivate.951
-rw-r--r--share/man/man9/vm_page_free.998
-rw-r--r--share/man/man9/vm_page_hold.917
-rw-r--r--share/man/man9/vm_page_insert.99
-rw-r--r--share/man/man9/vm_page_rename.972
9 files changed, 314 insertions, 9 deletions
diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile
index 05f65e6..dd5f3d8 100644
--- a/share/man/man9/Makefile
+++ b/share/man/man9/Makefile
@@ -59,9 +59,12 @@ MAN= BUF_LOCK.9 BUF_LOCKFREE.9 BUF_LOCKINIT.9 BUF_REFCNT.9 \
ucred.9 uidinfo.9 uio.9 \
vcount.9 vfs_busy.9 vfs_mount.9 vfs_unbusy.9 vfs_unmountall.9 vget.9 \
vinvalbuf.9 \
- vm_page_alloc.9 vm_page_copy.9 vm_page_flag.9 vm_page_hold.9 \
+ vm_page_alloc.9 vm_page_cache.9 \
+ vm_page_copy.9 vm_page_deactivate.9 \
+ vm_page_flag.9 vm_page_free.9 vm_page_hold.9 \
vm_page_insert.9 vm_page_io.9 vm_page_lookup.9 \
- vm_page_protect.9 vm_page_sleep_busy.9 vm_page_wakeup.9 \
+ vm_page_protect.9 vm_page_rename.9 \
+ vm_page_sleep_busy.9 vm_page_wakeup.9 \
vm_page_wire.9 vm_page_zero_fill.9 vm_set_page_size.9 \
vn_isdisk.9 vnode.9 vput.9 vref.9 vrele.9 \
vslock.9 \
@@ -171,6 +174,9 @@ MLINKS+=uidinfo.9 uihashinit.9 uidinfo.9 uifind.9
MLINKS+=uidinfo.9 uihold.9 uidinfo.9 uifree.9
MLINKS+=uio.9 uiomove.9
MLINKS+=vm_page_flag.9 vm_page_flag_clear.9 vm_page_flag.9 vm_page_flag_set.9
+MLINKS+=vm_page_free.9 vm_page_free_toq.9
+MLINKS+=vm_page_free.9 vm_page_free_zero.9
+MLINKS+=vm_page_free.9 vm_page_try_to_free.9
MLINKS+=vm_page_hold.9 vm_page_unhold.9
MLINKS+=vm_page_insert.9 vm_page_remove.9
MLINKS+=vm_page_io.9 vm_page_io_start.9 vm_page_io.9 vm_page_io_finised.9
diff --git a/share/man/man9/pbuf.9 b/share/man/man9/pbuf.9
index c4fd491..977f2a0 100644
--- a/share/man/man9/pbuf.9
+++ b/share/man/man9/pbuf.9
@@ -48,6 +48,14 @@
.Fn relpbuf "struct buf *bp" "int *pfreecnt"
.Sh DESCRIPTION
These functions are used to allocate and release physical buffers.
+.Pp
+The physical buffers are allocated at system startup and are
+maintained in a separate pool from the main system buffers.
+They are intended for use by subsystems that cannot or should not be
+reliant on the main pool of buffers (for example the swap pager).
+The system allocates between 16 and 256 physical buffers depending
+on the amount of memory in the system.
+.Pp
Each subsystem that allocates buffers via these calls is expected
to manage its own percentage free counter.
If the value is initialized to \-1 the number of buffers available
@@ -120,5 +128,5 @@ In the case of
.Dv NULL
can also be returned indicating that there are no buffers available.
.Sh AUTHORS
-This man page was written by
+This manual page was written by
.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_cache.9 b/share/man/man9/vm_page_cache.9
new file mode 100644
index 0000000..0379e8c
--- /dev/null
+++ b/share/man/man9/vm_page_cache.9
@@ -0,0 +1,51 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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(s), this list of conditions and the following disclaimer as
+.\" the first lines of this file unmodified other than the possible
+.\" addition of one or more copyright notices.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice(s), 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 COPYRIGHT HOLDER(S) ``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 COPYRIGHT HOLDER(S) 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 24, 2001
+.Dt VM_PAGE_CACHE 9
+.Os
+.Sh NAME
+.Nm vm_page_cache
+.Nd "move a page onto the cache queue"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_cache "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn vm_page_cache
+function moves a page onto the cache queue,
+and removes any protection that may be set on the page.
+If the page is busy, wired or unmanaged then the move
+to the cache queue will fail.
+If the page is dirty the system will panic.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_copy.9 b/share/man/man9/vm_page_copy.9
index 52df28d..3cf7304 100644
--- a/share/man/man9/vm_page_copy.9
+++ b/share/man/man9/vm_page_copy.9
@@ -49,6 +49,9 @@ into
The entire contents of
.Fa dst_m
are marked as valid.
+.Pp
+The actual copy is performed by
+.Fn pmap_copy_page .
.Sh AUTHORS
-This man page was written by
+This manual page was written by
.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_deactivate.9 b/share/man/man9/vm_page_deactivate.9
new file mode 100644
index 0000000..db63aa4
--- /dev/null
+++ b/share/man/man9/vm_page_deactivate.9
@@ -0,0 +1,51 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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(s), this list of conditions and the following disclaimer as
+.\" the first lines of this file unmodified other than the possible
+.\" addition of one or more copyright notices.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice(s), 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 COPYRIGHT HOLDER(S) ``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 COPYRIGHT HOLDER(S) 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 24, 2001
+.Dt VM_PAGE_DEACTIVATE 9
+.Os
+.Sh NAME
+.Nm vm_page_deactivate
+.Nd "deactivate a page"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_deactivate "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn vm_page_deactivate
+function moves the given page to the inactive queue as long as it is
+unmanaged and is not wired.
+.Sh SEE ALSO
+.Xr vm_page_wire 9
+.Xr vm_page_unmanage 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_free.9 b/share/man/man9/vm_page_free.9
new file mode 100644
index 0000000..a717726
--- /dev/null
+++ b/share/man/man9/vm_page_free.9
@@ -0,0 +1,98 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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(s), this list of conditions and the following disclaimer as
+.\" the first lines of this file unmodified other than the possible
+.\" addition of one or more copyright notices.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice(s), 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 COPYRIGHT HOLDER(S) ``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 COPYRIGHT HOLDER(S) 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 24, 2001
+.Dt VM_PAGE_FREE 9
+.Os
+.Sh NAME
+.Nm vm_page_free
+.Nm vm_page_free_toq
+.Nm vm_page_free_zero
+.Nm vm_page_try_to_free
+.Nd "free a page"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_free "vm_page_t m"
+.Ft void
+.Fn vm_page_free_toq "vm_page_t m"
+.Ft void
+.Fn vm_page_free_zero "vm_page_t m"
+.Ft int
+.Fn vm_page_try_to_free "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn vm_page_free_toq
+function moves a page into the free queue, and disassociates it from
+its object.
+If the page is held, wired, already free, or its busy count is not
+zero the system will panic.
+If the
+.Dv PG_ZERO
+flag is set on the page is it placed at the end of the free queue;
+otherwise, it is placed at the front.
+.Pp
+If the page's object is of type
+.Dv OBJT_VNODE
+and it is the last page associated with the object the underlying
+vnode may be freed.
+.Pp
+The
+.Fn vm_page_free
+and
+.Fn vm_page_free_zero
+functions both call
+.Fn vm_page_free_toq
+to actually free page, but
+.Fn vm_page_free_zero
+sets the
+.Dv PG_ZERO
+flag and
+.Fn vm_page_free
+clears the
+.Dv PG_ZERO
+flag prior to the call to
+.Fn vm_page_free_toq .
+.Pp
+The
+.Fn vm_page_try_to_free
+function verifies that the page is not held, wired, busy or dirty, and
+if so marks the page as busy, drops any protection that may be set on
+the page, and frees it.
+.Sh RETURN VALUES
+.Fn vm_page_try_to_free
+returns 1 if it is able to free the page; otherwise, 0 is returned.
+.Sh SEE ALSO
+.Xr vm_page_busy 9 ,
+.Xr vm_page_hold 9 ,
+.Xr vm_page_wire 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_hold.9 b/share/man/man9/vm_page_hold.9
index aeb60f4..c0f4bd9 100644
--- a/share/man/man9/vm_page_hold.9
+++ b/share/man/man9/vm_page_hold.9
@@ -46,9 +46,20 @@ The
.Fn vm_page_hold
function increases the hold count on a page.
This prevents the page daemon from freeing the page.
+.Pp
+.Fn vm_page_hold
+should only be used for very temporary wiring of a page,
+as that page will not be considered for paging or
+reallocation for as long as its hold count is greater
+than zero.
+Also note that while wired pages are removed from whatever
+queue they are on,
.Fn vm_page_hold
-should only be used for very temporary wiring of a page.
-If the page needs to be held for a longer period
+does not affect the location of the page.
+If it is on a queue prior to the call, it will still
+be there afterward.
+.Pp
+If the page needs to be held for a long period of time,
.Fn vm_page_write
should be used.
.Pp
@@ -60,5 +71,5 @@ page daemon.
.Xr vm_page_wire 9
.Xr wm_page_unwire 9
.Sh AUTHORS
-This man page was written by
+This manual page was written by
.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_insert.9 b/share/man/man9/vm_page_insert.9
index 6647067..2fbf405 100644
--- a/share/man/man9/vm_page_insert.9
+++ b/share/man/man9/vm_page_insert.9
@@ -46,7 +46,7 @@ The
.Fn vm_page_insert
function adds a page to the given object at the given index.
The page is added to both the VM page hash table and to the
-object's list of pages, but the page tables are not updated.
+object's list of pages, but the hardware page tables are not updated.
In the case of a user page, it will be faulted in when it is
accessed.
If the page is a kernel page the caller is expected to
@@ -86,6 +86,11 @@ are:
.It m
The page to remove.
.El
+.Sh IMPLEMENTATION NOTES
+The index of a page in a VM object is the byte index into the
+same object truncated to a page boundary.
+For example, if the page size is 4096 bytes, and the address
+in the object is 81944, the page index is 20.
.Sh AUTHORS
-This man page was written by
+This manual page was written by
.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_rename.9 b/share/man/man9/vm_page_rename.9
new file mode 100644
index 0000000..e61eea6
--- /dev/null
+++ b/share/man/man9/vm_page_rename.9
@@ -0,0 +1,72 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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(s), this list of conditions and the following disclaimer as
+.\" the first lines of this file unmodified other than the possible
+.\" addition of one or more copyright notices.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice(s), 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 COPYRIGHT HOLDER(S) ``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 COPYRIGHT HOLDER(S) 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 17, 2001
+.Dt VM_PAGE_RENAME 9
+.Os
+.Sh NAME
+.Nm vm_page_rename
+.Nd "moves a page"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fo vm_page_rename
+.Fa "vm_page_t m"
+.Fa "vm_object_t new_object"
+.Fa "vm_pindex_t new_pindex"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vm_page_rename
+function removes a page from one object, and adds it to another
+at the given page index.
+The page is added to the given object, and is removed from the
+object that is currently associated with.
+If the page is currently on the cache queue it will be deactivated
+unless it is wired or unmanaged, in which case the deactivation will
+fail.
+The entire page is marked as dirty after the move.
+.Pp
+The arguments to
+.Fn vm_page_rename
+are:
+.Bl -tag -width ".Fa new_object"
+.It m
+The page to move.
+.It new_object
+The object the page should be inserted into.
+.It new_pindex
+The page index into
+.Fa new_object
+at which the new page should be inserted.
+.El
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
OpenPOWER on IntegriCloud