Provided by: manpages-fr_1.67.0-1_all bug

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.