| MAKECONTEXT(3) | Library Functions Manual | MAKECONTEXT(3) | 
makecontext, swapcontext
  —
#include <ucontext.h>
void
  
  makecontext(ucontext_t
    *ucp, void
    (*func)(), int
    argc, ...);
int
  
  swapcontext(ucontext_t
    * restrict oucp,
    ucontext_t * restrict
    ucp);
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 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).
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.
swapcontext() function will fail if:
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 specification.
makecontext(); portable applications should not rely
  on the implementation detail that it may be possible to pass pointer arguments
  to functions.makecontext() and
  swapcontext() functions first appeared in
  AT&T System V Release 4 UNIX.
| May 4, 2012 | NetBSD 9.4 |