MINCORE

Section : Manuel du programmeur Linux (2)
Mise à jour de la version anglaise : 22 avril 2008
Index Menu principal  

NOM

mincore - Déterminer si des pages se trouvent en mémoire physique  

SYNOPSIS

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

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

Exigences de macros de test de fonctionnalités pour la glibc (voir feature_test_macros(7)) :

mincore() : _BSD_SOURCE || _SVID_SOURCE  

DESCRIPTION

mincore() renvoie un vecteur qui indique si des pages de mémoire virtuelle du processus appelant sont présentes en mémoire physique (RAM), auquel cas un accès à ces pages ne provoquera pas d'accès disque (défaut de page). Le noyau renvoie les informations concernant les pages à partir de l'adresse addr sur une longueur de length octets. L'argument addr doit être un multiple de la taille de page du système. Il n'est pas nécessaire que l'argument length soit un multiple de la taille de page du système, mais puisque les informations sont renvoyées pour des pages entières, length est arrondie par excès au multiple de la taille de page du système. On peut obtenir la taille de page (PAGE_SIZE) avec sysconf(_SC_PAGESIZE).

L'argument vec doit pointer vers un tableau de taille au moins égale (length+PAGE_SIZE-1) / PAGE_SIZE octets. En retour, le bit de poids faible de chaque octet sera positionné à 1 si la page correspondante est présente en mémoire physique et à 0 autrement. (L'état des autres bits de chaque octet est indéfini ; ces bits sont réservés pour une éventuelle utilisation ultérieure.) Bien entendu, les informations renvoyées dans vec ne sont 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.  

VALEUR RENVOYÉE

S'il réussit, mincore() renvoie zéro. En cas d'erreur, il renvoie -1 et renseigne errno en conséquence.  

ERREURS

EAGAIN Le noyau manque temporairement de ressources.
EFAULT
vec pointe vers une adresse illégale.
EINVAL
addr n'est pas aligné sur une frontière de page.
ENOMEM
length est plus grand que (TASK_SIZE - addr). (Cela peut se produire si une valeur négative est fournie à length, puisque cette valeur sera interprétée comme étant un très grand entier non signé.) Sous Linux 2.6.11 et antérieurs, l'erreur EINVAL était renvoyé dans ce cas là.
ENOMEM
La zone entre addr et addr + length contient de la mémoire non projetée.
 

VERSIONS

Disponible depuis Linux 2.3.99pre1 et glibc 2.2.  

CONFORMITÉ

mincore() n'est pas spécifiée par POSIX.1-2001 et n'est pas disponible sur toutes les implémentations Unix.  

BOGUES

Avant le noyau 2.6.21, mincore() ne renvoyait pas d'information correcte pour des projections MAP_PRIVATE, ou pour des projections non linéaires (établies en utilisant remap_file_pages(2)).  

VOIR AUSSI

mlock(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 23 juin 2008.

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=C man 2 mincore ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.

 

Index

NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
VERSIONS
CONFORMITÉ
BOGUES
VOIR AUSSI
TRADUCTION

Dernière mise à jour : 23 juin 2008