Provided by: manpages-fr-dev_3.32d0.2p4-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);

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 spécifié 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

       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) ;
       le fichier Documentation/vm/hugetlbpage.txt dans les sources du noyau.

COLOPHON

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

TRADUCTION

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