Other Alias
swapcontextSINOPSIS
#include <ucontext.h>
void makecontext(ucontext_t *ucp, void *func(),
int argc, ...);
int swapcontext (ucontext_t *oucp, ucontext_t *ucp);
DESCRIPCIÓN
En un entorno tipo SysV, se definen el tipo ucontext_t en <ucontext.h> y las cuatro funciones getcontext(), setcontext(), makecontext() y swapcontext() que permiten la conmutación del contexto del nivel de usuario entre múltiples hilos de control dentro de un proceso.Para el tipo y las primeras dos funciones, véase getcontext(2).
La función makecontext() modifica el puntero apuntado por ucp (que fue obtenido en una llamada previa a getcontext()). Antes de llamar a makecontext(), se debe reservar una nueva pila para este contexto, y asignarla a ucp->uc_stack, y definir un contexto sucesor, y asignarlo a ucp->uc_link. Cuando este contexto es activado más tarde (usando setcontext() o swapcontext()) se llama en primer lugar a la función func, con los argumentos especificados después de argc (donde argc debe contener el número de estos argumentos), y cuando esta función regresa, el contexto sucesor es activado. Cuando el contexto sucesor es NULL , el hilo termina.
La función swapcontext() salva el contexto actual en la estructura apuntada por oucp, y activa el contexto apuntado por ucp.
VALOR DEVUELTO
Cuando tiene éxito, makecontext() devuelve 0 y swapcontext() no regresa. (Pero puede regresar más tarde, en el caso de que oucp sea activado, en cuyo caso devuelve 0 como swapcontext().) En caso de error, ambas devuelven -1 y modifican errno con el valor apropiado.ERRORES
- ENOMEM
- No queda suficiente espacio en la pila.