Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

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

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #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-IEȘIRE

       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   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 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.

Pagini de manual de Linux 6.9.1                    2 mai 2024                                    subpage_prot(2)