subpage_prot(2)

NUME
subpage_prot - definește o protecție de subpagină pentru un interval de adrese

BIBLIOTECA
Biblioteca C standard (libc, -lc)

REZUMAT
#include <sys/syscall.h>      /* Definirea constantelor SYS_* */
#include <unistd.h>

int syscall(SYS_subpage_prot, unsigned long addr, unsigned long len,
            uint32_t *map);

Notă: glibc nu oferă nici o funcție de învăluire pentru subpage_prot(), fiind necesară utilizarea syscall(2).

DESCRIERE
Apelul de sistem specific PowerPC subpage_prot() oferă posibilitatea de a controla permisiunile de acces pe subpagini individuale de 4 ko pe sistemele configurate cu o dimensiune a paginii de 64 ko.

Harta de protecție se aplică paginilor de memorie din regiune începând de la addr și continuând cu len octeți. Ambele argumente trebuie să fie aliniate la o limită de 64 ko.

Harta de protecție este specificată în memoria tampon indicată de map. Harta are 2 biți pentru fiecare subpagină de 4ko; astfel, fiecare cuvânt de 32 de biți specifică protecțiile a 16 subpagini de 4ko în interiorul unei pagini de 64ko (astfel, numărul de cuvinte de 32 de biți indicate de map ar trebui să fie egal cu numărul de pagini de 64ko specificate de len). Fiecare câmp de 2 biți din harta de protecție este fie 0 pentru a permite orice acces, fie 1 pentru a împiedica scrierea, fie 2 sau 3 pentru a împiedica toate accesele.

VALOAREA RETURNATĂ
În caz de succes, subpage_prot() returnează 0. În caz contrar, se returnează unul dintre codurile de eroare specificate mai jos.

ERORI

EFAULT
    Memoria tampon la care face referire map nu este accesibilă.

EINVAL
    Argumentele addr sau len sunt incorecte. Ambele argumente trebuie să fie aliniate la un multiplu al dimensiunii paginii de sistem și nu trebuie să se refere la o regiune din afara spațiului de adrese al procesului sau la o regiune care constă din pagini uriașe.

ENOMEM
    Memorie insuficientă.

STANDARDE
Linux.

ISTORIC
Linux 2.6.25 (PowerPC).

Apelul de sistem este furnizat numai în cazul în care nucleul este configurat cu CONFIG_PPC_64K_PAGES.

NOTE
Se aplică, de asemenea, protecțiile normale ale paginilor (la nivelul paginii de 64 ko); mecanismul de protecție a subpaginilor este o constrângere suplimentară, astfel încât dacă se pune 0 într-un câmp de 2 biți nu se va permite scrierea pe o pagină care este altfel protejată la scriere.

  Justificare
Acest apel de sistem este furnizat pentru a ajuta la scrierea emulatoarelor care operează folosind pagini de 64 ko pe sistemele PowerPC. Atunci când se emulează sisteme precum x86, care utilizează o dimensiune mai mică a paginilor, emulatorul nu mai poate utiliza unitatea de gestionare a memoriei (MMU) și apelurile de sistem normale pentru a controla protecția paginilor. (Emulatorul ar putea emula MMU prin verificarea și eventual realocarea adresei pentru fiecare acces la memorie în software, dar acest lucru este lent). Ideea este că emulatorul furnizează o serie de măști de protecție care se aplică unui interval specificat de adrese virtuale. Aceste măști sunt aplicate la nivelul la care intrările în tabelul de pagini hardware (PTE) sunt inserate în tabelul de pagini hardware pe baza PTE-urilor Linux, astfel încât PTE-urile Linux nu sunt afectate. Implicit, regiunile spațiului de adrese care sunt protejate sunt comutate pentru a utiliza pagini hardware de 4 ko în loc de pagini hardware de 64 ko (pe mașinile cu suport hardware pentru pagini de 64 ko).

CONSULTAȚI ȘI
mprotect(2), syscall(2)

Documentation/admin-guide/mm/hugetlbpage.rst în arborele sursă al nucleului Linux

TRADUCERE
Traducerea în limba română a acestui manual a fost creată de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă Nicio RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.