get_robust_list(2) System Calls Manual get_robust_list(2) NUME get_robust_list, set_robust_list - obine/stabilete lista de futex-uri robuste BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include /* Definiia lui struct robust_list_head */ #include /* Definirea constantelor SYS_* */ #include long syscall(SYS_get_robust_list, int pid, struct robust_list_head **head_ptr, size_t *sizep); long syscall(SYS_set_robust_list, struct robust_list_head *head, size_t size); Nota: Nu exista nicio funcie invaluitoare (wrapper) glibc pentru aceste apeluri de sistem astfel ca este necesara utilizarea a syscall(2). DESCRIERE Aceste apeluri de sistem se ocupa de listele futex robuste pentru fiecare fir. Aceste liste sunt gestionate in spaiul utilizatorului: nucleul tie doar despre locaia antetului listei. Un fir de execuie poate informa nucleul cu privire la locaia listei sale de futex-uri robuste folosind set_robust_list(). Adresa listei de futex-uri robuste a unui fir de execuie poate fi obinuta folosind get_robust_list(). Scopul listei robuste de futex este de a se asigura ca, in cazul in care un fir nu reuete din greeala sa deblocheze un futex inainte de a se termina sau de a apela execve(2), un alt fir care ateapta acel futex este notificat ca fostul proprietar al futexului a murit. Aceasta notificare consta in doua pari: bitul FUTEX_OWNER_DIED este activat in cuvantul futex, iar nucleul efectueaza o operaie futex(2) FUTEX_WAKE pe unul dintre firele care ateapta futex-ul. Apelul de sistem get_robust_list() returneaza antetul listei futex robusta a firului al carui ID de fir este specificat in pid. Daca pid este 0, se returneaza antetul listei pentru firul apelant. Antetul listei este stocat in locaia indicata de head_ptr. Dimensiunea obiectului indicat de **head_ptr este stocata in sizep. Permisiunea de a utiliza get_robust_list() este guvernata de o verificare a modului de acces ptrace PTRACE_MODE_READ_REALCREDS; a se vedea ptrace(2). Apelul de sistem set_robust_list() solicita nucleului sa inregistreze antetul listei de futex-uri robuste deinute de firul apelant. Argumentul head este antetul listei care trebuie inregistrat. Argumentul size trebuie sa fie sizeof(*head). VALOAREA RETURNATA Apelurile de sistem set_robust_list() i get_robust_list() returneaza zero atunci cand operaiunea este reuita, iar in caz contrar un cod de eroare. ERORI-IEIRE Apelul de sistem set_robust_list() poate eua cu urmatoarea eroare: EINVAL size nu este egala cu sizeof(struct robust_list_head). Apelul de sistem get_robust_list() poate eua cu urmatoarele erori: EFAULT Antetul listei futex robuste nu poate fi stocat in locaia head. EPERM Procesul care face apelul nu are permisiunea de a vedea lista robusta futex a firului cu ID-ul firului pid i nu are capacitatea CAP_SYS_PTRACE. ESRCH Nu a putut fi gasit niciun fir cu ID-ul firului pid. VERSIUNI Aceste apeluri de sistem au fost adaugate in Linux 2.6.17. NOTE Aceste apeluri de sistem nu sunt necesare pentru aplicaiile normale. Un fir de execuie poate avea doar o singura lista de futex-uri robuste; prin urmare, aplicaiile care doresc sa utilizeze aceasta funcionalitate ar trebui sa foloseasca mutex-urile robuste furnizate de glibc. In implementarea iniiala, un fir de execuie care atepta un futex era notificat ca proprietarul acestuia a murit numai daca proprietarul se termina. Incepand cu Linux 2.6.28, notificarea a fost extinsa pentru a include cazul in care proprietarul efectueaza un execve(2). ID-urile de fire menionate in textul principal sunt ID-uri de fire kernel de tipul celor returnate de clone(2) i gettid(2). CONSULTAI I futex(2), pthread_mutexattr_setrobust(3) Documentation/robust-futexes.txt i Documentation/robust-futex-ABI.txt in arborele sursa al nucleului Linux 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.15 17 mai 2025 get_robust_list(2)