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

NUME

       pkey_alloc, pkey_free - alocă sau eliberează o cheie de protecție

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #define _GNU_SOURCE             /* Consultați feature_test_macros(7) */
       #include <sys/mman.h>

       int pkey_alloc(unsigned int flags, unsigned int access_rights);
       int pkey_free(int pkey);

DESCRIERE

       pkey_alloc()  alocă  o cheie de protecție (pkey) și permite ca aceasta să fie transmisă la
       pkey_mprotect(2).

       Parametrul flags al pkey_alloc() este rezervat pentru utilizare viitoare și,  în  prezent,
       trebuie să fie întotdeauna specificat ca fiind 0.

       Argumentul  pkey_alloc()  access_rights  poate  conține  zero  sau  mai  multe operații de
       dezactivare:

       PKEY_DISABLE_ACCESS
              Dezactivează accesul tuturor datelor la memoria acoperită  de  cheia  de  protecție
              returnată.

       PKEY_DISABLE_WRITE
              Dezactivează  accesul  pentru  scriere  la  memoria acoperită de cheia de protecție
              returnată.

       pkey_free() eliberează  o  cheie  de  protecție  și  o  face  disponibilă  pentru  alocări
       ulterioare.  După  ce  o  cheie  de  protecție  a  fost eliberată, aceasta nu mai poate fi
       utilizată în nicio operație legată de chei de protecție.

       O aplicație nu ar trebui să apeleze pkey_free() pe  o  cheie  de  protecție  care  a  fost
       atribuită  unui  interval  de  adrese  de  către pkey_mprotect(2) și care este încă în uz.
       Comportamentul în acest caz este nedefinit și poate duce la o eroare.

VALOAREA RETURNATĂ

       În caz de succes, pkey_alloc() returnează o valoare pozitivă a cheii de protecție. În  caz
       de succes, pkey_free() returnează zero. În caz de eroare, se returnează -1, iar errno este
       configurată pentru a indica eroarea.

ERORI

       EINVAL pkey, flags, sau access_rights nu este valid.

       ENOSPC (pkey_alloc()) Toate cheile de protecție disponibile pentru procesul curent au fost
              alocate. Numărul de chei disponibile este specific arhitecturii și implementării și
              poate fi redus prin utilizarea anumitor chei în interiorul nucleului.  În  prezent,
              există 15 chei disponibile pentru programele utilizator pe x86.

              Această  eroare  va  fi  returnată  și  în cazul în care procesorul sau sistemul de
              operare nu acceptă chei de protecție. Aplicațiile  ar  trebui  să  fie  întotdeauna
              pregătite  să gestioneze această eroare, deoarece factori care nu pot fi controlați
              de aplicație pot reduce numărul de chei de protecție disponibile.

VERSIUNI

       pkey_alloc() și pkey_free() au fost adăugate în Linux 4.9; suportul  pentru  bibliotecă  a
       fost adăugat în glibc 2.27.

STANDARDE

       Apelurile de sistem pkey_alloc() și pkey_free() sunt specifice Linux.

NOTE

       pkey_alloc() poate fi apelat întotdeauna în siguranță, indiferent dacă sistemul de operare
       acceptă sau nu chei de protecție.  Acesta poate fi utilizat în locul oricărui alt mecanism
       de  detectare  a  suportului  pentru chei de protecție și va eșua pur și simplu cu eroarea
       ENOSPC dacă sistemul de operare nu suportă chei de protecție.

       Nucleul garantează că conținutul registrului de drepturi hardware  (PKRU)  va  fi  păstrat
       numai  pentru  cheile  de  protecție  alocate. Ori de câte ori o cheie este nealocată (fie
       înainte de primul apel care returnează cheia respectivă de la pkey_alloc(),  fie  după  ce
       aceasta  este  eliberată prin pkey_free()), nucleul poate efectua modificări arbitrare ale
       părților din registrul de drepturi care afectează accesul la acea cheie.

EXEMPLE

       A se vedea pkeys(7).

CONSULTAȚI ȘI

       pkey_mprotect(2), pkeys(7)

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