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