Module Name: src
Committed By: riastradh
Date: Fri Jun 14 13:19:35 UTC 2024
Modified Files:
src/distrib/sets/lists/comp: mi
src/share/man/man9: Makefile
Added Files:
src/share/man/man9: uvm_obj_wirepages.9
Log Message:
uvm_obj_wirepages(9): New man page.
To generate a diff of this commit:
cvs rdiff -u -r1.2457 -r1.2458 src/distrib/sets/lists/comp/mi
cvs rdiff -u -r1.469 -r1.470 src/share/man/man9/Makefile
cvs rdiff -u -r0 -r1.1 src/share/man/man9/uvm_obj_wirepages.9
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/distrib/sets/lists/comp/mi
diff -u src/distrib/sets/lists/comp/mi:1.2457 src/distrib/sets/lists/comp/mi:1.2458
--- src/distrib/sets/lists/comp/mi:1.2457 Thu Mar 7 22:15:52 2024
+++ src/distrib/sets/lists/comp/mi Fri Jun 14 13:19:35 2024
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.2457 2024/03/07 22:15:52 christos Exp $
+# $NetBSD: mi,v 1.2458 2024/06/14 13:19:35 riastradh Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
./etc/mtree/set.comp comp-sys-root
@@ -13020,6 +13020,8 @@
./usr/share/man/cat9/uvm_map_pageable.0 comp-sys-catman .cat
./usr/share/man/cat9/uvm_map_protect.0 comp-sys-catman .cat
./usr/share/man/cat9/uvm_meter.0 comp-sys-catman .cat
+./usr/share/man/cat9/uvm_obj_unwirepages.0 comp-sys-catman .cat
+./usr/share/man/cat9/uvm_obj_wirepages.0 comp-sys-catman .cat
./usr/share/man/cat9/uvm_page_physload.0 comp-sys-catman .cat
./usr/share/man/cat9/uvm_pagealloc.0 comp-sys-catman .cat
./usr/share/man/cat9/uvm_pagefree.0 comp-sys-catman .cat
@@ -21392,6 +21394,8 @@
./usr/share/man/html9/uvm_map_pageable.html comp-sys-htmlman html
./usr/share/man/html9/uvm_map_protect.html comp-sys-htmlman html
./usr/share/man/html9/uvm_meter.html comp-sys-htmlman html
+./usr/share/man/html9/uvm_obj_unwirepages.html comp-sys-htmlman html
+./usr/share/man/html9/uvm_obj_wirepages.html comp-sys-htmlman html
./usr/share/man/html9/uvm_page_physload.html comp-sys-htmlman html
./usr/share/man/html9/uvm_pagealloc.html comp-sys-htmlman html
./usr/share/man/html9/uvm_pagefree.html comp-sys-htmlman html
@@ -29987,6 +29991,8 @@
./usr/share/man/man9/uvm_map_pageable.9 comp-sys-man .man
./usr/share/man/man9/uvm_map_protect.9 comp-sys-man .man
./usr/share/man/man9/uvm_meter.9 comp-sys-man .man
+./usr/share/man/man9/uvm_obj_unwirepages.9 comp-sys-man .man
+./usr/share/man/man9/uvm_obj_wirepages.9 comp-sys-man .man
./usr/share/man/man9/uvm_page_physload.9 comp-sys-man .man
./usr/share/man/man9/uvm_pagealloc.9 comp-sys-man .man
./usr/share/man/man9/uvm_pagefree.9 comp-sys-man .man
Index: src/share/man/man9/Makefile
diff -u src/share/man/man9/Makefile:1.469 src/share/man/man9/Makefile:1.470
--- src/share/man/man9/Makefile:1.469 Sun Jan 7 00:38:18 2024
+++ src/share/man/man9/Makefile Fri Jun 14 13:19:35 2024
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.469 2024/01/07 00:38:18 pgoyette Exp $
+# $NetBSD: Makefile,v 1.470 2024/06/14 13:19:35 riastradh Exp $
# Makefile for section 9 (kernel function and variable) manual pages.
@@ -66,7 +66,7 @@ MAN+= secmodel_suser.9 \
ubc.9 ucas.9 ucom.9 ufetch.9 uiomove.9 \
usbd_status.9 usbdi.9 usbnet.9 \
userret.9 ustore.9 \
- uvm.9 uvm_hotplug.9 uvm_km.9 uvm_map.9 \
+ uvm.9 uvm_hotplug.9 uvm_km.9 uvm_map.9 uvm_obj_wirepages.9 \
vattr.9 veriexec.9 vcons.9 versioningsyscalls.9 \
vfs.9 vfs_hooks.9 vfsops.9 vfssubr.9 \
video.9 vme.9 vnfileops.9 vnode.9 vnodeops.9 vnsubr.9 vmem.9 \
@@ -1014,6 +1014,7 @@ MLINKS+=uvm_map.9 uvm_unmap.9 uvm_map.9
uvm_map.9 uvmspace_exec.9 uvm_map.9 uvmspace_fork.9 \
uvm_map.9 uvmspace_free.9 uvm_map.9 uvmspace_share.9 \
uvm_map.9 uvmspace_unshare.9
+MLINKS+=uvm_obj_wirepages.9 uvm_obj_unwirepages.9
MLINKS+=vme.9 vme_probe.9 \
vme.9 vme_space_map.9 \
Added files:
Index: src/share/man/man9/uvm_obj_wirepages.9
diff -u /dev/null src/share/man/man9/uvm_obj_wirepages.9:1.1
--- /dev/null Fri Jun 14 13:19:35 2024
+++ src/share/man/man9/uvm_obj_wirepages.9 Fri Jun 14 13:19:35 2024
@@ -0,0 +1,90 @@
+.\" $NetBSD: uvm_obj_wirepages.9,v 1.1 2024/06/14 13:19:35 riastradh Exp $
+.\"
+.\" Copyright (c) 2024 The NetBSD Foundation, Inc.
+.\" 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
+.\"
+.Dd June 14, 2024
+.Dt UVM_OBJ_WIREPAGES 9
+.Os
+.Sh NAME
+.Nm uvm_obj_wirepages
+.Nm uvm_obj_unwirepages
+.Nd temporarily wire pages of a UVM object into RAM
+.Sh SYNOPSIS
+.In uvm/uvm_extern.h
+.Ft int
+.Fn uvm_obj_wirepages "struct uvm_object *uobj" "off_t start" "off_t end" "struct pglist *list"
+.Ft void
+.Fn uvm_obj_unwirepages "struct uvm_object *uobj" "off_t start" "off_t end"
+.Sh DESCRIPTION
+.Fn uvm_obj_wirepages
+temporarily wires a range of pages in a UVM object into RAM.
+If any pages from
+.Fa start
+(inclusive)
+to
+.Fa end
+(exclusive)
+are currently paged out, it pages them back in first, and arranges that
+the pages in the range will not be paged out until unwired with
+.Fn uvm_obj_unwirepages .
+.Pp
+If
+.Fa list
+is nonnull, it is initialized to a tailq of pages linked through the
+.Dv pageq.queue
+member of
+.Dt struct vm_page ,
+for the convenience of the caller.
+The caller is not transferred ownership of any part of
+.Fa list
+and need not free anything afterward \(em
+.Fn uvm_obj_unwirepages
+will free the pages when done.
+.Pp
+.Fa start
+and
+.Fa end
+must be page-aligned.
+.Pp
+Calls to
+.Fn uvm_obj_wirepages
+must be matched by
+.Fn uvm_obj_unwirepages
+with the same range.
+.Pp
+Overlapping ranges may be simultaneously wired; each page may be wired
+up to 2^32 - 1 times, and will not be paged out until all ranges
+covering it have been unwired.
+.Sh RETURN VALUES
+The
+.Fn uvm_obj_wirepages
+function returns zero on success, or returns an
+.Xr errno 3
+error code and leaves the wired status of all pages unchanged on
+failure.
+.Sh SEE ALSO
+.Xr mlock 3 ,
+.Xr uvm 9 ,
+.Xr uvm_map 9