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

NUME

       pthread_attr_setguardsize,  pthread_attr_getguardsize  -  stabilește/obține  atributul  de
       dimensiune a gărzii în obiectul atributele firului de execuție

BIBLIOTECA

       Biblioteca de fire de execuție POSIX (libpthread, -lpthread)

REZUMAT

       #include <pthread.h>

       int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);
       int pthread_attr_getguardsize(const pthread_attr_t *restrict attr,
                                     size_t *restrict guardsize);

DESCRIERE

       Funcția  pthread_attr_setguardsize()  stabilește  atributul  „guard  size”  (dimensiune  a
       gărzii)  al  obiectului  de  atribute  ale  firelor la care face referire attr la valoarea
       specificată în guardsize.

       Dacă guardsize este mai mare decât 0, atunci pentru fiecare fir nou creat  folosind  attr,
       sistemul  alocă  o  regiune suplimentară de cel puțin guardsize octeți la sfârșitul stivei
       firului pentru a acționa ca zonă de gardă pentru stivă (a se vedea însă secțiunea ERORI).

       Dacă guardsize este 0, atunci firele noi create cu attr nu vor avea o zonă de gardă.

       Dimensiunea implicită a gărzii este aceeași cu dimensiunea paginii sistemului.

       Dacă atributul adresei stivei a fost stabilit în attr (utilizând  pthread_attr_setstack(3)
       sau  pthread_attr_setstackaddr(3)),  ceea  ce  înseamnă  că apelantul alocă stiva firului,
       atunci     atributul     dimensiunii     gărzii     este     ignorat     (de      exemplu,
       pthread_attr_setstackaddr(3)),   sistemul   nu   creează   nicio   zonă  de  gardă):  este
       responsabilitatea  aplicației  să  gestioneze  depășirea  stivei  (poate  prin  utilizarea
       mprotect(2) pentru a defini manual o zonă de gardă la capătul stivei pe care a alocat-o).

       Funcția  pthread_attr_getguardsize()  returnează  atributul  "guard  size"  al  obiectului
       atribute ale firului de execuție la care se face referire  prin  attr  în  memoria  tampon
       indicată de guardsize..

VALOAREA RETURNATĂ

       În  caz  de succes, aceste funcții returnează 0; în caz de eroare, ele returnează un număr
       de eroare diferit de zero.

ERORI

       POSIX.1 documentează o eroare EINVAL în cazul în care attr sau guardsize nu  este  validă.
       În  Linux,  aceste  funcții  reușesc  întotdeauna  (dar aplicațiile portabile și pregătite
       pentru viitor ar trebui totuși să se ocupe de o posibilă returnare de eroare).

VERSIUNI

       Aceste funcții sunt furnizate începând cu glibc 2.1.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

       ┌───────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │InterfațăAtributValoare │
       ├───────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │pthread_attr_setguardsize(), pthread_attr_getguardsize()   │ Siguranța firelor │ MT-Safe │
       └───────────────────────────────────────────────────────────┴───────────────────┴─────────┘

STANDARDE

       POSIX.1-2001, POSIX.1-2008.

NOTE

       O zonă de gardă constă în  pagini  de  memorie  virtuală  care  sunt  protejate  pentru  a
       împiedica accesul la citire și scriere.  În cazul în care un fir de execuție își depășește
       stiva în zona de gardă, atunci, pe majoritatea arhitecturilor, primește un semnal SIGSEGV,
       fiind  astfel  notificat  de  depășire.   Zonele de gardă încep la limitele paginilor, iar
       dimensiunea zonei de gardă este rotunjită în mod intern la dimensiunea paginii  sistemului
       la crearea unui fir; (cu toate acestea, pthread_attr_getguardsize() returnează dimensiunea
       de gardă care a fost setată de pthread_attr_setguardsize().).

       Stabilirea unei dimensiuni de gardă de 0 poate fi utilă pentru a economisi memorie  într-o
       aplicație  care  creează multe fire de execuție și știe că nu se poate produce niciodată o
       depășire a stivei.

       Alegerea unei dimensiuni de gardă mai mari decât dimensiunea implicită poate  fi  necesară
       pentru  detectarea  depășirilor  de  stivă în cazul în care un fir alocă structuri de date
       mari pe stivă.

ERORI

       Ca și în glibc 2.8, implementarea NPTL threading include zona de gardă în cadrul  alocării
       dimensiunii  stivei,  în  loc  să  aloce  spațiu  suplimentar la sfârșitul stivei, așa cum
       prevede  POSIX.1;  (acest  lucru  poate  avea  ca  rezultat  o   eroare   EINVAL   de   la
       pthread_create(3)  dacă valoarea dimensiunii de gardă este prea mare, nefiind lăsat spațiu
       pentru stiva propriu-zisă).

       Implementarea învechită a LinuxThreads a făcut ceea ce trebuia, alocând spațiu suplimentar
       la sfârșitul stivei pentru zona de gardă.

EXEMPLE

       A se vedea pthread_getattr_np(3).

CONSULTAȚI ȘI

       mmap(2),        mprotect(2),        pthread_attr_init(3),        pthread_attr_setstack(3),
       pthread_attr_setstacksize(3), pthread_create(3), pthreads(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⟩.