mincore   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (2)
Updated: 22 avril 2008
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
mincore - Déterminer si des pages se trouvent en mémoire physique  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#include <unistd.h>
#include <sys/mman.h>

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

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

mincore() : _BSD_SOURCE || _SVID_SOURCE  




DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
mincore() renvoie un vecteur qui indique si des pages de mémoire virtuelle d'un 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. L'argument length n'a pas besoin d'être 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 pointé vers un tableau contenant au moins (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 future.) 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.

Pour que mincore() réussisse, addr 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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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 arriver si une valeur négative est fournie à length, 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 addr et addr + length contient de la mémoire non projetée.
 



VERSIONS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Disponible depuis Linux 2.3.99pre1 et glibc 2.2.  



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
mincore() n'est pas spécifiée par POSIX.1-2001 et n'est pas disponible sur toutes les implémentations Unix.  



BOGUES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Avant le noyau 2.6.21, mincore() ne renvoyait pas d'information correcte pour une projection MAP_PRIVATE, ou pour des projections non linéaires (établies en utilisant remap_file_pages(2)).  



VOIR AUSSI   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
mlock(2), mmap(2)  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

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 8 janvier 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.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
VERSIONS
CONFORMITÉ
BOGUES
VOIR AUSSI
TRADUCTION

Table des mots clés   Début   Suivant   Sommaire   Préc.page.lue   Accueil
EFAULTERREURS
EINVALERREURS
ENOMEMERREURS



Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:49:14, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional