Provided by: manpages-fr-dev_4.26.0-1_all bug

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.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                 get_robust_list(2)