Go to main content

man pages section 2: System Calls

Exit Print View

Updated: Wednesday, July 27, 2022



mincore - determine residency of memory pages


#include <sys/types.h>

int mincore(void *addr, size_t len, char *vec);


The mincore() function determines the residency of the memory pages in the address space covered by mappings in the range [addr, addr + len]. The status is returned as a character-per-page in the character array referenced by *vec (which the system assumes to be large enough to encompass all the pages in the address range). The least significant bit of each character is set to 1 to indicate that the referenced page is in primary memory, and to 0 to indicate that it is not. The settings of other bits in each character are undefined and may contain other information in future implementations.

Because the status of a page can change between the time mincore() checks and returns the information, returned information might be outdated. Only locked pages are guaranteed to remain in memory; see mlock(3C).

Return Values

Upon successful completion, mincore() returns 0. Otherwise, −1 is returned and errno is set to indicate the error.


The mincore() function will fail if:


The vec argument points to an illegal address.


The addr argument is not a multiple of the page size as returned by sysconf(3C), or the len argument has a value less than or equal to 0.


Addresses in the range [addr, addr + len] are invalid for the address space of a process or specify one or more pages which are not mapped.

See Also

mmap(2), mlock(3C), sysconf(3C)