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

NOM
getcontext, setcontext - Lire ou écrire le contexte utilisateur
SYNOPSIS
#include <ucontext.h>
int getcontext(ucontext_t *ucp);
int setcontext(const ucontext_t *ucp);
DESCRIPTION
In a System V-like environment, one has the two types mcontext_t and ucontext_t defined in <ucontext.h>
and the four functions getcontext(), setcontext(), makecontext(3), and swapcontext(3) that allow
user-level context switching between multiple threads of control within a process.
Le type mcontext_t est opaque et dépend de la machine. Le type ucontext_t est une structure ayant au
moins les champs suivants :
typedef struct ucontext_t {
struct ucontext_t *uc_link;
sigset_t uc_sigmask;
stack_t uc_stack;
mcontext_t uc_mcontext;
...
} ucontext_t;
Les types sigset_t et stack_t sont définis dans <signal.h>. Ici, uc_link pointe sur le contexte qui doit
être restauré lorsque le contexte courant se terminera (si le contexte en cours a été créé par
makecontext(3)), uc_sigmask est l'ensemble des signaux bloqués dans ce contexte (consultez
sigprocmask(2)), uc_stack est la pile utilisée par ce contexte (consultez sigaltstack(2)), et uc_mcontext
est la représentation — dépendant de la machine — du contexte sauvegardé, qui inclut les registres du
processeur pour le thread appelant.
The function getcontext() initializes the structure pointed to by ucp to the currently active context.
The function setcontext() restores the user context pointed to by ucp. A successful call does not
return. The context should have been obtained by a call of getcontext(), or makecontext(3), or received
as the third argument to a signal handler (see the discussion of the SA_SIGINFO flag in sigaction(2)).
Si le contexte a été obtenu par un appel getcontext(), l'exécution du programme reprend comme si cet
appel venait juste de se terminer.
Si le contexte a été obtenu par un appel makecontext(3), l'exécution du programme continue par l'appel de
la fonction func indiquée en second argument de makecontext(3). Quand la fonction func se termine, on
continue avec le membre uc_link de la structure ucp spécifiée en premier argument de l'appel
makecontext(3). Si ce membre est NULL, le thread se termine.
Si le contexte a été obtenu lors d'un appel à un gestionnaire de signal, alors le texte des anciens
standards dit que « l'exécution du programme continue avec l'instruction suivant celle qui a été
interrompue par le signal ». Toutefois cette phrase a été supprimée de SUSv2, et remplacée par "« le
résultat n'est pas spécifié ».
VALEUR RENVOYÉE
Lorsqu'ils réussissent, getcontext() renvoie zéro et setcontext() ne revient pas. En cas d'erreur, ils
retournent -1 et remplissent errno avec le code d'erreur adéquat.
ERREURS
Aucune définie.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter attributes(7).
┌────────────────────────────┬──────────────────────┬──────────────────┐
│ Interface │ Attribut │ Valeur │
├────────────────────────────┼──────────────────────┼──────────────────┤
│ getcontext(), setcontext() │ Sécurité des threads │ MT-Safe race:ucp │
└────────────────────────────┴──────────────────────┴──────────────────┘
CONFORMITÉ
SUSv2, POSIX.1-2001. POSIX.1-2008 supprime la spécification de getcontext(), en citant des problèmes de
portabilité et en recommandant à la place que les applications soient récrites en utilisant les threads
POSIX.
NOTES
The earliest incarnation of this mechanism was the setjmp(3)/longjmp(3) mechanism. Since that does not
define the handling of the signal context, the next stage was the sigsetjmp(3)/siglongjmp(3) pair. The
present mechanism gives much more control. On the other hand, there is no easy way to detect whether a
return from getcontext() is from the first call, or via a setcontext() call. The user has to invent
their own bookkeeping device, and a register variable won't do since registers are restored.
Lorsqu'un signal arrive, le contexte utilisateur courant est sauvegardé et un nouveau contexte est créé
par le noyau pour exécuter le gestionnaire. N'utilisez pas longjmp(3) dans le gestionnaire, le
comportement est indéfini. Utilisez siglongjmp(3) ou setcontext().
VOIR AUSSI
sigaction(2), sigaltstack(2), sigprocmask(2), longjmp(3), makecontext(3), sigsetjmp(3), signal(7)
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 Frédéric Hantrais <fhantrais@gmail.com>
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.
Linux 21 décembre 2020 GETCONTEXT(3)