Provided by: manpages-es-dev_4.21.0-2_all bug

NOMBRE

       getcontext, setcontext - consulta o establece el contexto de usuario

BIBLIOTECA

       Biblioteca Estándar C (libc, -lc)

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.

       La función getcontext() inicializa la estructura apuntada por ucp al contexto activo actualmente.

       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 │
       └───────────────────────────────────────────────────────────────┴────────────────────┴──────────────────┘

ESTÁNDARES

       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)

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>
       y Marcos Fouces <marcos@debian.org>

       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.

Páginas de manual de Linux 6.03                 15 Diciembre 2022                                  getcontext(3)