Provided by: manpages-es-dev_4.13-4_all bug

NOMBRE

       getcontext, setcontext - consulta o establece el contexto de usuario

SINOPSIS

       #include <ucontext.h>

       int getcontext(ucontext_t *ucp);
       int setcontext(const ucontext_t *ucp);

DESCRIPCIÓN

       En  un  entorno  del  tipo  System  V,  se  encuentran los dos tipos mcontext_t y ucontext_t definidos en
       <ucontext.h> y las  cuatro  funciones  getcontext(),  setcontext(),  makecontext()  y  swapcontext()  que
       permiten  el  intercambio del contexto del nivel de usuario entre múltiples hilos de control dentro de un
       proceso.

       El tipo mcontext_t es dependiente de la máquina y opaco.  El tipo ucontext_t es una estructura que  tiene
       al menos los campos siguientes:

           typedef struct ucontext_t {
               struct ucontext_t *uc_link;
               sigset_t          uc_sigmask;
               stack_t           uc_stack;
               mcontext_t        uc_mcontext;
               ...
           } ucontext_t;

       de  los  cuales  sigset_t  y  stack_t están definidos en <signal.h>.  uc_link apunta al contexto que será
       reanudado cuando termine el contexto actual (en el caso de que el contexto actual haya sido creado usando
       makecontext(3)), uc_sigmask es el conjunto de señales bloqueadas en este contexto (véase sigprocmask(2)),
       uc_stack es la pila usada por este contexto (véase sigaltstack(2)), y uc_mcontext  es  la  representación
       del  contexto  guardado  específica  de  la máquina, que incluye los registros de la máquina para el hilo
       invocador.

       The function getcontext()  initializes the structure pointed to by ucp to the currently active context.

       The function setcontext()  restores the user context pointed to by  ucp.   A  successful  call  does  not
       return.   The context should have been obtained by a call of getcontext(), or makecontext(3), or received
       as the third argument to a signal handler (see the discussion of the SA_SIGINFO flag in sigaction(2)).

       Si el contexto se obtuvo mediante una llamada a getcontext(), la ejecución del programa continúa como  si
       esta llamada simplemente regresara.

       Si el contexto fue obtenido mediante una llamada a makecontext(3), la ejecución del programa continua por
       la  llamada a la función func especificada como segundo argumento en la llamada a makecontext(3).  Cuando
       la función func regresa, se continua con el miembro uc_link de la estructura ucp especificada como primer
       argumento en la llamada a makecontext(3).  Cuando este miembro es NULL, el hilo termina.

       Cuando el contexto se obtiene mediante una llamada a un manejador de señales,  se  solía  decir  que  "la
       ejecución  del  programa  continua con la instrucción de programa siguiente a la instrucción interrumpida
       por la señal". Sin embargo, esta sentencia fue eliminada en SUSv2, y ahora se establece que "el resultado
       es indefinido".

VALOR DEVUELTO

       Cuando tiene éxito, getcontext() devuelve 0 y setcontext() no regresa. En caso de error, ambas  devuelven
       -1 y modifican errno con el valor apropiado.

ERRORES

       No se definen errores.

ATRIBUTOS

       Para obtener una explicación de los términos usados en esta sección, véase attributes(7).
       ┌────────────────────────────┬────────────────────┬──────────────────┐
       │ InterfazAtributoValor            │
       ├────────────────────────────┼────────────────────┼──────────────────┤
       │ getcontext(), setcontext() │ Seguridad del hilo │ MT-Safe race:ucp │
       └────────────────────────────┴────────────────────┴──────────────────┘

CONFORME A

       SUSv2,  POSIX.1-2001.  POSIX.1-2008 removes the specification of getcontext(), citing portability issues,
       and recommending that applications be rewritten to use POSIX threads instead.

NOTAS

       La primera manifestación de este mecanismo fue el mecanismo setjmp(3)/longjmp(3). Puesto que no define el
       manejo del contexto de señales, el siguiente paso fue el  par  sigsetjmp(3)/siglongjmp(3).   El  presente
       mecanismo  proporciona  mucho  más  control.  Por otra parte, no hay un método sencillo de detectar si un
       regreso de getcontext() es de la primera llamada o via una llamada a setcontext().  El usuario tiene  que
       inventar  su  propio mecanismo de `contabilidad' y no se servirá una variable de tipo registro ya que los
       registros se restauran.

       Cuando ocurre una señal, el contexto de usuario actual se guarda y el núcleo crea un nuevo contexto  para
       el  manejador  de  señales.   No  deje  al  manejador  usar  longjmp(3) - es indefinido que ocurriría con
       contextos. Use siglongjmp(3) o setcontext() en su lugar.

VÉASE TAMBIÉN

       sigaction(2), sigaltstack(2), sigprocmask(2), longjmp(3), makecontext(3), sigsetjmp(3), signal(7)

COLOFÓN

       Esta página es parte de la versión 5.10 del proyecto Linux man-pages. Puede encontrar una descripción del
       proyecto,  información  sobre  cómo  informar  errores  y  la  última   versión   de   esta   página   en
       https://www.kernel.org/doc/man-pages/.

TRADUCCIÓN

       La traducción al español de esta página del manual fue creada por Miguel Pérez Ibars <mpi79470@alu.um.es>

       Esta  traducción  es  documentación  libre;  lea  la GNU General Public License Version 3 o posterior con
       respecto a las condiciones de copyright.  No existe NINGUNA RESPONSABILIDAD.

       Si encuentra algún error en la traducción de esta página  del  manual,  envíe  un  correo  electrónico  a
       debian-l10n-spanish@lists.debian.org.

Linux                                           21 Diciembre 2020                                  GETCONTEXT(3)