Provided by:
manpages-fr_1.67.0-1_all 
NOM
makecontext, swapcontext - Manipulation du contexte utilisateur.
SYNOPSIS
#include <ucontext.h>
void makecontext(ucontext_t *ucp, void *func(), int argc, ...);
int swapcontext (ucontext_t *oucp, ucontext_t *ucp);
DESCRIPTION
Dans un environnement de type SysV, on dispose du type ucontext_t
défini dans <ucontext.h> et des quatre fonctions getcontext(),
setcontext(), makecontext() et swapcontext() qui permettent, au niveau
utilisateur, des permutations de contextes entre plusieurs threads de
contrôle au sein d’un processus.
Pour le type et les deux premières fonctions, voir getcontext(2).
La fonction makecontext() modifie le contexte pointé par ucp ( qui a
été obtenu par un appel à getcontext()). Avant d’appeler
makecontext(), il faut allouer une nouvelle pile pour ce contexte,
l’affectant à ucp->uc_stack, et définir un contexte successeur,
l’affectant à ucp->uc_link. Lorsque ce contexte est activé par la
suite (en utilisant setcontext() ou swapcontext()), alors, la fonction
func est tout d’abord appelée avec les arguments spécifiés à la suite
de argc (où argc doit préciser le nombre de ces arguments), et lorsque
cette fonction s’achève, le contexte successeur est activé. Quand le
pointeur sur le contexte successeur vaut NULL, le thread se termine.
La fonction swapcontext() sauvegarde le contexte actuel dans la
structure pointée par oucp et active ensuite le contexte pointé par
ucp.
VALEUR RENVOYÉE
En cas de succès, makecontext() renvoie 0 tandis que swapcontext() ne
rend pas la main à l’appelant. (On peut toutefois revenir à l’appelant
en cas d’activation de oucp. Dans un tel cas, swapcontext() se comporte
comme si elle renvoyait 0.) En cas d’erreur, les deux fonctions
renvoient -1 et positionnent errno de façon appropriée.
ERREURS
ENOMEM Espace de pile disponible insuffisant.
NOTES
L’interprétation de ucp->uc_stack est exactement la même que pour
sigaltstack(2), à savoir, cette structure contient l’adresse de départ
et la longueur d’une zone mémoire destinée à être utilisée comme pile,
et ce, sans considération sur le sens d’expansion de la pile. Il n’est
donc pas nécessaire pour le programme utilisateur de se soucier de ce
sens.
CONFORMITÉ
SUSv2, POSIX 1003.1-2001.
VOIR AUSSI
getcontext(2), sigaction(2), sigaltstack(2), sigprocmask(2),
sigsetjmp(3)
TRADUCTION
Stéphan Rafin, 2002.