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