• Last 5 Forum Topics
    Last post

The Web Only This Site



  • MARC

    Mailing list ARChives
    - Search by -


    Computing Dictionary

  • Text Link Ads

  • LINUX man pages
  • Linux Man Page Viewer

    The following form allows you to view linux man pages.





           #include <ucontext.h>
           int getcontext(ucontext_t *ucp);
           int setcontext(const ucontext_t *ucp);


           In  a  System  V-like environment, one has the two types mcontext_t and
           ucontext_t defined in <ucontext.h> and the four functions getcontext(),
           setcontext(),  makecontext(3)  and swapcontext(3) that allow user-level
           context switching between multiple threads of control within a process.
           The  mcontext_t  type  is machine-dependent and opaque.  The ucontext_t
           type is a structure that has at least the following fields:
               typedef struct ucontext {
                   struct ucontext *uc_link;
                   sigset_t         uc_sigmask;
                   stack_t          uc_stack;
                   mcontext_t       uc_mcontext;
               } ucontext_t;
           with sigset_t and stack_t defined in <signal.h>.  Here  uc_link  points
           to the context that will be resumed when the current context terminates
           (in case the current context was created using makecontext(3)), uc_sig-
           mask  is  the  set  of  signals  blocked  in this context (see sigproc-
           mask(2)), uc_stack is the stack  used  by  this  context  (see  sigalt-
           stack(2)),  and  uc_mcontext  is the machine-specific representation of
           the saved context, that includes the calling  thread's  machine  regis-
           The  function  getcontext() initializes the structure pointed at by ucp
           to the currently active context.
           The function setcontext() restores the user context pointed at by  ucp.
           A  successful  call  does  not  return.   The  context should have been
           obtained by a call of getcontext(), or  makecontext(3),  or  passed  as
           third argument to a signal handler.
           If  the  context was obtained by a call of getcontext(), program execu-
           tion continues as if this call just returned.
           If the context was obtained by a call of makecontext(3), program execu-
           tion  continues  by a call to the function func specified as the second
           argument of that  call  to  makecontext(3).   When  the  function  func
           returns, we continue with the uc_link member of the structure ucp spec-
           ified as the first argument of that call to makecontext(3).  When  this
           member is NULL, the thread exits.
           If  the  context  was  obtained by a call to a signal handler, then old
           standard text says that "program execution continues with  the  program
           be rewritten to use POSIX threads instead.


           The earliest incarnation of this mechanism was the setjmp(3)/longjmp(3)
           mechanism.   Since that does not define the handling of the signal con-
           text, the next stage  was  the  sigsetjmp(3)/siglongjmp(3)  pair.   The
           present mechanism gives much more control.  On the other hand, there is
           no easy way to detect whether a return from getcontext()  is  from  the
           first call, or via a setcontext() call.  The user has to invent her own
           bookkeeping device, and a register variable won't  do  since  registers
           are restored.
           When  a signal occurs, the current user context is saved and a new con-
           text is created by the kernel for the signal handler.  Do not leave the
           handler  using  longjmp(3): it is undefined what would happen with con-
           texts.  Use siglongjmp(3) or setcontext() instead.


           sigaction(2),  sigaltstack(2),  sigprocmask(2),  longjmp(3),   makecon-
           text(3), sigsetjmp(3)

    Linux 2009-03-15 GETCONTEXT(3)


  • Linux

    The Distributions


    The Software


    The News


  • Toll Free
Copyright © 1999 - 2016 by LinuxGuruz