
Table of Contents
#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,
&ucontext);
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.
On successful completion, unw_init_local()
returns 0.
Otherwise the negative value of one of the error-codes below is
returned.
unw_init_local()
is thread-safe as well as safe to use from a
signal handler.
- UNW_EINVAL
- 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).
- UNW_EUNSPEC
- An unspecified error occurred.
- UNW_EBADREG
- A register needed by unw_init_local()
wasn't accessible.
libunwind(3),
unw_init_remote(3)
David Mosberger-Tang
Hewlett-Packard Labs
Palo-Alto, CA 94304
Email: davidm@hpl.hp.com
WWW: http://www.hpl.hp.com/research/linux/libunwind/.
|