Provided by: manpages-es_1.55-8_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)