Man page - subpage_prot(2)

Packages contains this manual

Available languages:

en fr ru ro

Manual

subpage_prot

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
STANDARDS
HISTORIQUE
NOTES
Justification
VOIR AUSSI
TRADUCTION

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 .