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

NOM

       restart_syscall  -  Redémarrer un appel système après qu'il a été interrompu par un signal
       d'arrêt

SYNOPSIS

       long restart_syscall(void);

       Note : il n'existe pas d'enveloppe pour cet appel système dans la glibc ; voir NOTES.

DESCRIPTION

       L'appel système restart_syscall() est utilisé  pour  redémarrer  certains  appels  système
       lorsqu'un  processus  qui  a été arrêté par un signal (par exemple SIGSTOP ou SIGTSTP) est
       ensuite relancé par un signal SIGCONT. Cet appel système est exclusivement  destiné  à  un
       usage interne par le noyau.

       restart_syscall()   est  utilisé  pour  redémarrer  uniquement  les  appels  système  qui,
       lorsqu'ils sont redémarrés, doivent  ajuster  leurs  paramètres  temporels  — c'est-à-dire
       poll(2)   (à   partir   de   Linux   2.6.24),   nanosleep(2)  (à  partir  de  Linux  2.6),
       clock_nanosleep(2) (à partir de Linux 2.6) et futex(2), lorsqu'il  est  utilisé  avec  les
       opérations  FUTEX_WAIT  (à  partir  de  2.6.22)  et  FUTEX_WAIT_BITSET  (à partir de Linux
       2.6.31). restart_syscall() redémarre l'appel système interrompu avec un paramètre de temps
       ajusté  pour  prendre  en compte le temps écoulé (comprenant le temps d’arrêt du processus
       par le signal). Sans le mécanisme restart_syscall(), l'estimation du temps écoulé pourrait
       ne pas être correctement effectuée lors du redémarrage de ces appels système.

VALEUR RENVOYÉE

       La  valeur  renvoyée  par restart_syscall() est celle renvoyée par l'appel système qui est
       redémarré.

ERREURS

       errno est défini selon l'erreur avec la même valeur que celle définie par l'appel  système
       qui est redémarré par restart_syscall().

STANDARDS

       Linux.

HISTORIQUE

       Linux 2.6.

NOTES

       Il n'y a pas d'enrobage glibc pour cet appel système puisqu'il ne doit être appelé que par
       le noyau et jamais par une application.

       Le noyau utilise restart_syscall() pour s'assurer que quand un appel redémarre  après  que
       le  processus  ait  été arrêté par un signal puis réveillé par un SIGCONT, le temps que le
       processus a passé arrêté soit pris en compte  dans  l'intervalle  du  délai  indiqué  dans
       l'appel  système  d'origine. Pour les appels système qui prennent un paramètre de délai et
       redémarrent automatiquement après un signal d'arrêt et un SIGCONT, sans avoir construit le
       mécanisme  restart_syscall(), après la reprise de l'exécution du processus, le temps passé
       à l'arrêt par le processus n'est pas pris en compte dans la valeur  de  délai.  Parmi  les
       exemples  remarquables  d'appels  système  souffrant  de  ce problème, on trouve ppoll(2),
       select(2) et pselect(2).

       Depuis  l'espace  utilisateur,  l'exécution   de   restart_syscall(2)   est   pratiquement
       transparente :  du  point de vue du processus auteur de l'appel système qui est redémarré,
       tout se passe comme si l'appel système s'exécutait et se relançait de façon habituelle.

VOIR AUSSI

       sigaction(2), sigreturn(2), signal(7)

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>,  Cédric  Boutillier
       <cedric.boutillier@gmail.com>, Frédéric Hantrais  <fhantrais@gmail.com>  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⟩.