getcontext(3) Library Functions Manual getcontext(3) NOMBRE getcontext, setcontext - consulta o establece el contexto de usuario BIBLIOTECA Biblioteca Estandar C (libc, -lc) SINOPSIS #include int getcontext(ucontext_t *ucp); int setcontext(const ucontext_t *ucp); DESCRIPCION En un entorno del tipo System V, se encuentran los dos tipos mcontext_t y ucontext_t definidos en y las cuatro funciones getcontext(), setcontext(), makecontext() y swapcontext() que permiten el intercambio del contexto del nivel de usuario entre multiples hilos de control dentro de un proceso. El tipo mcontext_t es dependiente de la maquina 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 estan definidos en . uc_link apunta al contexto que sera 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 senales bloqueadas en este contexto (vease sigprocmask(2)), uc_stack es la pila usada por este contexto (vease sigaltstack(2)), y uc_mcontext es la representacion del contexto guardado especifica de la maquina, que incluye los registros de la maquina para el hilo invocador. La funcion 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 ejecucion del programa continua como si esta llamada simplemente regresara. Si el contexto fue obtenido mediante una llamada a makecontext(3), la ejecucion del programa continua por la llamada a la funcion func especificada como segundo argumento en la llamada a makecontext(3). Cuando la funcion 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 senales, se solia decir que "la ejecucion del programa continua con la instruccion de programa siguiente a la instruccion interrumpida por la senal". Sin embargo, esta sentencia fue eliminada en SUSv2, y ahora se establece que "el resultado es indefinido". VALOR DEVUELTO Cuando tiene exito, 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 explicacion de los terminos usados en esta seccion, vease attributes(7). +------------------------------+--------------------+------------------+ |Interfaz | Atributo | Valor | +------------------------------+--------------------+------------------+ |getcontext(), setcontext() | Seguridad del hilo | MT-Safe race:ucp | +------------------------------+--------------------+------------------+ ESTANDARES None. HISTORIAL SUSv2, POSIX.1-2001. POSIX.1-2008 removes these functions, citing portability issues, and recommending that applications be rewritten to use POSIX threads instead. NOTAS The earliest incarnation of this mechanism was the setjmp(3)/ longjmp(3) mechanism. Since that does not define the handling of the signal context, the next stage was the sigsetjmp(3)/ siglongjmp(3) pair. The present mechanism gives much more control. On the other hand, there is no easy way to detect whether a return from getcontext() is from the first call, or via a setcontext() call. The user has to invent their own bookkeeping device, and a register variable won't do since registers are restored. Cuando ocurre una senal, el contexto de usuario actual se guarda y el nucleo crea un nuevo contexto para el manejador de senales. No deje al manejador usar longjmp(3) - es indefinido que ocurriria con contextos. Use siglongjmp(3) o setcontext() en su lugar. VEASE TAMBIEN sigaction(2), sigaltstack(2), sigprocmask(2), longjmp(3), makecontext(3), sigsetjmp(3), signal(7) TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Miguel Perez Ibars y Marcos Fouces Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . Paginas de Manual de Linux 6.8 2 Mayo 2024 getcontext(3)