Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
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 ar-
       gument 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 con-
       text, and the process will exit when this context returns.  The effects
       of  passing  a ucp argument obtained from any other source are unspeci-

       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() re-
       quires.	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:

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |Interface Stability	     |Standard			   |

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

SunOS 5.10			  5 Feb	2001			 getcontext(2)


Want to link to this manual page? Use this URL:

home | help