'\" t
.\" Manual page created with latex2man on Thu Aug 16 09:44:44 MDT 2007
.\" NOTE: This file is generated, DO NOT EDIT.
.de Vb
.ft CW
.nf
..
.de Ve
.ft R

.fi
..
.TH "UNW\\_GET\\_ACCESSORS" "3" "16 August 2007" "Programming Library " "Programming Library "
.SH NAME
unw_get_accessors
\-\- get pointer to accessor call\-backs 
.PP
.SH SYNOPSIS

.PP
#include <libunwind.h>
.br
.PP
unw_accessors_t *unw_get_accessors(unw_addr_space_t as);
.br
.PP
.SH DESCRIPTION

.PP
The unw_get_accessors()
routine returns a pointer to a 
unw_accessors_t
structure, which contains the call\-back 
routines that were specified when address space as
was created 
(see unw_create_addr_space(3)).
The returned pointer is 
guaranteed to remain valid until address space as
is destroyed 
by a call to unw_destroy_addr_space(3).
.PP
Note that unw_get_accessors()
can be used to retrieve the 
call\-back routines for the local address space 
unw_local_addr_space\&.
.PP
.SH RETURN VALUE

.PP
The unw_get_accessors()
routine cannot fail and always 
returns a valid (non\-NULL)
pointer to an 
unw_accessors_t
structure. 
.PP
.SH THREAD AND SIGNAL SAFETY

.PP
The unw_get_accessors()
routine is thread\-safe as well as 
safe to use from a signal handler. 
.PP
.SH SEE ALSO

.PP
libunwind(3),
unw_create_addr_space(3),
unw_destroy_addr_space(3)
.PP
.SH AUTHOR

.PP
David Mosberger\-Tang
.br
Email: \fBdmosberger@gmail.com\fP
.br
WWW: \fBhttp://www.nongnu.org/libunwind/\fP\&.
.\" NOTE: This file is generated, DO NOT EDIT.
