getcontext

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
GETCONTEXT(2)		  Linux Programmer’s Manual		GETCONTEXT(2)



NAME
       getcontext, setcontext - get or set the user context

SYNOPSIS
       #include <ucontext.h>

       int getcontext(ucontext_t *ucp);
       int setcontext(const ucontext_t *ucp);

       where:

       ucp    points  to  a  structure defined in <ucontext.h> containing the
	      signal mask, execution stack, and machine registers.

DESCRIPTION
       getcontext(2) gets the current context of the calling process, storing
       it in the ucontext struct pointed to by ucp.

       setcontext(2)  sets  the	 context  of the calling process to the state
       stored in the ucontext struct pointed  to  by  ucp.  The	 struct	 must
       either  have  been created by getcontext(2) or have been passed as the
       third parameter of the sigaction(2) signal handler.

       The ucontext struct created by  getcontext(2)  is  defined  in  <ucon-
       text.h> as follows:

	      typedef struct ucontext
		{
		    unsigned long int uc_flags;
		    struct ucontext *uc_link;
		    stack_t uc_stack;
		    mcontext_t uc_mcontext;
		    __sigset_t uc_sigmask;
		    struct _fpstate __fpregs_mem;
		  } ucontext_t;

RETURN VALUES
       getcontext(2)  returns  0 on success and -1 on failure.	setcontext(2)
       does not return a value on success and returns -1 on failure.

STANDARDS
       These functions comform to: XPG4-UNIX.

NOTES
       When a signal handler executes, the current user context is saved  and
       a new context is created by the kernel.	If the calling process leaves
       the signal handler using longjmp(2), the original  context  cannot  be
       restored,  and  the result of future calls to getcontext(2) are unpre-
       dictable. To avoid this problem, use siglongjmp(2) or setcontext(2) in
       signal handlers instead of longjmp(2).

SEE ALSO
       sigaction(2), sigaltstack(2), sigprocmask(2), sigsetjmp(3), setjmp(3).



Red Hat Linux 6.1	      20 September 1999			GETCONTEXT(2)