SUBPAGE_PROT(2) Manuel du programmeur Linux SUBPAGE_PROT(2)

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

#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);

Note: glibc provides no wrapper for subpage_prot(), necessitating the use of syscall(2).

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.

S'il réussit subpage_prot() renvoie 0. Sinon, il renvoie un des codes d'erreur définis ci-dessous.

Le tampon indiqué par map n'est pas accessible.
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.
Plus assez de mémoire.

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.

Cet appel système est spécifique à Linux.

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.

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).

mprotect(2), syscall(2)

Documentation/admin-guide/mm/hugetlbpage.rst in the Linux kernel source tree

Cette page fait partie de la publication 5.13 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/.

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.

22 mars 2021 Linux