Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

makecontext(3) [netbsd man page]

MAKECONTEXT(3)						   BSD Library Functions Manual 					    MAKECONTEXT(3)

NAME
makecontext, swapcontext -- manipulate user contexts LIBRARY
Standard C Library (libc, -lc) SYNOPSIS
#include <ucontext.h> void makecontext(ucontext_t *ucp, void (*func)(), int argc, ...); int swapcontext(ucontext_t * restrict oucp, ucontext_t * restrict ucp); DESCRIPTION
The makecontext() 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 num- ber 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). RETURN VALUES
The makecontext() function returns no value. On success, swapcontext() returns a value of 0, Otherwise, -1 is returned and errno is set to indicate the error. ERRORS
The swapcontext() function will fail if: [EFAULT] The oucp argument or the ucp argument points to an invalid address. [EINVAL] The contents of the datum pointed to by ucp are invalid. SEE ALSO
_exit(2), getcontext(2), setcontext(2), ucontext(2) STANDARDS
The makecontext() and swapcontext() functions conform to X/Open System Interfaces and Headers Issue 5 (``XSH5'') and IEEE Std 1003.1-2001 (``POSIX.1''). The IEEE Std 1003.1-2004 (``POSIX.1'') revision marked the functions makecontext() and swapcontext() as obsolete, citing portability issues and recommending the use of POSIX threads instead. The IEEE Std 1003.1-2008 (``POSIX.1'') revision removed the functions from the specifica- tion. 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. HISTORY
The makecontext() and swapcontext() functions first appeared in AT&T System V Release 4 UNIX. BSD
May 4, 2012 BSD

Check Out this Related Man Page

makecontext(2)							System Calls Manual						    makecontext(2)

NAME
makecontext, swapcontext - Manipulate user level context switching SYNOPSIS
#include <ucontext.h> void makecontext( ucontext_t *ucp, void (*func)(), int argc ... ); int swapcontext( ucontext_t *oucp, const ucontext_t *ucp ); STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: makecontext(), swapcontext(): XSH5.0 Refer to the standards(5) reference page for more information about industry standards and associated tags. PARAMETERS
Provides a pointer to a ucontext structure, defined in the <ucontext.h> header file. The ucontext structure contains the signal mask, exe- cution stack, and machine registers. (See ucontext(5) for more information about the format of the ucontext structure.) Specifies a func- tion 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 struc- ture. DESCRIPTION
The makecontext() function modifies the context specified by the ucp parameter. Before you call the makecontext() function, call the get- context() 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 ini- tialize 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. RETURN VALUES
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. ERRORS
The makecontext() or swapcontext() functions set errno to the specified values for the following conditions: The ucp parameter has too lit- tle stack left to complete the operation. SEE ALSO
Functions: exit(2), getcontext(2), sigaction(2), sigprocmask(2) Files: ucontext(5) Standards: standards(5) makecontext(2)
Man Page