NAME
ucontext
—
user context
SYNOPSIS
#include
<ucontext.h>
_UC_MACHINE_SP
(&uc);
_UC_MACHINE_FP
(&uc);
_UC_MACHINE_PC
(&uc);
_UC_MACHINE_INTRV
(&uc);
_UC_MACHINE_SET_PC
(&uc);
DESCRIPTION
The ucontext_t is a structure type which is used to describe the context of a thread of control within the execution of a process. A thread's context includes its stack, saved registers, and list of blocked signals.The ucontext_t structure includes the following members:
ucontext_t *uc_link sigset_t uc_sigmask stack_t uc_stack mcontext_t uc_mcontext
The uc_link member points to the context
that will be resumed after the function specified when modifying a context
using
makecontext(3) has returned. If uc_link
is a NULL
pointer, then the context is the main
context, and the process will exit with an exit status of 0 upon return.
The uc_sigmask member is the set of signals that are blocked when the context is activated. Further information can be found in sigprocmask(2).
The uc_stack member defines the stack used by the context. Further information can be found in sigaltstack(2).
The uc_mcontext member defines the machine state associated with the context; it may consist of general registers, floating point registers and other machine-specific information. Its description is beyond the scope of this manual page; portable applications should not access this structure member.
The following auxiliary macros are available to access some of that machine-specific information:
_UC_MACHINE_SP
()- — read stack pointer,
_UC_MACHINE_FP
()- — read frame pointer (base pointer),
_UC_MACHINE_PC
()- — read program counter,
_UC_MACHINE_INTRV
()- — read integer return value,
_UC_MACHINE_SET_PC
()- — write program counter.
The frame pointer macro does not guarantee to retrieve a reliable
value and should not be used in a code unless no other debugging format is
easily accessible. A compiler might optimize the frame pointer register in a
function, reusing it as a general purpose register storage
(-fomit-frame-pointer
) or emit function prologues
only before parts that need them
(-fshrink-wrap
).
SEE ALSO
_exit(2), getcontext(2), setcontext(2), sigaltstack(2), sigprocmask(2), makecontext(3), swapcontext(3)
STANDARDS
The ucontext_t type conforms to X/Open System Interfaces and Headers Issue 5 (“XSH5”) and IEEE Std 1003.1-2001 (“POSIX.1”). The IEEE Std 1003.1-2008 (“POSIX.1”) revision removed the ucontext_t from the specification.