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

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).
┌───────────────────────────────────────────────────────────────┬────────────────────┬──────────────────┐
│ Interfaz │ Atributo │ Valor │
├───────────────────────────────────────────────────────────────┼────────────────────┼──────────────────┤
│ 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)