Content-type: text/html
makecontext, swapcontext - Provides user level context switching
#include <ucontext.h>
void makecontext(
ucontext_t *ucp,
void (*func)(),
int argc ...
);
int swapcontext(
ucontext_t *oucp,
const ucontext_t *ucp
);
Interfaces documented on this reference page conform to industry standards as follows:
makecontext(), swapcontext(): XPG4-UNIX
Refer to the
standards(5)
reference page for more information
about industry standards and associated tags.
Provides a pointer to a
ucontext
structure, defined in the
<ucontext.h>
header file. The
ucontext
structure contains the
signal mask, execution stack, and machine registers. (See
ucontext(5)
for more
information about the format of the
ucontext
structure.)
Specifies a function to be called when program execution begins
in the new context.
Specifies the number of parameters passed to the
func()
function. You include the parameters themselves following
the
argc
parameter.
Pointer to the
ucontext
structure
that holds the current context structure.
The makecontext() function modifies the context specified by the ucp parameter. Before you call the makecontext() function, call the getcontext() function to initialize the ucp parameter.
Before you call the makecontext() function, you should allocate a stack for the new context. Also, you should initialize the uc_link member of the ucontext structure. This member determines the context that is resumed when the context modified by makecontext() returns. You initialize the uc_link member by calling the getcontext() function.
To execute the new context, call the setcontext() or swapcontext() function. Program execution begins by calling the function specified in the func parameter. Any parameters you specify following the argc parameter are passed to the func() function.
The
swapcontext()
function switches between two user
contexts. The function stores the current context in the
oucp
parameter. It then switches execution to the context described by the
ucp
parameter. When the new context finishes execution, control
returns to the context described by the
oucp
parameter.
The makecontext() function does not return.
On success, the
swapcontext()
function returns
0
(zero). On failure the
swapcontext()
function
returns a value of
-1
and sets
errno
to indicate the error.
The
makecontext()
or
swapcontext()
functions set
errno
to the specified values for the
following conditions:
The
ucp
parameter has too little stack
left to complete the operation.
Functions: exit(2), getcontext(2), sigaction(2), sigprocmask(2)
Files: ucontext(5)
Standards: standards(5)