Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       subpage_prot - Définir une protection des sous-pages pour un intervalle d'adresses

SYNOPSIS

       long subpage_prot(unsigned long addr, unsigned long len,
                         uint32_t *map);

       Remarque : il n'existe pas de fonction glibc autour de cet appel système ; consultez NOTES.

DESCRIPTION

       L'appel système subpage_prot() spécifique aux PowerPC fournit la possibilité de contrôler les permissions
       d'accès sur des sous-pages de 4 ko sur des systèmes configurés avec une taille de page de 64 ko.

       La  table  de  protection  est  appliquée aux pages de mémoire dans la région démarrant à addr et sur len
       octets. Ces deux paramètres doivent être alignés sur des frontières de 64 ko.

       La table de protection est spécifiée dans le tampon  dont  l'adresse  est  fournie  dans  map.  La  table
       contient  2 bits  par  sous-page  de  4 ko ;  ainsi  chaque  mot  de  32 bits spécifie les protections de
       16 sous-pages de 4 ko dans une page de 64 ko (on voit donc que le nombre de mots 32 bits pointés par  map
       doit  valoir  le  nombre  de  pages  de  64 ko  indiqué par len). Chaque champ de 2 bits dans la table de
       protection vaut soit 0 pour autoriser tout accès, soit 1 pour interdire l'écriture,  soit  2  ou  3  pour
       interdire tout accès.

VALEUR RENVOYÉE

       S'il réussit subpage_prot() renvoie 0. Sinon il renvoie un des codes d'erreur définis ci-dessous.

ERREURS

       EFAULT Le tampon indiqué par map n'est pas accessible.

       EINVAL Les  paramètres  addr  ou  len  sont  incorrects.  Ces deux paramètres doivent être alignés sur un
              multiple de taille de page du système, et ne doivent pas désigner une région en dehors de l'espace
              d'adressage du processus ou une région qui contient des pages immenses.

       ENOMEM Plus de mémoire disponible.

VERSIONS

       Cet appel système est disponible sur les architectures PowerPC depuis Linux 2.6.25. L'appel système n'est
       disponible que si le noyau a été  configuré  avec  CONFIG_PPC_64K_PAGES.  Aucune  prise  en  charge  dans
       l'espace utilisateur n'est disponible.

CONFORMITÉ

       Cet appel système est spécifique à Linux.

NOTES

       La glibc ne fournit pas de fonction autour de cet appel système ; appelez-le avec syscall(2).

       Les protections de page habituelles (au niveau de chaque page de 64 ko) s'appliquent aussi ; le mécanisme
       de  protection  des  sous-pages est une contrainte supplémentaire, ainsi un 0 dans un champ sur 2 bits ne
       permettra pas d'écrire sur une page qui est par ailleurs protégée en écriture.

   Justification
       Cet appel système est fourni pour aider l'écriture d'émulateurs qui opèrent avec des pages de  64 ko  sur
       des  systèmes  PowerPC.  Quand  on  émule  des systèmes x86, qui utilisent une taille de page inférieure,
       l'émulateur ne peut plus utiliser l'unité de gestion de la mémoire (memory-management unit,  ou  MMU)  et
       les  appels système habituels pour contrôler les protections de pages (l'émulateur pourrait émuler le MMU
       en vérifiant, et éventuellement traduisant, chaque adresse mémoire, mais cela est lent). L'idée  est  que
       l'émulateur fournisse un tableau de masques de protections à appliquer sur un intervalle donné d'adresses
       virtuelles.  Ces  masques sont appliqués au niveau où les entrées de tables de pages (page-table entries,
       ou PTE) matérielles sont insérées dans la table de pages matérielles basées sur les PTE  Linux,  si  bien
       que  les  PTE Linux ne sont pas affectées. Il en résulte que les régions de l'espace d'adressage qui sont
       protégées basculent vers des pages matérielles de 4 ko au lieu de 64 ko (pour les machines  qui  prennent
       en charge des pages matérielles de 64 ko).

VOIR AUSSI

       mprotect(2), syscall(2)

       Documentation/vm/hugetlbpage.txt dans les sources du noyau Linux.

COLOPHON

       Cette page fait partie de la publication 3.65 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

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       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> ».

Linux                                            13 juillet 2012                                 SUBPAGE_PROT(2)