Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-5.10)
Apropos / Subsearch:
optional field

getcontext(2)                    System Calls                    getcontext(2)

       getcontext, setcontext - get and set current user context

       #include <ucontext.h>

       int getcontext(ucontext_t *ucp);

       int setcontext(const ucontext_t *ucp);

       The  getcontext()  function initializes the structure pointed to by ucp
       to the current user context of the  calling  process.   The  ucontext_t
       type  that ucp points to defines the user context and includes the con-
       tents of the calling process' machine registers, the signal  mask,  and
       the current execution stack.

       The  setcontext() function restores the user context pointed to by ucp.
       A successful call to setcontext() does not  return;  program  execution
       resumes  at  the  point specified by the ucp argument passed to setcon-
       text(). The ucp argument should be created either by a  prior  call  to
       getcontext(), or by being passed as an argument to a signal handler. If
       the ucp argument was created with getcontext(), program execution  con-
       tinues  as if the corresponding call of getcontext() had just returned.
       If the ucp argument was created with makecontext(3C), program execution
       continues  with the function passed to makecontext(3C). When that func-
       tion returns, the process continues as if after a call to  setcontext()
       with  the  ucp  argument  that was input to makecontext(3C). If the ucp
       argument was passed to a signal handler,  program  execution  continues
       with  the  program instruction following the instruction interrupted by
       the signal.  If the uc_link member of the ucontext_t structure  pointed
       to  by  the  ucp  argument is equal to 0, then this context is the main
       context, and the process will exit  when  this  context  returns.   The
       effects  of  passing  a ucp argument obtained from any other source are

       On successful completion, setcontext() does not return and getcontext()
       returns 0. Otherwise, -1 is returned.

       No errors are defined.

       When  a  signal  handler is executed, the current user context is saved
       and a new context is created.  If the thread leaves the signal  handler
       via  longjmp(3UCB),  then  it is unspecified whether the context at the
       time of the  corresponding  setjmp(3UCB)  call  is  restored  and  thus
       whether future calls to getcontext() will provide an accurate represen-
       tation  of  the  current  context,  since  the  context   restored   by
       longjmp(3UCB)  may  not  contain  all the information that setcontext()
       requires.  Signal handlers should use siglongjmp(3C) instead.

       Portable applications should not modify or access the uc_mcontext  mem-
       ber  of  ucontext_t.  A portable application cannot assume that context
       includes any process-wide static data, possibly including errno.  Users
       manipulating  contexts should take care to handle these explicitly when

       See attributes(5) for descriptions of the following attributes:

       tab()    allbox;    cw(2.750000i)|     cw(2.750000i)     lw(2.750000i)|
       lw(2.750000i).   ATTRIBUTE TYPEATTRIBUTE VALUE Interface StabilityStan-

       sigaction(2), sigaltstack(2), sigprocmask(2), bsd_signal(3C),  makecon-
       text(3C),       setjmp(3UCB),     sigsetjmp(3C),     ucontext.h(3HEAD),
       attributes(5), standards(5)

SunOS 5.10                        5 Feb 2001                     getcontext(2)