Provided by: manpages-es-dev_4.18.1-1_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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.