table of contents
- bookworm-backports 4.24.0-2~bpo12+1
- testing 4.24.0-2
- unstable 4.24.0-2
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)
SINOPSIS¶
#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.
- set_child_tid
- Î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ă.
- clear_child_tid
- 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-IEȘIRE¶
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¶
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.
30 octombrie 2022 | Pagini de manual de Linux 6.03 |