Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ swapcontext(3C) — SunOS 5.6

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

exit(2)

getcontext(2)

sigaction(2)

sigprocmask(2)

attributes(5)

ucontext(5)

makecontext(3C)

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

These functions are useful for implementing user-level context switching between multiple threads of control within a process. 

makecontext() modifies the context specified by ucp, which has been initialized using getcontext(); when this context is resumed using swapcontext() or setcontext() (see getcontext(2)), program execution continues by calling the function func, passing it the arguments that follow argc in the makecontext() call.  The integer value of argc must be one-greater-than the number of arguments that follow argc; otherwise, the behavior is undefined.  For 5 arguments, the value of argc must be 6. 

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 makecontext(). 

swapcontext() 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 VALUES

On successful completion, swapcontext() returns 0.  Otherwise, −1 is returned and errno is set to indicate the error. 

ERRORS

The makecontext() and swapcontext() functions will fail if:

EFAULT ucp or oucp points to an invalid address. 

ENOMEM ucp does not have enough stack left to complete the operation. 

ATTRIBUTES

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
MT-Level MT-Safe

SEE ALSO

exit(2), getcontext(2), sigaction(2), sigprocmask(2), attributes(5), ucontext(5)

NOTES

The size of the ucontext_t structure may change in future releases.  To remain binary compatible, users of these features must always use makecontext() or getcontext() to create new instances of them. 

SunOS 5.6  —  Last change: 29 Dec 1996

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026