mirror of https://github.com/mkerrisk/man-pages
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:
parent
c2b3668b37
commit
66487517a0
|
@ -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.
|
||||
.\"
|
||||
|
|
Loading…
Reference in New Issue