Provided by: manpages-fr-dev_4.19.0-7_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.

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.

STANDARDS

       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)

       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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   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⟩.