UCONTEXT(2)

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 xsh5 and p1003.1-2001. The p1003.1-2008 revision removed the ucontext_t from the specification.