ioctl_userfaultfd.2: Start adding details about userfaultfd features

Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Mike Rapoport 2017-04-27 17:14:34 +03:00 committed by Michael Kerrisk
parent c2b3668b37
commit 66487517a0
1 changed files with 51 additions and 2 deletions

View File

@ -121,22 +121,70 @@ and explicitly enable userfaultfd features that are disabled by default.
The kernel always reports all the available features in the
.I features
field.
To enable userfaultfd features the application should set
a bit corresponding to each feature it wants to enable in the
.I features
field.
If the kernel supports all the requested features it will enable them.
Otherwise it will zero out the returned
.I uffdio_api
structure and return
.BR EINVAL .
.\" FIXME add more details about feature negotiation and enablement
Since Linux 4.11, the following feature bits may be set:
.TP
.B UFFD_FEATURE_EVENT_FORK
When this feature is enabled,
the userfaultfd objects associated with a parent process are duplicated
into the child process during
.BR fork (2)
system call and the
.I UFFD_EVENT_FORK
is delivered to the userfaultfd monitor
.TP
.B UFFD_FEATURE_EVENT_REMAP
If this feature is enabled,
when the faulting process invokes
.BR mremap (2)
system call
the userfaultfd monitor will receive an event of type
.I UFFD_EVENT_REMAP.
.TP
.B UFFD_FEATURE_EVENT_REMOVE
If this feature is enabled,
when the faulting process calls
.BR madvise(2)
system call with
.I MADV_DONTNEED
or
.I MADV_REMOVE
advice to free a virtual memory area
the userfaultfd monitor will receive an event of type
.I UFFD_EVENT_REMOVE.
.TP
.B UFFD_FEATURE_EVENT_UNMAP
If this feature is enabled,
when the faulting process unmaps virtual memory either explicitly with
.BR munmap (2)
system call, or implicitly either during
.BR mmap (2)
or
.BR mremap (2)
system call,
the userfaultfd monitor will receive an event of type
.I UFFD_EVENT_UNMAP
.TP
.B UFFD_FEATURE_MISSING_HUGETLBFS
If this feature bit is set,
the kernel supports registering userfaultfd ranges on hugetlbfs
virtual memory areas
.TP
.B UFFD_FEATURE_MISSING_SHMEM
.\" FIXME add feature description
If this feature bit is set,
the kernel supports registering userfaultfd ranges on tmpfs
virtual memory areas
The returned
.I ioctls
@ -182,7 +230,8 @@ The API version requested in the
.I api
field is not supported by this kernel, or the
.I features
field was not zero.
field passed to the kernel includes feature bits that are not supported
by the current kernel version.
.\" FIXME In the above error case, the returned 'uffdio_api' structure is
.\" zeroed out. Why is this done? This should be explained in the manual page.
.\"