Provided by: manpages-es_1.55-10_all bug

NOMBRE

       makecontext, swapcontext - manipulan el contexto de usuario

SINOPSIS

       #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.

OBSERVACIONES

       La interpretación de ucp->uc_stack es como en  sigaltstack(2),  a  saber,  esta  estructura  contiene  el
       comienzo  y  la  longitud  de  un  área  de  memoria  a ser usada como pila, sea cual sea la dirección de
       crecimiento de la pila. Por lo tanto, no es necesario que los programas de usuario se preocupen por  esta
       dirección.

CONFORME A

       SUSv2, POSIX 1003.1-2001.

VÉASE TAMBIÉN

       getcontext(2), sigaction(2), sigaltstack(2), sigprocmask(2), sigsetjmp(3)

Linux 2.4                                       15 noviembre 2001                                 MAKECONTEXT(3)