MINCORE(2)                (2017-09-15)                 MINCORE(2)

     NAME
          mincore - determine whether pages are resident in memory

     SYNOPSIS
          #include <unistd.h>
          #include <sys/mman.h>

          int mincore(void *addr, size_t length, unsigned char *vec

     Feature Test Macro Requirements for glibc (see
     feature_test_macros(7)):

          mincore():
              Since glibc 2.19:
                  _DEFAULT_SOURCE
              Glibc 2.19 and earlier:
                  _BSD_SOURCE || _SVID_SOURCE

     DESCRIPTION
          mincore() returns a vector that indicates whether pages of
          the calling process's virtual memory are resident in core
          (RAM), and so will not cause a disk access (page fault) if
          referenced.  The kernel returns residency information about
          the pages starting at the address addr, and continuing for
          length bytes.

          The addr argument must be a multiple of the system page
          size.  The length argument need not be a multiple of the
          page size, but since residency information is returned for
          whole pages, length is effectively rounded up to the next
          multiple of the page size.  One may obtain the page size
          (PAGE_SIZE) using sysconf(_SC_PAGESIZE).

          The vec argument must point to an array containing at least
          (length+PAGE_SIZE-1) / PAGE_SIZE bytes.  On return, the
          least significant bit of each byte will be set if the corre-
          sponding page is currently resident in memory, and be clear
          otherwise.  (The settings of the other bits in each byte are
          undefined; these bits are reserved for possible later use.)
          Of course the information returned in vec is only a snap-
          shot: pages that are not locked in memory can come and go at
          any moment, and the contents of vec may already be stale by
          the time this call returns.

     RETURN VALUE
          On success, mincore() returns zero.  On error, -1 is
          returned, and errno is set appropriately.

     ERRORS
          EAGAIN kernel is temporarily out of resources.

     Page 1                        Linux             (printed 5/22/22)

     MINCORE(2)                (2017-09-15)                 MINCORE(2)

          EFAULT
               vec points to an invalid address.

          EINVAL
               addr is not a multiple of the page size.

          ENOMEM
               length is greater than (TASK_SIZE - addr).  (This could
               occur if a negative value is specified for length,
               since that value will be interpreted as a large
               unsigned integer.)  In Linux 2.6.11 and earlier, the
               error EINVAL was returned for this condition.

          ENOMEM
               addr to addr + length contained unmapped memory.

     VERSIONS
          Available since Linux 2.3.99pre1 and glibc 2.2.

     CONFORMING TO
          mincore() is not specified in POSIX.1, and it is not avail-
          able on all UNIX implementations.

     BUGS
          Before kernel 2.6.21, mincore() did not return correct
          information for MAP_PRIVATE mappings, or for nonlinear map-
          pings (established using remap_file_pages(2)).

     SEE ALSO
          fincore(1), madvise(2), mlock(2), mmap(2), posix_fadvise(2),
          posix_madvise(3)

     COLOPHON
          This page is part of release 5.10 of the Linux man-pages
          project.  A description of the project, information about
          reporting bugs, and the latest version of this page, can be
          found at https://www.kernel.org/doc/man-pages/.

     Page 2                        Linux             (printed 5/22/22)