getcontext, setcontext - Provides user level context switching
const ucontext_t *ucp
Interfaces documented on this reference page conform to industry standards as follows:
getcontext(), setcontext(): XPG4-UNIX
Refer to the
reference page for more information
about industry standards and associated tags.
Provides a pointer to a
defined in the
structure contains the signal mask, execution
stack, and machine registers. (See
for more information about the
format of the
Using both the getcontext() and setcontext() functions enables you to initiate user level context control, switching between multiple threads of control within a single process.
When you call getcontext(), it initializes the ucp parameter to the current user context of the calling process.
Use the setcontext() function to restore the state of the user context pointed to by the ucp parameter. The setcontext() function, if successful, does not return; application execution continues from the point specified by the ucontext structure you pass to the setcontext() function.
The ucontext structure that you pass to the setcontext() function must either have been created by a call to the getcontext() function, or have been passed as the third parameter to a signal handler. (The third parameter in a call to the sigaction() function determines the action to be performed when a signal is delivered. For more information, see sigaction(2).)
When a context structure is created by the
function, execution of the program continues as if the corresponding call
function had just returned.
When a signal handler executes, the current user context is saved and
a new context is created by the kernel. If the process leaves the signal
handler using the
function, the original context
cannot be restored, and the result of future calls to the
function are unpredictable. Use the
functions in signal handlers, instead of
function does not return upon success.
(zero) upon success. Upon failure, both the
functions return a value of
Functions: bsd_signal(2), makecontext(2), sigaction(2), sigaltstack(2), sigprocmask(2), setjmp(3), sigsetjmp(3)