get_robust_list(2) System Calls Manual get_robust_list(2) NOM get_robust_list, set_robust_list - Lire et ecrire une liste de futex robustes BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include /* Definition de struct robust_list_head */ #include /* Definition des constantes SYS_* */ #include long syscall(SYS_get_robust_list, int pid, struct robust_list_head **head_ptr, size_t *len_ptr); long syscall(SYS_set_robust_list, struct robust_list_head *head, size_t len); Note : la glibc ne fournit pas de fonction autour de cet appel systeme, l'utilisation de syscall(2) est requise. DESCRIPTION Ces appels systeme gerent la liste des futex robustes par thread. Ces listes sont gerees dans l'espace utilisateur : le noyau ne connait que l'emplacement de la tete de liste. Un thread peut informer le noyau de l'emplacement de sa liste de futex robustes en utilisant set_robust_list(). L'adresse d'une liste de futex robustes de thread peut s'obtenir en utilisant get_robust_list(). Le but d'une liste de futex robustes est de s'assurer que si un thread ne parvient pas, par accident, a deverrouiller un futex avant qu'il ne se termine ou a appeller execve(2), un autre thread qui attend ce futex soit notifie que l'ancien proprietaire du futex est mort. Cette notification se compose de deux parties : le bit FUTEX_OWNER_DIED bit est defini dans le mot futex, et le noyau realise une operation FUTEX_WAKE de futex(2) sur un des threads attendant sur le futex. L'appel systeme get_robust_list() renvoie la tete de la liste de futex robustes du thread dont l'identifiant de thread est indique par pid. Si pid est 0, la tete de liste pour le thread appelant est renvoyee. La tete de liste est conservee a l'emplacement pointe par head_ptr. La taille de l'objet pointe par **head_ptr est conservee dans len_ptr. Le droit d'utiliser get_robust_list() est soumis a une verification par PTRACE_MODE_READ_REALCREDS du mode d'acces ptrace ; voir ptrace(2). L'appel systeme set_robust_list() demande au noyau d'enregistrer la tete de la liste de futex robustes appartenant au thread appelant. L'argument head est la tete de liste a enregistrer. L'argument len devrait etre sizeof(*head). VALEUR RENVOYEE Les appels systemes set_robust_list() et get_robust_list() renvoient zero quand l'operation a reussi, et un code d'erreur sinon. ERREURS L'appel systeme set_robust_list() peut echouer avec l'erreur suivante : EINVAL len n'est pas egal a sizeof(struct robust_list_head). L'appel systeme get_robust_list() peut echouer avec les erreurs suivantes : EFAULT La tete de la liste de futex robustes ne peut pas etre conservee a l'emplacement head. EPERM Le processus appelant n'a pas le droit de voir la liste de futex robustes du thread avec l'identifiant de thread pid, et n'a pas la capacite CAP_SYS_PTRACE. ESRCH Aucun thread avec pour identifiant de thread pid n'a pu etre trouve. VERSIONS Ces appels ont ete ajoutes dans Linux 2.6.17. NOTES Ces appels systeme ne sont pas necessaires pour des applications nromales. Un thread ne peut avoir qu'une seule liste de futex robustes. Par consequent, les applications qui desirent utiliser cette fonctionnalite devraient utiliser les mutex robustes fournis par la glibc. Dans l'implementation initiale, un thread en attente d'un futex n'etait prevenu que le proprietaire etait mort que si ce dernier se terminait. A partir de Linux 2.6.28, la notification a ete etendue pour inclure le cas ou le proprietaire effectue un execve(2). Les ID du thread indiques dans le corps du texte sont des ID de thread du kernel du meme type que ceux renvoyes par clone(2) et gettid(2). VOIR AUSSI futex(2), pthread_mutexattr_setrobust(3) Documentation/robust-futexes.txt et Documentation/robust-futex-ABI.txt dans l'arborescence des sources du noyau Linux TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 get_robust_list(2)