Man page - get_robust_list(2)

Packages contains this manual

Available languages:

en fr ru ro

Manual

get_robust_list

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
VERSIONS
NOTES
VOIR AUSSI
TRADUCTION

NOM

get_robust_list, set_robust_list - Lire et écrire une liste de futex robustes

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <linux/futex.h> /* Définition de struct robust_list_head */
#include <sys/syscall.h>
/* Définition des constantes SYS_* */
#include <unistd.h>

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 systùme, l’utilisation de syscall (2) est requise.

DESCRIPTION

Ces appels systĂšme gĂšrent la liste des futex robustes par thread. Ces listes sont gĂ©rĂ©es dans l’espace utilisateur : le noyau ne connaĂźt que l’emplacement de la tĂȘte 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, Ă  dĂ©verrouiller un futex avant qu’il ne se termine ou Ă  appeller execve (2), un autre thread qui attend ce futex soit notifiĂ© que l’ancien propriĂ©taire du futex est mort. Cette notification se compose de deux parties : le bit FUTEX_OWNER_DIED bit est dĂ©fini dans le mot futex, et le noyau rĂ©alise une opĂ©ration FUTEX_WAKE de futex (2) sur un des threads attendant sur le futex.

L’appel systĂšme get_robust_list () renvoie la tĂȘte de la liste de futex robustes du thread dont l’identifiant de thread est indiquĂ© par pid . Si pid est 0 , la tĂȘte de liste pour le thread appelant est renvoyĂ©e. La tĂȘte de liste est conservĂ©e Ă  l’emplacement pointĂ© par head_ptr . La taille de l’objet pointĂ© par **head_ptr est conservĂ©e dans len_ptr .

Le droit d’utiliser get_robust_list () est soumis Ă  une vĂ©rification par PTRACE_MODE_READ_REALCREDS du mode d’accĂšs ptrace ; voir ptrace (2).

L’appel systĂšme set_robust_list () demande au noyau d’enregistrer la tĂȘte de la liste de futex robustes appartenant au thread appelant. L’argument head est la tĂȘte de liste Ă  enregistrer. L’argument len devrait ĂȘtre sizeof(*head) .

VALEUR RENVOYÉE

Les appels systĂšmes set_robust_list () et get_robust_list () renvoient zĂ©ro quand l’opĂ©ration a rĂ©ussi, et un code d’erreur sinon.

ERREURS

L’appel systĂšme set_robust_list () peut Ă©chouer avec l’erreur suivante :

EINVAL

len n’est pas Ă©gal Ă  sizeof(struct robust_list_head) .

L’appel systĂšme get_robust_list () peut Ă©chouer avec les erreurs suivantes :

EFAULT

La tĂȘte de la liste de futex robustes ne peut pas ĂȘtre conservĂ©e Ă  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 capacitĂ© CAP_SYS_PTRACE .

ESRCH

Aucun thread avec pour identifiant de thread pid n’a pu ĂȘtre trouvĂ©.

VERSIONS

Ces appels ont été ajoutés dans Linux 2.6.17.

NOTES

Ces appels systÚme ne sont pas nécessaires pour des applications nromales.

Un thread ne peut avoir qu’une seule liste de futex robustes. Par consĂ©quent, les applications qui dĂ©sirent utiliser cette fonctionnalitĂ© devraient utiliser les mutex robustes fournis par la glibc.

Dans l’implĂ©mentation initiale, un thread en attente d’un futex n’était prĂ©venu que le propriĂ©taire Ă©tait mort que si ce dernier se terminait. À partir de Linux 2.6.28, la notification a Ă©tĂ© Ă©tendue pour inclure le cas oĂč le propriĂ©taire effectue un execve (2).

Les ID du thread indiquĂ©s dans le corps du texte sont des ID de thread du kernel du mĂȘme type que ceux renvoyĂ©s 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 française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Philippe MENGUAL <jpmengual@debian.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .