NOMBRE¶
mincore - obtiene información de qué páginas están en
memoria
SINOPSIS¶
#include <unistd.h>
#include <sys/mman.h>
int mincore(void *start, size_t length, unsigned
char *vec);
DESCRIPCIÓN¶
La función
mincore solicita un vector describiendo qué
páginas de un fichero están en memoria y pueden ser leídas sin
acceder a disco. El núcleo suministrará los datos para los
length bytes siguientes a la dirección
start. Cuando
regrese, el núcleo habrá rellenado
vec con bytes, de los
cuales el bit menos significativo indica si una página está
residente en memoria.
Para que
mincore tenga éxito,
start debe estar situada en un
límite de página. Es responsabilidad del invocador redondear este
valor a la página más cercana. El parámetro
length no
necesita ser un múltiplo del tamaño de página. El vector
vec debe ser lo suficientemente grande para contener length/PAGE_SIZE
bytes. El tamaño de página puede obtenerse con
getpagesize(2).
VALOR DEVUELTO¶
En caso de éxito,
mincore devuelve cero. En caso de error, se
devuelve -1, y
errno es modificado con el valor apropiado.
ERRORES¶
EAGAIN el núcleo se ha quedado temporalmente sin recursos
- EINVAL
- start no es múltiplo del tamaño de
página, o len tiene un valor no positivo
- EFAULT
- vec apunta a una dirección inválida
- ENOMEM
- address a address + length contiene
memoria sin ubicar, o la memoria no es parte de un fichero.
FALLOS¶
mincore debería devolver un vector de bits y no un vector de bytes,
A partir de la versión 2.4.5 de Linux, no es posible obtener
información sobre la residencia en memoria de páginas no respaldadas
por un fichero. En otras palabras, una llamada a
mincore sobre una
región anónima devuelta por
mmap(2) no funciona y asigna a
errno el valor ENOMEM. A menos que las páginas estén bloqueadas en
memoria, el contenido de
vec puede estar desfasado para cuando alcancen
el espacio de usuario.
mincore no parece ser parte de POSIX o de la Single Unix Specification.
HISTORIA¶
La función mincore() apareció por primera vez en 4.4BSD.
DISPONIBILIDAD¶
Presente desde Linux 2.3.99pre1 y glibc 2.2.
VÉASE TAMBIÉN¶
getpagesize(2),
mmap(2)