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)