MLOCK(2)           Manuel du programmeur Linux           MLOCK(2)


NOM
       mlock - Désactiver la pagination pour certaines parties de
       la mémoire.

SYNOPSIS
       #include <sys/mman.h>

       int mlock(const void *addr, size_t len);

DESCRIPTION
       mlock désactive la pagination (paging) pour la portion  de
       mémoire débutant à l'adresse addr avec une longueur de len
       octets.   Quand  l'appel  système  mlock  réussit,  on   a
       l'assurance  que  toutes les pages contenant une partie de
       la zone mémoire spécifiée résident en mémoire  vive  (RAM)
       et  y  resteront jusqu'à un déverrouillage par la fonction
       munlock ou munlockall, ou encore jusqu'à ce que le proces­
       sus se termine ou démarre un programme avec exec.

       Les  processus  fils  n'héritent  pas  du verrouillage des
       pages à travers un fork.

       Il y a deux domaines  principaux  d'applications  au  ver­
       rouillage  de pages : les algorithmes en temps réel, et le
       traitement de données confidentielles.   Les  applications
       temps  réel  réclament  un comportement temporel détermin­
       iste, et la pagination  est,  avec  l'ordonnancement,  une
       cause  majeure de délais imprévus.  Ces algorithmes bascu­
       lent habituellement sur un  comportement  d'ordonnancement
       temps réel avec sched_setscheduler.

       Les logiciels de cryptographie manipulent souvent quelques
       octets hautement confidentiels, comme des mots de passe ou
       des  clés  privées.  A  cause de la pagination ces données
       secrètes  risquent  d'être  transférées  sur  un   support
       physique  où  elles  pourraient  être  lues  par un ennemi
       longtemps après que le logiciel se soit terminé.

       Il n'y a pas d'empilement des  verrouillages  mémoire,  ce
       qui  signifie  qu'une  page verrouillée plusieurs fois par
       mlock ou mlockall sera libérée en un seul appel à  munlock
       pour  la  zone  mémoire  correspondante  ou par un appel à
       munlockall.


       Les pages qui sont verrouillées par  plusieurs  zones,  ou
       par  plusieurs  processus  restent vérrouillées en mémoire
       vive tant qu'il y a au moins un processus ou une zone  qui
       les verrouille.

       Sur   les   systemes   POSIX  où  mlock  et  munlock  sont
       disponibles, la constante symbolique  _POSIX_MEMLOCK_RANGE
       est  définie dans <unistd.h> et la valeur symbolique PAGE­
       SIZE de <limits.h> indique le nombre d'octets par page.



Linux                    19 Juillet 1997                        1





MLOCK(2)           Manuel du programmeur Linux           MLOCK(2)


VALEUR RENVOYÉE
       mlock renvoie 0 si il réussit, ou -1 s'il  échoue,  auquel
       cas errno contient le code d'erreur.

ERREURS
       ENOMEM  Une  partie  des  adresses  incluses  dans la zone
               désirée ne correspond pas à une page  de  l'espace
               d'adressage  accessible,  ou le processus a essayé
               de  dépasser  le  nombre  maximal  de  pages  ver­
               rouillées.

       EPERM   L'appelant n'a pas les privilèges appropriés, seul
               le Super-User peut verrouiller des pages.

       EINVAL  len n'est pas un nombre positif.

CONFORMITÉ
       POSIX.1b, SVr4. SVr4 documente  un  code  d'erreur  EAGAIN
       supplémentaire.

VOIR AUSSI
       munlock(2), mlockall(2), munlockall(2).


TRADUCTION
       Christophe Blaess, 1997.































Linux                    19 Juillet 1997                        2