mincore

Autres langues

Langue: fr

Version: 30 juillet 2003 (openSuse - 09/10/07)

Section: 2 (Appels système)

NOM

mincore - savoir quelles pages se trouvent en mémoire physique.

SYNOPSIS

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

int mincore(void *start, size_t length, unsigned char *vec);

DESCRIPTION

La fonction mincore réclame un vecteur (une table) indiquant quelles pages d'un fichier se trouvent en mémoire physique et peuvent être lues sans accès disque. Le noyau fournira les données concernant les length octets à partir de l'adresse start. En retour, le noyau aura rempli la zone vec avec des octets dont le bit de poids faible indiquent si la page est en mémoire physique.

Pour que mincore réussisse, start doit être alignée sur une frontière de page. C'est la responsabilité de l'appelant d'arrondir l'adresse à la page la plus proche. Le paramètre length n'est pas nécessairement un multiple de la taille de page. Le vecteur vec doit être assez grand pour contenir (length+PAGE_SIZE-1)/PAGE_SIZE octets. On peut connaître la taille de page en invoquant getpagesize(2).

VALEUR RENVOYÉE

Si elle réussit, la fonction mincore renvoie zéro. En cas d'erreur, elle renvoie -1 et rempli errno avec la valeur d'erreur.

ERREURS

EAGAIN le noyau manque temporairement de ressources.
EINVAL
n'est pas aligné sur une frontière de page, ou n'est pas une valeur positive.
EFAULT
vec pointe vers une adresse illégale.
ENOMEM
la zone entre address et address + length contient de la mémoire autre qu'une projection de fichier.

BOGUES

mincore devrait renvoyer un vecteur de bits et non un vecteur d'octets. A l'heure de Linux 2.4.20, on ne peut pas obtenir d'information sur les pages en mémoire physique qui ne sont pas une projection d'un fichier. En d'autres termes, appeler mincore sur une zone fournie par un appel anonyme à mmap(2) avec MAP_PRIVATE ne fonctionne pas et remplit errno avec ENOMEM. A moins que les pages ne soit verrouillées en mémoire, le contenu de vec peut être périmé au moment où ces données atteignent l'espace utilisateur.

CONFORMITÉ

mincore n'appartient ni à POSIX ni aux Spécifications Single Unix.

HISTORIQUE

La fonction mincore() est apparue dans 4.4BSD.

DISPONIBILITÉ

Depuis Linux 2.3.99pre1 et GlibC 2.2.

VOIR AUSSI

getpagesize(2), mmap(2)

TRADUCTION

Christophe Blaess, 1996-2003.