Provided by: manpages-ro-dev_4.21.0-2_all bug

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

VERSIUNI

       Acest  apel  de  sistem  este  furnizat  pe  arhitectura PowerPC începând cu Linux 2.6.25.
       Apelul de sistem este furnizat numai dacă nucleul este configurat cu CONFIG_PPC_64K_PAGES.
       Nu se oferă suport pentru biblioteci.

STANDARDE

       Acest apel de sistem este specific pentru Linux.

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