MLOCKALL(2)        Manuel du programmeur Linux        MLOCKALL(2)


NOM
       mlockall  -  Désactiver  la  pagination  pour le processus
       appelant.

SYNOPSIS
       #include <sys/mman.h>

       int mlockall(int flags);

DESCRIPTION
       mlockall désactive la pagination (paging) pour toutes  les
       pages  représentées dans l'espace d'adressage du processus
       appelant.  Ceci inclut les pages de code, de  données,  et
       le  segment  de  pile,  tout  autant que les bibliothèques
       partagées, l'espace utilisateur dans le noyau, la  mémoire
       partagée et les fichiers projetés en mémoire.

       Quand  l'appel  système mlockall réussit, on a l'assurance
       que toutes les pages concernées 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
       processus 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é.

       Néanmoins pour  les  applications  sécurisées,  seule  une
       petite  partie  de  la mémoire doit être verrouillée, pour
       laquelle la fonction mlock est parfaitement appropriée.

       Le paramètre flags est constitué par un OU logique (  |  )
       entre les constantes symboliques suivantes :

       MCL_CURRENT Verrouiller  toutes  les  pages  correspondant
                   actuellement à l'espace d'adressage du proces­
                   sus.

       MCL_FUTUR   Verrouiller  toutes  les pages qui seront dans



Linux                      8 Avril 1997                         1





MLOCKALL(2)        Manuel du programmeur Linux        MLOCKALL(2)


                   l'espace  d'adressage  du  processus  dans  le
                   futur. Ceci concerne par exemple les nouvelles
                   pages réclamées par un  agrandissement  de  la
                   pile  ou  du  tas,  autant  que  les  nouveaux
                   fichier projetés en mémoire, ou les  nouvelles
                   régions de mémoire partagée.

       Si  MCL_FUTURE  a  été  réclamé, et que le nombre de pages
       verrouillées excède la limite  maximale,  l'appel  système
       ayant  entrainé  le  dépassement  échouera avec une erreur
       ENOMEM.  Si le problème se pose à cause de l'expansion  de
       la  pile,  le noyau empêchera l'agrandissement de celle-ci
       et déclenchera un signal SIGSEGV.

       Les processus temps-réel doivent réserver  suffisament  de
       pages  avant  d'entrer  dans  des portions critiques, pour
       éviter tout déclenchement de faute  de  page.   Ceci  peut
       être  effectué  simplement en appelant une fonction récla­
       mant une variable automatique suffisamment grande, et  qui
       écrit  dans  cette variable de manière à allouer ces pages
       pour la pile.  L'écriture dans la variable garantit  qu'il
       ne   se   produira   même   pas   de   faute  de  page  de
       copie-sur-écriture durant l'exécution de la  section  cri­
       tique.

       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 liberé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 en mémoire vive tant qu'il
       y  a au moins un processus ou une zone qui les verrouille.

       Sur les systemes POSIX  où  mlockall  et  munlockall  sont
       disponibles,  la  constante  symbolique _POSIX_MEMLOCK est
       définie dans <unistd.h>

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

ERREURS
       ENOMEM  Le  processus  a dépassé le nombre maximal de page
               verrouillées.

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

       EINVAL  Un attribut inconnu a été spécifié.





Linux                      8 Avril 1997                         2





MLOCKALL(2)        Manuel du programmeur Linux        MLOCKALL(2)


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

VOIR AUSSI
       munlockall(2), mlock(2), and munlock(2).


TRADUCTION
       Christophe Blaess, 1997.















































Linux                      8 Avril 1997                         3