Provided by: manpages-fr-dev_4.13-4_all bug

NOM

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

SYNOPSIS

       #include <linux/futex.h>
       #include <sys/types.h>
       #include <syscall.h>

       long get_robust_list(int pid, struct robust_list_head **head_ptr,
                            size_t *len_ptr);
       long set_robust_list(struct robust_list_head *head, size_t len);

       Remarque : il n'existe pas de fonctions glibc autour de ces appels système ; consultez NOTES.

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 aux applications normales. La glibc ne les gère  pas.  Au  cas
       improbable où vous voudriez les appeler directement, utilisez syscall(2).

       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

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
       instructions  pour  signaler  des  anomalies et la dernière version de cette page peuvent être trouvées à
       l'adresse https://www.kernel.org/doc/man-pages/.

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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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 ⟨⟩.