makecontext , swapcontext
- modify and exchange user thread contexts
LIBRARY
Lb libc
SYNOPSIS
#include <ucontext.h> void
Fo makecontext
Fa ucontext_t *ucp
Fa void lp]*funcrp]lp]voidrp]
Fa int argc ...
Fc Ft int
swapcontext (ucontext_t *oucp const ucontext_t *ucp);
DESCRIPTION
The
makecontext ();
function
modifies the user thread context pointed to by
Fa ucp ,
which must have previously been initialized by a call to
getcontext(3)
and had a stack allocated for it.
The context is modified so that it will continue execution by invoking
func ();
with the arguments provided.
The
Fa argc
argument
must be equal to the number of additional arguments provided to
makecontext ();
and also equal to the number of arguments to
func (,);
or else the behavior is undefined.
The
Fa ucp->uc_link
argument
must be initialized before calling
makecontext ();
and determines the action to take when
func ();
returns:
if equal to
NULL
the process exits;
otherwise,
setcontext (ucp->uc_link);
is implicitly invoked.
The
swapcontext ();
function
saves the current thread context in
Fa *oucp
and makes
Fa *ucp
the currently active context.
RETURN VALUES
If successful,
swapcontext ();
returns zero;
otherwise -1 is returned and the global variable
errno
is set appropriately.
ERRORS
The
swapcontext ();
function
will fail if:
Bq Er ENOMEM
There is not enough stack space in
Fa ucp
to complete the operation.