unw_init_local man page

unw_init_local -- initialize cursor for local unwinding


#include <libunwind.h>

int unw_init_local(unw_cursor_t *c, unw_context_t *ctxt);


The unw_init_local() routine initializes the unwind cursor  pointed to by c with the machine-state in the context structure  pointed to by ctxt. As such, the machine-state pointed to by  ctxt identifies the initial stack frame at which unwinding  starts. The machine-state must remain valid for the duration for  which the cursor c is in use.

The unw_init_local() routine can be used only for unwinding in  the address space of the current process (i.e., for local unwinding).  For all other cases, unw_init_remote() must be used instead.  From a behavioral point of view, the call:

    ret = unw_init_local(&cursor, &ucontext);

is equivalent to:

    ret = unw_init_remote(&cursor, unw_local_addr_space,

However, unwind performance may be better when using  unw_init_local(). Also, unw_init_local() is  available even when UNW_LOCAL_ONLY has been defined before  including <libunwind.h>, whereas unw_init_remote() is not.

Return Value

On successful completion, unw_init_local() returns 0.  Otherwise the negative value of one of the error-codes below is  returned.

Thread and Signal Safety

unw_init_local() is thread-safe as well as safe to use from a  signal handler.



unw_init_local() was called in a  version of libunwind which supports remote unwinding only  (this normally happens when calling unw_init_local() for a  cross-platform version of libunwind).


An unspecified error occurred.


A register needed by unw_init_local() wasn't accessible.

See Also

libunwind(3), unw_init_remote(3)


David Mosberger-Tang
Email: dmosberger@gmail.com
WWW: http://www.nongnu.org/libunwind/.

Referenced By

libunwind(3), unw_getcontext(3), unw_init_remote(3).

16 August 2007 Programming Library