Provided by: manpages-fr-dev_4.26.0-1_all bug

NOM

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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <sys/syscall.h>      /* Définition des constantes SYS_* */
       #include <unistd.h>

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

       Remarque: la glibc ne fournit pas d'enveloppe pour subpage_prot(), imposant l'utilisation de syscall(2).

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

STANDARDS

       Linux.

HISTORIQUE

       Linux 2.6.25 (PowerPC).

       L'appel système n'est disponible que si le noyau a été configuré avec CONFIG_PPC_64K_PAGES.

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)

       Documentation/admin-guide/mm/hugetlbpage.rst dans les sources du noyau Linux.

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>,    David    Prévot
       <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

       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.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                    subpage_prot(2)