Originální popis anglicky:
getcontext, setcontext - get and set current user context
Návod, kniha: POSIX Programmer's Manual
#include <ucontext.h>
int getcontext(ucontext_t *
ucp);
int setcontext(const ucontext_t *
ucp);
The
getcontext() function shall initialize the structure pointed to by
ucp to the current user context of the calling thread. The
ucontext_t type that
ucp points to defines the user context and
includes the contents of the calling thread's machine registers, the signal
mask, and the current execution stack.
The
setcontext() function shall restore the user context pointed to by
ucp. A successful call to
setcontext() shall not return; program
execution resumes at the point specified by the
ucp argument passed to
setcontext(). The
ucp argument should be created either by a
prior call to
getcontext() or
makecontext(), or by being passed
as an argument to a signal handler. If the
ucp argument was created
with
getcontext(), program execution continues as if the corresponding
call of
getcontext() had just returned. If the
ucp argument was
created with
makecontext(), program execution continues with the
function passed to
makecontext(). When that function returns, the
thread shall continue as if after a call to
setcontext() with the
ucp argument that was input to
makecontext(). 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 thread shall exit when this context returns. The effects of passing a
ucp argument obtained from any other source are unspecified.
Upon successful completion,
setcontext() shall not return and
getcontext() shall return 0; otherwise, a value of -1 shall be
returned.
No errors are defined.
The following sections are informative.
Refer to
makecontext() .
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(), then it is unspecified whether the context at the time of
the corresponding
setjmp() call is restored and thus whether future
calls to
getcontext() provide an accurate representation of the current
context, since the context restored by
longjmp() does not necessarily
contain all the information that
setcontext() requires. Signal handlers
should use
siglongjmp() or
setcontext() instead.
Conforming applications should not modify or access the
uc_mcontext
member of
ucontext_t. A conforming 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 required.
Use of contexts to create alternate stacks is not defined by this volume of
IEEE Std 1003.1-2001.
None.
None.
bsd_signal() ,
makecontext() ,
setcontext() ,
setjmp() ,
sigaction() ,
sigaltstack() ,
siglongjmp() ,
sigprocmask() ,
sigsetjmp() , the Base
Definitions volume of IEEE Std 1003.1-2001,
<ucontext.h>
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
.