pkey_alloc(2)

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.