set_tid_address(2) System Calls Manual set_tid_address(2) NUME set_tid_address - definete indicatorul la ID-ul firului de execuie BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include /* Definirea constantelor SYS_* */ #include pid_t syscall(SYS_set_tid_address, int *tidptr); Nota: glibc nu ofera nicio funcie invaluitoare pentru set_tid_address(), fiind necesara utilizarea syscall(2). DESCRIERE Pentru fiecare fir, nucleul pastreaza doua atribute (adrese) numite set_child_tid i clear_child_tid. Aceste doua atribute conin in mod implicit valoarea NULL. set_child_tid In cazul in care un fir de execuie este iniiat utilizand clone(2) cu indicatorul CLONE_CHILD_SETTID, set_child_tid este definit la valoarea transmisa in argumentul ctid al acestui apel de sistem. Atunci cand set_child_tid este definit, primul lucru pe care il face noul fir de execuie este sa ii scrie ID-ul firului de execuie la aceasta adresa. clear_child_tid Daca un fir de execuie este iniiat utilizand clone(2) cu indicatorul CLONE_CHILD_CLEARTID, clear_child_tid este definit la valoarea transmisa in argumentul ctid al acelui apel de sistem. Apelul de sistem set_tid_address() stabilete valoarea clear_child_tid pentru firul apelant la tidptr. Atunci cand se termina un fir de execuie al carui clear_child_tid nu este NULL, atunci, daca firul de execuie imparte memoria cu alte fire de execuie, atunci se scrie 0 la adresa specificata in clear_child_tid, iar nucleul efectueaza urmatoarea operaie: futex(clear_child_tid, FUTEX_WAKE, 1, NULL, NULL, 0); Efectul acestei operaii este de a trezi un singur fir care efectueaza o ateptare ,,futex" la locaia din memorie. Erorile din operaia de trezire ,,futex" sunt ignorate. VALOAREA RETURNATA set_tid_address() returneaza intotdeauna ID-ul firului de execuie al apelantului. ERORI-IEIRE set_tid_address() reuete intotdeauna. STANDARDE Linux. ISTORIC Linux 2.5.48. Detaliile prezentate aici sunt valabile incepand cu Linux 2.5.49. CONSULTAI I clone(2), futex(2), gettid(2) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 set_tid_address(2)