1d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\documentclass{article}
2d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\usepackage[fancyhdr,pdf]{latex2man}
3d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
4d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\input{common.tex}
5d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
6d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\begin{document}
7d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
8d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\begin{Name}{3}{unw\_getcontext}{David Mosberger-Tang}{Programming Library}{unw\_getcontext}unw\_getcontext -- get initial machine-state
9d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\end{Name}
10d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
11d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\section{Synopsis}
12d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
13d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\File{\#include $<$libunwind.h$>$}\\
14d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
15d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\Type{int} \Func{unw\_getcontext}(\Type{unw\_context\_t~*}\Var{ucp});\\
16d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
17d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\section{Description}
18d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
19d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidmThe \Func{unw\_getcontext}() routine initializes the context structure
20d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidmpointed to by \Var{ucp} with the machine-state of the call-site.  The
21d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidmexact set of registers stored by \Func{unw\_getcontext}() is
22d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidmplatform-specific, but, in general, at least all preserved
23d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm(``callee-saved'') and all frame-related registers, such as the
24d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidmstack-pointer, will be stored.
25d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
26c44549f66bcfad88017c8fd15e136f5183a35204mostang.com!davidmThis routine is normally implemented as a macro and applications
27c44549f66bcfad88017c8fd15e136f5183a35204mostang.com!davidmshould not attempt to take its address.
28c44549f66bcfad88017c8fd15e136f5183a35204mostang.com!davidm
2937e20822f47c206cd6ae088cce218990ab26e660mostang.com!davidm\section{Platform-specific Notes}
3037e20822f47c206cd6ae088cce218990ab26e660mostang.com!davidm
3137e20822f47c206cd6ae088cce218990ab26e660mostang.com!davidmOn IA-64, \Type{unw\_context\_t} has a layout that is compatible with
3237e20822f47c206cd6ae088cce218990ab26e660mostang.com!davidmthat of \Type{ucontext\_t} and such structures can be initialized with
3337e20822f47c206cd6ae088cce218990ab26e660mostang.com!davidm\Func{getcontext}() instead of \Func{unw\_getcontext}().  However, the
3437e20822f47c206cd6ae088cce218990ab26e660mostang.com!davidmreverse is \emph{not} true and it is \emph{not} safe to use structures
3537e20822f47c206cd6ae088cce218990ab26e660mostang.com!davidminitialized by \Func{unw\_getcontext()} in places where a structure
3637e20822f47c206cd6ae088cce218990ab26e660mostang.com!davidminitialized by \Func{getcontext()} is expected. The reason for this
3737e20822f47c206cd6ae088cce218990ab26e660mostang.com!davidmasymmetry is that \Func{unw\_getcontext()} is optimized for maximum
3837e20822f47c206cd6ae088cce218990ab26e660mostang.com!davidmperformance and does not, for example, save the signal mask.
3937e20822f47c206cd6ae088cce218990ab26e660mostang.com!davidm
40d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\section{Return Value}
41d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
42d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidmOn successful completion, \Func{unw\_getcontext}() returns 0.
43d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidmOtherwise, a value of -1 is returned.
44d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
45d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\section{Thread and Signal Safety}
46d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
47d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\Func{unw\_getcontext}() is thread-safe as well as safe to use
48d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidmfrom a signal handler.
49d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
50d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\section{See Also}
51d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
52d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\SeeAlso{libunwind(3)},
53d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\SeeAlso{unw\_init\_local(3)}
54d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
55d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\section{Author}
56d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
57d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\noindent
58d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidmDavid Mosberger-Tang\\
5975f34ccb7dcdfd2b96e370824b3fd723b2f22b49David Mosberger-TangEmail: \Email{dmosberger@gmail.com}\\
6075f34ccb7dcdfd2b96e370824b3fd723b2f22b49David Mosberger-TangWWW: \URL{http://www.nongnu.org/libunwind/}.
61d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\LatexManEnd
62d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm
63d0028f3b308078fe19b1ec7a29f1d8cf6ebf39efmostang.com!davidm\end{document}
64