Scroll to navigation

set_tid_address(2) System Calls Manual set_tid_address(2)

NUME

set_tid_address - definește indicatorul la ID-ul firului de execuție

BIBLIOTECA

Biblioteca C standard (libc, -lc)

REZUMAT

#include <sys/syscall.h>      /* Definirea constantelor SYS_* */
#include <unistd.h>
pid_t syscall(SYS_set_tid_address, int *tidptr);

Notă: glibc nu oferă nicio funcție învăluitoare pentru set_tid_address(), fiind necesară utilizarea syscall(2).

DESCRIERE

Pentru fiecare fir, nucleul păstrează două atribute (adrese) numite set_child_tid și clear_child_tid. Aceste două atribute conțin în mod implicit valoarea NULL.

În cazul în care un fir de execuție este inițiat utilizând clone(2) cu indicatorul CLONE_CHILD_SETTID, set_child_tid este definit la valoarea transmisă în argumentul ctid al acestui apel de sistem.
Atunci când set_child_tid este definit, primul lucru pe care îl face noul fir de execuție este să își scrie ID-ul firului de execuție la această adresă.
Dacă un fir de execuție este inițiat utilizând clone(2) cu indicatorul CLONE_CHILD_CLEARTID, clear_child_tid este definit la valoarea transmisă în argumentul ctid al acelui apel de sistem.

Apelul de sistem set_tid_address() stabilește valoarea clear_child_tid pentru firul apelant la tidptr.

Atunci când se termină un fir de execuție al cărui clear_child_tid nu este NULL, atunci, dacă firul de execuție împarte memoria cu alte fire de execuție, atunci se scrie 0 la adresa specificată în clear_child_tid, iar nucleul efectuează următoarea operație:


futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0);

Efectul acestei operații este de a trezi un singur fir care efectuează o așteptare „futex” la locația din memorie. Erorile din operația de trezire „futex” sunt ignorate.

VALOAREA RETURNATĂ

set_tid_address() returnează întotdeauna ID-ul firului de execuție al apelantului.

ERORI

set_tid_address() reușește întotdeauna.

VERSIUNI

Acest apel este prezent începând cu Linux 2.5.48. Detaliile prezentate aici sunt valabile începând cu Linux 2.5.49.

STANDARDE

Acest apel de sistem este specific pentru Linux.

CONSULTAȚI ȘI

clone(2), futex(2), gettid(2)

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

30 octombrie 2022 Pagini de manual de Linux 6.03