swapcontext man page on YellowDog

Man page or keyword search:  
man Server   18644 pages
apropos Keyword Search (all sections)
Output format
YellowDog logo
[printable version]

MAKECONTEXT(P)		   POSIX Programmer's Manual		MAKECONTEXT(P)

NAME
       makecontext, swapcontext - manipulate user contexts

SYNOPSIS
       #include <ucontext.h>

       void makecontext(ucontext_t *ucp, void (*func)(void),
	      int argc, ...);
       int swapcontext(ucontext_t *restrict oucp,
	      const ucontext_t *restrict ucp);

DESCRIPTION
       The  makecontext()  function shall modify the context specified by ucp,
       which has been initialized using getcontext().  When  this  context  is
       resumed	using  swapcontext()  or setcontext(), program execution shall
       continue by calling func, passing it the arguments that follow argc  in
       the makecontext() call.

       Before  a  call	is made to makecontext(), the application shall ensure
       that the context being modified has  a  stack  allocated	 for  it.  The
       application  shall  ensure that the value of argc matches the number of
       arguments of type int passed to func; otherwise, the behavior is	 unde‐
       fined.

       The  uc_link  member  is	 used  to  determine the context that shall be
       resumed when the context being modified by makecontext()	 returns.  The
       application  shall  ensure that the uc_link member is initialized prior
       to the call to makecontext().

       The swapcontext() function shall save the current context in  the  con‐
       text structure pointed to by oucp and shall set the context to the con‐
       text structure pointed to by ucp.

RETURN VALUE
       Upon successful completion, swapcontext() shall return 0. Otherwise, -1
       shall be returned and errno set to indicate the error.

ERRORS
       The swapcontext() function shall fail if:

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

       The following sections are informative.

EXAMPLES
       The following example illustrates the use of makecontext():

	      #include <stdio.h>
	      #include <ucontext.h>

	      static ucontext_t ctx[3];

	      static void
	      f1 (void)
	      {
		  puts("start f1");
		  swapcontext(&ctx[1], &ctx[2]);
		  puts("finish f1");
	      }

	      static void
	      f2 (void)
	      {
		  puts("start f2");
		  swapcontext(&ctx[2], &ctx[1]);
		  puts("finish f2");
	      }

	      int
	      main (void)
	      {
		  char st1[8192];
		  char st2[8192];

		  getcontext(&ctx[1]);
		  ctx[1].uc_stack.ss_sp = st1;
		  ctx[1].uc_stack.ss_size = sizeof st1;
		  ctx[1].uc_link = &ctx[0];
		  makecontext(&ctx[1], f1, 0);

		  getcontext(&ctx[2]);
		  ctx[2].uc_stack.ss_sp = st2;
		  ctx[2].uc_stack.ss_size = sizeof st2;
		  ctx[2].uc_link = &ctx[1];
		  makecontext(&ctx[2], f2, 0);

		  swapcontext(&ctx[0], &ctx[2]);
		  return 0;
	      }

APPLICATION USAGE
       None.

RATIONALE
       None.

FUTURE DIRECTIONS
       None.

SEE ALSO
       exit() , getcontext() , sigaction() , sigprocmask() , the Base  Defini‐
       tions volume of IEEE Std 1003.1-2001, <ucontext.h>

COPYRIGHT
       Portions	 of  this text are reprinted and reproduced in electronic form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       --  Portable  Operating	System	Interface (POSIX), The Open Group Base
       Specifications Issue 6, Copyright (C) 2001-2003	by  the	 Institute  of
       Electrical  and	Electronics  Engineers, Inc and The Open Group. In the
       event of any discrepancy between this version and the original IEEE and
       The  Open Group Standard, the original IEEE and The Open Group Standard
       is the referee document. The original Standard can be  obtained	online
       at http://www.opengroup.org/unix/online.html .

IEEE/The Open Group		     2003			MAKECONTEXT(P)
[top]

List of man pages available for YellowDog

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net