---
name: "UFFDIO_CONTINUE"
section: "2const"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/UFFDIO_CONTINUE"
---

# UFFDIO\_CONTINUE(2const)

resolve a minor page fault

## NAME

UFFDIO\_CONTINUE - resolve a minor page fault

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <linux/userfaultfd.h>  /* Definition of UFFD* constants */
#include <sys/ioctl.h>
```

**int ioctl(int** *fd***, UFFDIO\_CONTINUE, struct uffdio\_continue \****argp***);**

**#include \<linux/userfaultfd.h\>**

```
struct uffdio_continue {
    struct uffdio_range  range;
                     /* Range to install PTEs for and continue */
    __u64   mode;    /* Flags controlling the behavior of continue */
    __s64   mapped;  /* Number of bytes mapped, or negated error */
};
```

## DESCRIPTION

Resolve a minor page fault by installing page table entries for existing pages in the page cache.

The following value may be bitwise ORed in *mode* to change the behavior of the **UFFDIO\_CONTINUE** operation:

- **UFFDIO\_CONTINUE\_MODE\_DONTWAKE**

  Do not wake up the thread that waits for page-fault resolution.

The *mapped* field is used by the kernel to return the number of bytes that were actually mapped, or an error in the same manner as **UFFDIO\_COPY**. If the value returned in the *mapped* field doesn't match the value that was specified in *range.len*, the operation fails with the error **EAGAIN**. The *mapped* field is output-only; it is not read by the **UFFDIO\_CONTINUE** operation.

## RETURN VALUE

This [**ioctl**(2)](/ioctl/2.md) operation returns 0 on success. In this case, the entire area was mapped. On error, -1 is returned and *errno* is set to indicate the error.

## ERRORS

- **EAGAIN**

  The number of bytes mapped (i.e., the value returned in the *mapped* field) does not equal the value that was specified in the *range.len* field.

- **EEXIST**

  One or more pages were already mapped in the given range.

- **EFAULT**

  No existing page could be found in the page cache for the given range.

- **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.

- **ENOENT**

  The faulting process has changed its virtual memory layout simultaneously with an outstanding **UFFDIO\_CONTINUE** operation.

- **ENOMEM**

  Allocating memory needed to setup the page table mappings failed.

- **ESRCH**

  The faulting process has exited at the time of a **UFFDIO\_CONTINUE** operation.

## STANDARDS

Linux.

## HISTORY

Linux 5.13.

## EXAMPLES

See [**userfaultfd**(2)](/userfaultfd/2.md).

## SEE ALSO

[**ioctl**(2)](/ioctl/2.md), [**ioctl\_userfaultfd**(2)](/ioctl_userfaultfd/2.md), [**userfaultfd**(2)](/userfaultfd/2.md)

*linux.git/Documentation/admin-guide/mm/userfaultfd.rst*
