MLOCK(2)

NOM
mlock - Desactiver la pagination pour certaines parties de la memoire.

SYNOPSIS
#include <sys/mman.h>

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

DESCRIPTION
mlock desactive la pagination (paging) pour la portion de memoire debutant a l'adresse addr avec une longueur de len octets. Quand l'appel systeme mlock reussit, on a l'assurance que toutes les pages contenant une partie de la zone memoire specifiee resident en memoire vive (RAM) et y resteront jusqu'a un deverrouillage par la fonction munlock ou munlockall, ou encore jusqu'a ce que le processus se termine ou demarre un programme avec exec. Les processus fils n'heritent pas du verrouillage des pages a travers un fork. Il y a deux domaines principaux d'applications au verrouillage de pages : les algorithmes en temps reel, et le traitement de donnees confidentielles. Les applications temps reel reclament un comportement temporel deterministe, et la pagination est, avec l'ordonnancement, une cause majeure de delais imprevus. Ces algorithmes basculent habituellement sur un comportement d'ordonnancement temps reel avec sched_setscheduler. Les logiciels de cryptographie manipulent souvent quelques octets hautement confidentiels, comme des mots de passe ou des cles privees. A cause de la pagination ces donnees secretes risquent d'etre transferees sur un support physique ou elles pourraient etre lues par un ennemi longtemps apres que le logiciel se soit termine. Il n'y a pas d'empilement des verrouillages memoire, ce qui signifie qu'une page verrouillee plusieurs fois par mlock ou mlockall sera liberee en un seul appel a munlock pour la zone memoire correspondante ou par un appel a munlockall. Les pages qui sont verrouilles par plusieurs zones, ou par plusieurs processus restent verrouillees en memoire vive tant qu'il y a au moins un processus ou une zone qui les verrouille. Sur les systemes POSIX ou mlock et munlock sont disponibles, la constante symbolique _POSIX_MEMLOCK_RANGE est definie dans <unistd.h> et la valeur symbolique PAGESIZE de <limits.h> indique le nombre d'octets par page.

VALEUR RENVOYEE
mlock renvoie 0 si il reussit, ou -1 s'il echoue, auquel cas errno contient le code d'erreur.

ERREURS

ENOMEM
    Une partie des adresses incluses dans la zone desiree ne correspond pas a une page de l'espace d'adressage accessible, ou le processus a essaye de depasser le nombre maximal de pages verrouillees.

EPERM
    L'appelant n'a pas les privileges appropries, seul le Super-User peut verrouiller des pages.

EINVAL
    len n'est pas un nombre positif.

CONFORMITE
POSIX.1b, SVr4. SVr4 documente un code d'erreur EAGAIN supplementaire.

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