Man page - pthread_attr_getstack(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

pthread_attr_setstack

NUME
BIBLIOTECA
SINOPSIS
DESCRIERE
VALOAREA RETURNATĂ
ERORI-IEȘIRE
ATRIBUTE
STANDARDE
ISTORIC
NOTE
EXEMPLE
CONSULTAȚI ȘI
TRADUCERE

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 )

SINOPSIS

#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-IEȘIRE

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.

ATRIBUTE

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

Image grohtml-653817-1.png

STANDARDE

POSIX.1-2008.

ISTORIC

glibc 2.2. POSIX.1-2001.

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 făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 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 .