- NetBSD Manual Pages
UCONTEXT(2) NetBSD System Calls Manual UCONTEXT(2)
Powered by man-cgi (2021-06-01).
Maintained for NetBSD
by Kimmo Suominen.
Based on man-cgi by Panagiotis Christias.
ucontext -- user context
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:
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
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 con-
text; 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 struc-
The following auxiliary macros are available to access some of that
_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 eas-
ily 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).
_exit(2), getcontext(2), setcontext(2), sigaltstack(2), sigprocmask(2),
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 speci-
NetBSD 9.0 February 25, 2018 NetBSD 9.0