Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


UCONTEXT(2)                   System Calls Manual                  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 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.

NetBSD 10.99                   February 25, 2018                  NetBSD 10.99