From: Alejandro Colomar Date: Fri, 14 Jun 2024 16:32:00 +0000 (+0200) Subject: ioctl_userfaultfd.2, UFFDIO_WRITEPROTECT.2const: Split UFFDIO_WRITEPROTECT from ioctl... X-Git-Tag: man-pages-6.9~3^2~1^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed7aff4fed0cb0dc337b2e3351979767cae2aeca;p=thirdparty%2Fman-pages.git ioctl_userfaultfd.2, UFFDIO_WRITEPROTECT.2const: Split UFFDIO_WRITEPROTECT from ioctl_userfaultfd(2) Signed-off-by: Alejandro Colomar --- diff --git a/man/man2/ioctl_userfaultfd.2 b/man/man2/ioctl_userfaultfd.2 index 76c098ed2..2dab16e81 100644 --- a/man/man2/ioctl_userfaultfd.2 +++ b/man/man2/ioctl_userfaultfd.2 @@ -72,76 +72,8 @@ events. .BR UFFDIO_ZEROPAGE (2const) .TQ .BR UFFDIO_WAKE (2const) -.SS UFFDIO_WRITEPROTECT -(Since Linux 5.7.) -Write-protect or write-unprotect a userfaultfd-registered memory range -registered with mode -.BR UFFDIO_REGISTER_MODE_WP . -.P -The -.I argp -argument is a pointer to a -.I uffdio_range -structure as shown below: -.P -.in +4n -.EX -struct uffdio_writeprotect { - struct uffdio_range range; /* Range to change write permission*/ - __u64 mode; /* Mode to change write permission */ -}; -.EE -.in -.P -There are two mode bits that are supported in this structure: -.TP -.B UFFDIO_WRITEPROTECT_MODE_WP -When this mode bit is set, -the ioctl will be a write-protect operation upon the memory range specified by -.IR range . -Otherwise it will be a write-unprotect operation upon the specified range, -which can be used to resolve a userfaultfd write-protect page fault. -.TP -.B UFFDIO_WRITEPROTECT_MODE_DONTWAKE -When this mode bit is set, -do not wake up any thread that waits for -page-fault resolution after the operation. -This can be specified only if -.B UFFDIO_WRITEPROTECT_MODE_WP -is not specified. -.P -This -.BR ioctl (2) -operation returns 0 on success. -On error, \-1 is returned and -.I errno -is set to indicate the error. -Possible errors include: -.TP -.B EINVAL -The -.I start -or the -.I len -field of the -.I ufdio_range -structure was not a multiple of the system page size; or -.I len -was zero; or the specified range was otherwise invalid. -.TP -.B EAGAIN -The process was interrupted; retry this call. -.TP -.B ENOENT -The range specified in -.I range -is not valid. -For example, the virtual address does not exist, -or not registered with userfaultfd write-protect mode. -.TP -.B EFAULT -Encountered a generic fault during processing. -.\" +.TQ +.BR UFFDIO_WRITEPROTECT (2const) .SS UFFDIO_CONTINUE (Since Linux 5.13.) Resolve a minor page fault diff --git a/man/man2const/UFFDIO_WRITEPROTECT.2const b/man/man2const/UFFDIO_WRITEPROTECT.2const new file mode 100644 index 000000000..536d6735c --- /dev/null +++ b/man/man2const/UFFDIO_WRITEPROTECT.2const @@ -0,0 +1,104 @@ +.\" Copyright 2016, IBM Corporation. +.\" Written by Mike Rapoport +.\" Copyright 2016, Michael Kerrisk +.\" Copyright 2024, Alejandro Colomar +.\" +.\" SPDX-License-Identifier: Linux-man-pages-copyleft +.\" +.TH UFFDIO_WRITEPROTECT 2const (date) "Linux man-pages (unreleased)" +.SH NAME +UFFDIO_WRITEPROTECT +\- +write-protect or write-unprotect a userfaultfd-registered memory range +.SH LIBRARY +Standard C library +.RI ( libc ", " \-lc ) +.SH SYNOPSIS +.nf +.BR "#include " " /* Definition of " UFFD* " constants */" +.B #include +.P +.BI "int ioctl(int " fd ", UFFDIO_WRITEPROTECT, ...);" +.fi +.SH DESCRIPTION +(Since Linux 5.7.) +Write-protect or write-unprotect a userfaultfd-registered memory range +registered with mode +.BR UFFDIO_REGISTER_MODE_WP . +.P +The +.I argp +argument is a pointer to a +.I uffdio_range +structure as shown below: +.P +.in +4n +.EX +struct uffdio_writeprotect { + struct uffdio_range range; /* Range to change write permission*/ + __u64 mode; /* Mode to change write permission */ +}; +.EE +.in +.P +There are two mode bits that are supported in this structure: +.TP +.B UFFDIO_WRITEPROTECT_MODE_WP +When this mode bit is set, +the ioctl will be a write-protect operation upon the memory range specified by +.IR range . +Otherwise it will be a write-unprotect operation upon the specified range, +which can be used to resolve a userfaultfd write-protect page fault. +.TP +.B UFFDIO_WRITEPROTECT_MODE_DONTWAKE +When this mode bit is set, +do not wake up any thread that waits for +page-fault resolution after the operation. +This can be specified only if +.B UFFDIO_WRITEPROTECT_MODE_WP +is not specified. +.SH RETURN VALUE +This +.BR ioctl (2) +operation returns 0 on success. +On error, \-1 is returned and +.I errno +is set to indicate the error. +.SH ERRORS +.TP +.B EINVAL +The +.I start +or the +.I len +field of the +.I ufdio_range +structure was not a multiple of the system page size; or +.I len +was zero; or the specified range was otherwise invalid. +.TP +.B EAGAIN +The process was interrupted; retry this call. +.TP +.B ENOENT +The range specified in +.I range +is not valid. +For example, the virtual address does not exist, +or not registered with userfaultfd write-protect mode. +.TP +.B EFAULT +Encountered a generic fault during processing. +.SH STANDARDS +Linux. +.SH HISTORY +.SH EXAMPLES +See +.BR userfaultfd (2). +.SH SEE ALSO +.BR ioctl (2), +.BR ioctl_userfaultfd (2), +.BR userfaultfd (2) +.P +.I Documentation/admin\-guide/mm/userfaultfd.rst +in the Linux kernel source tree