1. NOM

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

2. SYNOPSIS

 
Sélectionnez
#include <linux/futex.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.

3. DESCRIPTION

L'implémentation de futex robuste doit maintenir les listes par thread de futex robustes qui sont déverrouillés quand le thread se termine. Ces listes sont gérées en espace utilisateur ; le noyau n'est notifié que de l'emplacement de la tête de la liste. 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. 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).

4. 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.

5. ERREURS

L'appel système set_robust_list() peut échouer avec l'erreur suivante.

  • EINVAL
        len ne correspond pas à la taille de structure struct robust_list_head attendue par le noyau.

L'appel système get_robust_list() peut échouer avec les erreurs suivantes.

  • 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é.
  • EFAULT
        La tête de la liste de futex robustes ne peut pas être conservée à l'emplacement head.

6. VERSIONS

Ces appels système ont été ajoutés à Linux 2.6.17. Aucune bibliothèque n'existe pour les gérer, utilisez syscall(2).

7. 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.

8. VOIR AUSSI

futex(2) Documentation/robust-futexes.txt et Documentation/robust-futex-ABI.txt dans l'arborescence des sources du noyau Linux

9. COLOPHON

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

10. TRADUCTION

Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

Veuillez signaler toute erreur de traduction en écrivant à < >.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».