makecontext ou swapcontext Subroutine

Objectif

Modifie le contexte spécifié par ucp.

Bibliothèque

(libc.a)

Syntaxe

#include < ucontext.h >

void makecontext (ucontext_t *ucp, (void *func) (), int argc, ...) ; int swapcontext (uncontext_t *oucp, const uncontext_t *ucp) ;

Descriptif

La sous-routine makecontext modifie le contexte spécifié par ucp, qui a été initialisé à l'aide de la sous-routine getcontext . Lorsque ce contexte est repris à l'aide de la sous-routine swapcontext ou de la sous-routine setcontext , l'exécution du programme se poursuit en appelant le paramètre func , transmettre les arguments qui suivent argc dans la sous-routine makecontext .

Avant qu'un appel soit effectué à la sous-routine makecontext , une pile doit être allouée au contexte en cours de modification. La valeur de argc doit correspondre au nombre d'arguments de type entier transmis au paramètre func , sinon le comportement n'est pas défini.

Le membre uc_link permet de déterminer le contexte qui sera repris lorsque le contexte modifié par la sous-routine makecontext sera renvoyé. Le membre uc_link doit être initialisé avant l'appel à la sous-routine makecontext .

La fonction de sous-routine swapcontext sauvegarde le contexte en cours dans la structure de contexte indiquée par le paramètre oucp et définit le contexte sur la structure de contexte indiquée par ucp.

Paramètres

Article Descriptif
ucp Pointeur vers une structure utilisateur.
oucp Pointeur vers une structure utilisateur.
Fonction Un pointeur vers une fonction à appeler lorsque ucp est restauré.
argument Nombre d'arguments transmis au paramètre func .

Valeurs renvoyées

Une fois l'opération terminée, la sous-routine swapcontext renvoie 0. Dans le cas contraire, la valeur -1 est renvoyée et errno est défini pour indiquer l'erreur.

Article Descriptif
-1 L'opération a échoué et la variable globale errno est définie sur l'un des codes d'erreur suivants.

Codes d'erreur

Article Descriptif
ENOMEM L'argument ucp ne dispose pas de suffisamment de pile pour terminer l'opération.