UFFDIO_ZEROPAGE − zero out a memory range registered with userfaultfd
Standard C library (libc, −lc)
#include
<linux/userfaultfd.h> /* Definition of
UFFD* constants */
#include <sys/ioctl.h>
int ioctl(int fd, UFFDIO_ZEROPAGE, struct uffdio_zeropage *argp);
#include <linux/userfaultfd.h>
struct
uffdio_zeropage {
struct uffdio_range range;
__u64 mode; /* Flags controlling behavior */
__s64 zeropage; /* Number of bytes zeroed */
};
Zero out a memory range registered with userfaultfd.
The following
value may be bitwise ORed in mode to change the
behavior of the UFFDIO_ZEROPAGE operation:
UFFDIO_ZEROPAGE_MODE_DONTWAKE
Do not wake up the thread that waits for page-fault resolution.
The zeropage field is used by the kernel to return the number of bytes that was actually zeroed, or an error in the same manner as UFFDIO_COPY. If the value returned in the zeropage field doesn’t match the value that was specified in range.len, the operation fails with the error EAGAIN. The zeropage field is output-only; it is not read by the UFFDIO_ZEROPAGE operation.
This ioctl(2) operation returns 0 on success. In this case, the entire area was zeroed. On error, −1 is returned and errno is set to indicate the error.
|
EAGAIN |
The number of bytes zeroed (i.e., the value returned in the zeropage field) does not equal the value that was specified in the range.len field. | ||
|
EINVAL |
Either range.start or range.len was not a multiple of the system page size; or range.len was zero; or the range specified was invalid. | ||
|
EINVAL |
An invalid bit was specified in the mode field. |
ESRCH (since Linux 4.13)
The faulting process has exited at the time of a UFFDIO_ZEROPAGE operation.
Linux.
Linux 4.3.
See userfaultfd(2).
ioctl(2), ioctl_userfaultfd(2), userfaultfd(2)
linux.git/Documentation/admin−guide/mm/userfaultfd.rst