makecontext man page on Mageia

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

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

PROLOG
       This  manual  page is part of the POSIX Programmer's Manual.  The Linux
       implementation of this interface may differ (consult the	 corresponding
       Linux  manual page for details of Linux behavior), or the interface may
       not be implemented on Linux.

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 Definitions
       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(3P)
[top]

List of man pages available for Mageia

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