HP-UX Reference (11i v2 07/12) - 2 System Calls (vol 5)

m
makecontext(2) makecontext(2)
NAME
makecontext(), swapcontext() - manipulate user contexts
SYNOPSIS
#include <ucontext.h>
void makecontext(ucontext_t *ucp, (void *func)(), int argc, ...);
int swapcontext(ucontext_t *oucp, const ucontext_t *ucp);
DESCRIPTION
The makecontext()
function modifies the context specified by ucp, which has been initialized using
getcontext() . When this context is resumed using
swapcontext() or setcontext() ,program
execution continues by calling
func(), passing it the arguments that follow argc in the
makecon-
text()
call.
Before a call is made to makecontext()
, the context being modified should have a stack allocated for it.
The value of argc must match the number of integer arguments passed to
func(), otherwise the behavior
is undefined.
The uc_link member is used to determine the context that will be resumed when the context being modified
by
makecontext() returns. The uc_link member should be initialized prior to the call to
makecon-
text()
.
The swapcontext() function saves the current context in the context structure pointed to by oucp and
sets the context to the context structure pointed to by ucp.
RETURN VALUE
On successful completion,
swapcontext() returns 0. Otherwise, -1 is returned and
errno is set to
indicate the error.
WARNINGS
Context APIs are not recommended due to possible compatibility problems from release to release, because
context APIs are very architecture-specific. The context APIs "expose" the architecture to the application,
such that the application may not be compatible with all releases.
If you must use context APIs, be aware of the following:
Do not copy the context yourself. It is not contiguous. The context may have pointers that may point
back to the original context rather than in the copied context; hence, it will be broken.
The size of the context will vary in length from release to release.
ERRORS
The
makecontext() and swapcontext()
functions will fail if:
[ENOMEM] The ucp argument does not have enough stack left to complete the operation.
SEE ALSO
exit(2), getcontext(2), sigaction(2), sigprocmask(2), <ucontext.h>.
CHANGE HISTORY
First released in Issue 4, Version 2.
HP-UX 11i Version 2: December 2007 Update 1 Hewlett-Packard Company 173