void
makecontext(
ucontext_t *ucp
, void (*func)()
, int argc
, ...
)
int
swapcontext(
ucontext_t * restrict oucp
, ucontext_t * restrict ucp
)
)
function modifies the object pointed to by
ucp
,
which has been initialized using
getcontext(2).
When this context is resumed using
swapcontext(
)
or
setcontext(2),
program execution continues as if
func
had been called with the arguments specified after
argc
in the call of
makecontext(
).
The value of
argc
must be equal to the number of integer arguments following it,
and must be equal to the number of integer arguments expected by
func
;
otherwise, the behavior is undefined.
Before being modified using
makecontext(),
a stack must be allocated for the context (in the
uc_stack
member), and a context to resume after
func
has returned must be determined (pointed to by the
uc_link
member);
otherwise, the behavior is undefined.
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
swapcontext()
function saves the current context in the object pointed to by
oucp
,
sets the current context to that specified in the object pointed to by
ucp
,
and resumes execution.
When a context saved by
swapcontext()
is restored using
setcontext(2),
execution will resume as if the corresponding invocation of
swapcontext(
)
had just returned (successfully).
)
function returns no value.
On success,
swapcontext()
returns a value of 0,
Otherwise, -1 is returned and
errno
is set to indicate the error.
)
function will fail if:
EFAULT
]
oucp
argument or the
the
ucp
argument points to an invalid address.
EINVAL
]
ucp
are invalid.
)
and
swapcontext(
)
functions conform to
X/Open System Interfaces and Headers Issue 5 (``XSH5'') .
The standard does not clearly define the type of integer arguments
passed to
func
via
makecontext();
portable applications should not rely on the implementation detail that
it may be possible to pass pointer arguments to functions.
This may be clarified in a future revision of the standard.
)
and
swapcontext(
)
functions first appeared in
AT&T
System V.4 UNIX
.