Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
UNW_INIT_LOCAL(3libunwind)    Programming Library     UNW_INIT_LOCAL(3libunwind)

NAME
     unw_init_local -- initialize cursor for local unwinding

SYNOPSIS
     #include <libunwind.h>

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

DESCRIPTION
     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 is expected  to  be  one
     provided  by  a  call to unw_getcontext(); as such, the instruction pointer
     may point to the instruction after the last instruction of a function,  and
     libunwind	will  back-up the instruction pointer before beginning a walk up
     the call stack. 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.  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  <li-
     bunwind.h>, whereas unw_init_remote() is not.

     If  the  unw_context_t  is known to be a signal frame (i.e., from the third
     argument in a sigaction handler on linux), unw_init_local2() should be used
     for correct initialization on some  platforms,  passing  the  UNW_INIT_SIG-
     NAL_FRAME flag.

RETURN VALUE
     On  successful completion, unw_init_local() returns 0.  Otherwise the nega-
     tive 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  han-
     dler.

ERRORS
     UNW_EINVAL
	     unw_init_local()  was  called  in a version of libunwind which sup-
	    ports 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.

SEE ALSO
     libunwind(3libunwind), unw_init_remote(3libunwind)

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

Programming Library		 29 August 2023       UNW_INIT_LOCAL(3libunwind)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=unw_init_local&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help