subpage_prot(2) System Calls Manual subpage_prot(2) NOM subpage_prot - Definir une protection des sous-pages pour un intervalle d'adresses BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include /* Definition des constantes SYS_* */ #include int syscall(SYS_subpage_prot, unsigned long addr, unsigned long size, uint32_t *map); Remarque: la glibc ne fournit pas d'enveloppe pour subpage_prot(), imposant l'utilisation de syscall(2). DESCRIPTION L'appel systeme subpage_prot() specifique aux PowerPC fournit la possibilite de controler les permissions d'acces sur des sous-pages individuelles de 4 ko sur des systemes configures avec une taille de page de 64 ko. The protection map is applied to the memory pages in the region starting at addr and continuing for size bytes. Both of these arguments must be aligned to a 64-kB boundary. 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 size). 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 RENVOYEE S'il reussit subpage_prot() renvoie 0. Sinon, il renvoie un des codes d'erreur definis ci-dessous. ERREURS EFAULT Le tampon indique par map n'est pas accessible. EINVAL The addr or size arguments are incorrect. Both of these arguments must be aligned to a multiple of the system page size, and they must not refer to a region outside of the address space of the process or to a region that consists of huge pages. ENOMEM Plus assez de memoire. STANDARDS Linux. HISTORIQUE Linux 2.6.25 (PowerPC). L'appel systeme n'est disponible que si le noyau a ete configure avec CONFIG_PPC_64K_PAGES. NOTES Les protections de page habituelles (au niveau de chaque page de 64 ko) s'appliquent aussi ; le mecanisme de protection des sous-pages est une contrainte supplementaire, ainsi un 0 dans un champ sur 2 bits ne permettra pas d'ecrire sur une page qui est par ailleurs protegee en ecriture. Justification Cet appel systeme est fourni pour aider l'ecriture d'emulateurs qui operent avec des pages de 64 ko sur des systemes PowerPC. Quand on emule des systemes x86, qui utilisent une taille de page inferieure, l'emulateur ne peut plus utiliser l'unite de gestion de la memoire (memory-management unit, ou MMU) et les appels systeme habituels pour controler les protections de pages (l'emulateur pourrait emuler le MMU en verifiant, et eventuellement traduisant, chaque adresse memoire, mais cela est lent). L'idee est que l'emulateur fournisse un tableau de masques de protections a appliquer sur un intervalle donne d'adresses virtuelles. Ces masques sont appliques au niveau ou les entrees de tables de pages (page-table entries, ou PTE) materielles sont inserees dans la table de pages materielles basees sur les PTE Linux, si bien que les PTE Linux ne sont pas affectees. Il en resulte que les regions de l'espace d'adressage qui sont protegees basculent vers des pages materielles de 4 ko au lieu de 64 ko (pour les machines qui prennent en charge des pages materielles de 64 ko). VOIR AUSSI mprotect(2), syscall(2) Documentation/admin-guide/mm/hugetlbpage.rst dans les sources du noyau Linux. TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.12 17 novembre 2024 subpage_prot(2)