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

NUME

       pthread_attr_setstack,  pthread_attr_getstack  -  stabilește/obține  atributele  stivei în
       obiectul de atribute ale firului de execuție

BIBLIOTECA

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

REZUMAT

       #include <pthread.h>

       int pthread_attr_setstack(pthread_attr_t *attr,
                                 void stackaddr[.stacksize],
                                 size_t stacksize);
       int pthread_attr_getstack(const pthread_attr_t *restrict attr,
                                 void **restrict stackaddr,
                                 size_t *restrict stacksize);

   Cerințe  pentru  macrocomenzi  de  testare  a  caracteristicilor  pentru   glibc   (consultați
   feature_test_macros(7)):

       pthread_attr_getstack(), pthread_attr_setstack():
           _POSIX_C_SOURCE >= 200112L

DESCRIERE

       Funcția  pthread_attr_attr_setstack()  stabilește  atributele adresa stivei și dimensiunea
       stivei ale obiectului de atribute ale firului de execuție la care face  referire  attr  la
       valorile  specificate  în  stackaddr  și, respectiv, stacksize.  Aceste atribute specifică
       locația și dimensiunea stivei care ar trebui să fie utilizate de un fir care este creat cu
       ajutorul obiectului de atribute ale firului attr.

       stackaddr  trebuie  să  indice  cel  mai  mic  octet  adresabil  dintr-o memorie tampon de
       stacksize octeți care a fost alocată  de  către  apelant.   Paginile  din  memoria  tampon
       alocată trebuie să poată fi atât citite, cât și scrise.

       Funcția  pthread_attr_getstack() returnează atributele de adresă de stivă și de dimensiune
       a stivei ale obiectului de atribute ale firului de execuție la care se face referire  prin
       attr în memoriile tampon indicate de stackaddr și, respectiv, stacksize.

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

       pthread_attr_setstack() poate eșua cu următoarea eroare:

       EINVAL stacksize este mai mică decât PTHREAD_STACK_MIN (16384) bytes.  Pe  unele  sisteme,
              această  eroare poate apărea, de asemenea, dacă stackaddr sau stackaddr + stacksize
              nu este aliniată în mod corespunzător.

       POSIX.1 documentează, de asemenea, o eroare EACCES în cazul în care zona de stivă descrisă
       de stackaddr și stacksize nu poate fi atât citită, cât și scrisă de către apelant.

VERSIUNI

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

ATRIBUTE

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

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

STANDARDE

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

NOTE

       Aceste  funcții sunt furnizate pentru aplicațiile care trebuie să se asigure că stiva unui
       fir de execuție este plasată într-o anumită  locație.   Pentru  majoritatea  aplicațiilor,
       acest  lucru  nu este necesar, iar utilizarea acestor funcții ar trebui evitată (utilizați
       pthread_attr_setstacksize(3) dacă o aplicație necesită pur și simplu o dimensiune a stivei
       diferită de cea implicită).

       Atunci    când    o    aplicație   utilizează   pthread_attr_setstack(),   aceasta   preia
       responsabilitatea alocării stivei.  Orice valoare a mărimii de gardă care a fost stabilită
       cu  ajutorul  pthread_attr_setguardsize(3)  este  ignorată.  În cazul în care se consideră
       necesar, este responsabilitatea aplicației să aloce o zonă de gardă  (una  sau  mai  multe
       pagini  protejate  împotriva  citirii  și  scrierii)  pentru  a  gestiona posibilitatea de
       depășire a stivei.

       Adresa specificată în stackaddr ar trebui să fie aliniată în mod corespunzător:  pentru  o
       portabilitate   completă,  aliniați-o  pe  o  limită  de  pagină  (sysconf(_SC_PAGESIZE)).
       posix_memalign(3) poate fi utilă pentru alocare.  Probabil, stacksize ar trebui să fie, de
       asemenea, un multiplu al dimensiunii paginii de sistem.

       Dacă attr este utilizat pentru a crea mai multe fire de execuție, atunci apelantul trebuie
       să schimbe atributul adresei stivei între apelurile la pthread_create(3); în caz  contrar,
       firele  de  execuție  vor încerca să utilizeze aceeași zonă de memorie pentru stivele lor,
       ceea ce va duce la haos.

EXEMPLE

       A se vedea pthread_attr_init(3).

CONSULTAȚI ȘI

       mmap(2), mprotect(2), posix_memalign(3), pthread_attr_init(3),
       pthread_attr_setguardsize(3), pthread_attr_setstackaddr(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⟩.