mincore Subroutine

Purpose

Determines residency of memory pages.

Library

Standard C Library (libc.a).

Syntax

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

Description

The mincore subroutine returns the primary-memory residency status for regions created from calls made to the mmap (mmap or mmap64 Subroutine) subroutine. The status is returned as a character for each memory page in the range specified by the addr and len parameters. The least significant bit of each character returned is set to 1 if the referenced page is in primary memory. Otherwise, the bit is set to 0. The settings of the other bits in each character are undefined.

Parameters

Item Description
addr Specifies the starting address of the memory pages whose residency is to be determined. Must be a multiple of the page size returned by the sysconf subroutine using the _SC_PAGE_SIZE value for the Name parameter.
len Specifies the length, in bytes, of the memory region whose residency is to be determined. If the len value is not a multiple of the page size as returned by the sysconf subroutine using the _SC_PAGE_SIZE value for the Name parameter, the length of the region is rounded up to the next multiple of the page size.
vec Specifies the character array where the residency status is returned. The system assumes that the character array specified by the vec parameter is large enough to encompass a returned character for each page specified.

Return Values

When successful, the mincore subroutine returns 0. Otherwise, it returns -1 and sets the errno global variable to indicate the error.

Error Codes

If the mincore subroutine is unsuccessful, the errno global variable is set to one of the following values:

Item Description
EFAULT A part of the buffer pointed to by the vec parameter is out of range or otherwise inaccessible.
EINVAL The addr parameter is not a multiple of the page size as returned by the sysconf subroutine using the _SC_PAGE_SIZE value for the Name parameter.
ENOMEM Addresses in the (addr, addr + len) range are invalid for the address space of the process, or specify one or more pages that are not mapped.