mincore

Autres langues

Langue: fr

Version: 30 avril 2004 (fedora - 16/08/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. (Les autres bits sont indéfinis, réservés pour une possible utilisation ultérieure.) Bien sûr, ce n'est qu'un instantané : les pages qui ne sont pas verrouillées en mémoire peuvent aller et venir à tout moment, et le contenu de vec peut être déjà périmé au retour de l'appel.

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.
EFAULT
vec pointe vers une adresse illégale.
EINVAL
n'est pas aligné sur une frontière de page.
ENOMEM
len est plus grand que (TASK_SIZE - start). (Cela peut arriver si une valeur négative est fournie à len, puisque cette valeur sera interprétée comme étant un très grand entier non signé.) Dans Linux 2.6.11 et précédents, l'erreur EINVAL était renvoyé dans ce cas là.
ENOMEM
la zone entre address et address + length contient de la mémoire autre qu'une projection de fichier.

BOGUES

Jusqu'à présent (Linux 2.6.5), mincore() ne renvoie pas d'information correcte pour une projection MAP_PRIVATE.

CONFORMITÉ

mincore() n'est pas spécifiée par POSIX.1-2001 et n'est pas disponible sur toutes les implémentations 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

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 17 janvier 2002 et révisée le 10 juillet 2006.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=en man 2 mincore ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.