dwww Home | Manual pages | Find package

sigreturn(2)                  System Calls Manual                 sigreturn(2)

NOM
       sigreturn,  rt_sigreturn - Revenir d'un gestionnaire de signaux et net-
       toyer la pile

BIBLIOTHÈQUE
       Bibliothèque C standard (libc, -lc)

SYNOPSIS
       int sigreturn(...);

DESCRIPTION
       Si le noyau Linux détermine qu'un signal non bloqué est en attente d'un
       processus,  au prochain retour en mode utilisateur de ce processus (par
       exemple au retour d'un appel système ou quand le processus est réordon-
       nancé  sur le processeur), il créera un nouvel emplacement dans la pile
       de l'espace utilisateur où il enregistrera des morceaux de contexte  de
       processus (mot sur l'état du processeur, registres, masque de signal et
       paramètres de la pile du signal).

       Le noyau s'arrange aussi pour que, lors du retour à  l'espace  utilisa-
       teur,  le  gestionnaire  de  signal soit appelé et pour qu'au retour du
       gestionnaire, le contrôle soit redonné à un bout de  code  de  l'espace
       utilisateur appelé généralement le « trampoline de signal ». En retour,
       ce code appelle sigreturn().

       Cet appel à sigreturn() défait tout ce qui a été  fait  —  modifier  le
       masque  de  signaux  du processus, commutation des piles (consultez si-
       galtstack(2)) — de façon à invoquer le gestionnaire de signal. L'utili-
       sation des informations précédemment sauvegardées dans la pile de l'es-
       pace utilisateur sigreturn() restaure le masque de signal du processus,
       commute  les  piles  et restaure le contexte du processus (drappeaux et
       registres du processeur, notamment le pointeur de la pile et  les  ins-
       tructions  du  pointeur), de sorte que le processus reprenne son exécu-
       tion au point où il a été interrompu par le signal.

VALEUR RENVOYÉE
       sigreturn() ne renvoit jamais.

STANDARDS
       De nombreux systèmes de type UNIX ont un appel système  sigreturn()  ou
       presque  équivalent. Cependant, cet appel n'est pas spécifié dans POSIX
       et les détails de son comportement varient en fonction des systèmes.

NOTES
       sigreturn() n'existe que pour permettre  l'implémentation  de  gestion-
       naires  de signal. Il ne devrait jamais être appelé directement (en ef-
       fet, une simple enveloppe sigreturn() de la bibliothèque GNU C  renvoie
       simplement  -1 et errno est positionné sur ENOSYS). Les détails des pa-
       ramètres (s'il y en a) passés à sigreturn() varient  selon  l'architec-
       ture  (sur  certaines  architectures  telles que x86-64, sigreturn() ne
       prend aucun paramètre puisque toutes les informations dont il a  besoin
       sont  disponibles  dans la pile créée précédemment par le noyau dans la
       pile de l'espace utilisateur).

       Autrefois, les systèmes UNIX mettaient le code du trampoline de  signal
       dans  la  pile utilisateur. De nos jours, les pages de la pile utilisa-
       teur sont protégées pour interdire l'exécution d'un  code.  Ainsi,  sur
       les  systèmes  Linux  contemporains,  selon  l'architecture, le code du
       trampoline de signal réside soit dans le vdso(7), soit dans la  biblio-
       thèque C. Dans ce dernier cas, la fonction enveloppe sigaction(2) de la
       bibliothèque C informe le noyau de l'emplacement du code du  trampoline
       en mettant son adresse dans le champ sa_restorer de la structure sigac-
       tion et il positonne le drapeau SA_RESTORER dans le champ sa_flags.

       Les informations du contexte du processus  sauvegardées  vont  dans  la
       structure  ucontext_t (consultez <sys/ucontext.h>). Cette structure est
       visible à l'intérieur du gestionnaire de signal comme le troisième  pa-
       ramètre d'un gestionnaire mis en place à l'aide de sigaction(2) avec le
       drapeau SA_SIGINFO.

       Sur d'autres systèmes UNIX, l'opération de trampoline du signal diffère
       quelque  peu. En particulier, sur certains systèmes où il y a une tran-
       sition vers le  retour  à  l'espace  utilisateur,  le  noyau  donne  le
       contrôle au trampoline (plutôt qu'au gestionnaire de signal) et le code
       du trampoline appelle le gestionnaire de signal  (puis  appelle  sigre-
       turn() après le renvoi du gestionnaire de signal).

   différences entre bibliothèque C et noyau
       L'appel système Linux d'origine s'appelait sigreturn(). Toutefois, avec
       l'arrivée des signaux en temps réel dans  Linux 2.2,  un  nouvel  appel
       système,  rt_sigreturn(),  a  été ajouté pour prendre en charge un type
       sigset_t élargi. La bibliothèque GNU C nous cache ces détails en  appe-
       lant de manière transparente rt_sigreturn() quand le noyau le fournit.

VOIR AUSSI
       kill(2),  restart_syscall(2), sigaltstack(2), signal(2), getcontext(3),
       signal(7), vdso(7)

TRADUCTION
       La traduction française de cette page de manuel a été créée par  Chris-
       tophe  Blaess  <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.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.cou-
       lon@wanadoo.fr>,  Julien  Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François  <nicolas.francois@centra-
       liens.net>,  Florentin  Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier    <barbier@de-
       bian.org>,  David  Prévot  <david@tilapin.org>,  Cédric Boutillier <ce-
       dric.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⟩.

Pages du manuel de Linux 6.03   5 février 2023                    sigreturn(2)

Generated by dwww version 1.15 on Sat Jun 29 01:45:47 CEST 2024.