Loading

NOM

       mincore - Déterminer quelles 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

       mincore() renvoie un tableau qui  indique  si  les  pages  de  l’espace
       d’adressage  virtuel  du  processus  appelant  sont en mémoire physique
       (RAM), auquel cas un accès à ces pages ne causera  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.

       Le paramètre addr doit être  un  multiple  de  la  taille  de  page  du
       système.  Le paramètre length n’est pas forcément multiple de la taille
       de page, mais comme  les  informations  sur  les  pages  résidentes  en
       mémoire  sont renvoyées pour des pages entières, length est en pratique
       arrondie au multiple supérieur de la taille de page. On peut obtenir la
       taille de page (PAGE_SIZE) en appelant sysconf(_SC_PAGESIZE).

       Le paramètre vec doit pointer sur un tableau de longueur au moins égale
       à (length+PAGE_SIZE-1) / PAGE_SIZE octets. En retour, le bit  de  poids
       faible  de  chaque  octet  sera  à  1  si la page correspondante est en
       mémoire physique, à 0 sinon (les  autres  bits  de  chaque  octet  sont
       indéfinis ;   ils   sont   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.

VALEUR RENVOYÉE

       S’il réussit, mincore() renvoie zéro. En cas d’erreur, il renvoie -1 et
       remplit errno avec la valeur d’erreur.

ERREURS

       EAGAIN Le noyau manque temporairement de ressources.

       EFAULT vec pointe vers une adresse illégale.

       EINVAL addr n’est pas un multiple de la taille de page.

       ENOMEM length  est  plus  grand  que  (TASK_SIZE - addr).  Ceci peut se
              produire si length a une valeur négative, car cette valeur  sera
              interprétée  comme  un  entier  non  signé. Sous Linux 2.6.11 et
              précédents, cette condition renvoyait l’erreur EINVAL.

       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 décrite par POSIX.1-2001, et n’est pas disponible
       sur toutes les variantes Unix.

BOGUES

       Avant  le  noyau  2.6.21,  mincore()  ne  renvoyait  pas  d’information
       correcte  pour les projections MAP_PRIVATE, ou pour les projections non
       linéaires (établies avec remap_file_pages(2)).

VOIR AUSSI

       mlock(2), mmap(2)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».