Provided by: manpages-fr-dev_4.13-4_all bug

NOM

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

SYNOPSIS

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

       Note : il n'existe pas d'enveloppe pour cet appel système dans la glibc ; voir NOTES.

DESCRIPTION

       The  PowerPC-specific subpage_prot()  system call provides the facility to control the access permissions
       on individual 4 kB subpages on systems configured with a page size of 64 kB.

       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.

       The  protection  map  is  specified in the buffer pointed to by map. The map has 2 bits per 4 kB subpage;
       thus each 32-bit word specifies the protections of 16 4 kB subpages inside a 64 kB page (so,  the  number
       of  32-bit  words  pointed  to  by map should equate to the number of 64-kB pages specified by len). Each
       2-bit field in the protection map is either 0 to allow any access, 1 to prevent writes,  or  2  or  3  to
       prevent all accesses.

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 assez de mémoire.

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/admin-guide/mm/hugetlbpage.rst in the Linux kernel source tree

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
       instructions  pour  signaler  des  anomalies et la dernière version de cette page peuvent être trouvées à
       l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La  traduction  française   de   cette   page   de   manuel   a   été   créée   par   Christophe   Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>, François Micaux, Alain Portal  <aportal@univ-montp2.fr>,  Jean-Philippe  Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,     Thomas     Huriaux      <thomas.huriaux@gmail.com>,      Nicolas      François
       <nicolas.francois@centraliens.net>,     Florentin     Duneau    <fduneau@gmail.com>,    Simon    Paillard
       <simon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier   <barbier@debian.org>   et    David    Prévot
       <david@tilapin.org>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel,  veuillez  envoyer  un  message  à
       debian-l10n-french@lists.debian.org.

Linux                                           21 décembre 2020                                 SUBPAGE_PROT(2)