Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

mincore(2) [redhat man page]

MINCORE(2)						     Linux Programmer's Manual							MINCORE(2)

NAME
mincore - get information on whether pages are in core SYNOPSIS
#include <unistd.h> #include <sys/mman.h> int mincore(void *start, size_t length, unsigned char *vec); DESCRIPTION
The mincore function requests a vector describing which pages of a file are in core and can be read without disk access. The kernel will supply data for length bytes following the start address. On return, the kernel will have filled vec with bytes, of which the least signif- icant bit indicates if a page is core resident. For mincore to return successfully, start must lie on a page boundary. It is the caller's responsibility to round up to the nearest page. The length parameter need not be a multiple of the page size. The vector vec must be large enough to contain length/PAGE_SIZE bytes. One may obtain the page size from getpagesize(2). 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 EINVAL start is not a multiple of the page size, or len has a non-positive value EFAULT vec points to an invalid address ENOMEM address to address + length contained unmapped memory, or memory not part of a file. BUGS
mincore should return a bit vector and not a byte vector. As of Linux 2.4.5, it is not possible to gain information on the core residency of pages which are not backed by a file. In other words, calling mincore on an region returned by an anonymous mmap(2) does not work and sets errno to ENOMEM. Unless pages are locked in memory, the contents of vec may be stale by the time they reach userspace. CONFORMING TO
mincore does not appear to be part of POSIX or the Single Unix Specification. HISTORY
The mincore() function first appeared in 4.4BSD. AVAILABILITY
Since Linux 2.3.99pre1 and glibc 2.2. SEE ALSO
getpagesize(2), mmap(2) Linux 2.4.5 2001-06-03 MINCORE(2)

Check Out this Related Man Page

MINCORE(2)						     Linux Programmer's Manual							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 resi- dency 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 corresponding 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 snapshot: 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. 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 available on all UNIX implementations. BUGS
Before kernel 2.6.21, mincore() did not return correct information for MAP_PRIVATE mappings, or for nonlinear mappings (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 4.15 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/. Linux 2017-09-15 MINCORE(2)
Man Page