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  ⟨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 ⟨⟩.