Man page - sigreturn(2)

Packages contains this manual

Available languages:

en fr nl ja ru ro de

Manual

sigreturn

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
VERSIONS
STANDARDS
NOTES
Différences entre bibliothÚque C et noyau
VOIR AUSSI
TRADUCTION

NOM

sigreturn, rt_sigreturn - Revenir d’un gestionnaire de signaux et nettoyer 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Ă©ordonnancĂ© 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 utilisateur, 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 sigaltstack (2)) — de façon Ă  invoquer le gestionnaire de signal. L’utilisation des informations prĂ©cĂ©demment sauvegardĂ©es dans la pile de l’espace 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 instructions du pointeur), de sorte que le processus reprenne son exĂ©cution au point oĂč il a Ă©tĂ© interrompu par le signal.

VALEUR RENVOYÉE

sigreturn () ne renvoit jamais.

VERSIONS

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.

STANDARDS

Aucun.

NOTES

sigreturn () n’existe que pour permettre l’implĂ©mentation de gestionnaires de signal. Il ne devrait jamais ĂȘtre appelĂ© directement (en effet, une simple enveloppe sigreturn () de la bibliothĂšque GNU C renvoie simplement -1 et errno est positionnĂ© sur ENOSYS ). Les dĂ©tails des paramĂštres (s’il y en a) passĂ©s Ă  sigreturn () varient selon l’architecture (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 utilisateur 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 bibliothĂš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 sigaction 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 paramĂš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 transition 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 sigreturn () 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 appelant 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 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 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 .