mirror of https://github.com/mkerrisk/man-pages
105 lines
3.3 KiB
Groff
105 lines
3.3 KiB
Groff
.\" Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
|
|
.\" Written by Marcela Maslanova <mmaslano@redhat.com>
|
|
.\" and Copyright 2013, Michael Kerrisk <mtk.manpages@gmail.com>
|
|
.\"
|
|
.\" %%%LICENSE_START(VERBATIM)
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
.\" preserved on all copies.
|
|
.\"
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
.\" permission notice identical to this one.
|
|
.\"
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
.\" have taken the same level of care in the production of this manual,
|
|
.\" which is licensed free of charge, as they might when working
|
|
.\" professionally.
|
|
.\"
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
.\" %%%LICENSE_END
|
|
.\"
|
|
.TH GETUNWIND 2 2021-03-22 Linux "Linux Programmer's Manual"
|
|
.SH NAME
|
|
getunwind \- copy the unwind data to caller's buffer
|
|
.SH SYNOPSIS
|
|
.nf
|
|
.B #include <linux/unwind.h>
|
|
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
|
|
.B #include <unistd.h>
|
|
.PP
|
|
.BI "long syscall(SYS_getunwind, void " *buf ", size_t " buf_size );
|
|
.fi
|
|
.SH DESCRIPTION
|
|
.I Note: this system call is obsolete.
|
|
.PP
|
|
The
|
|
IA-64-specific
|
|
.BR getunwind ()
|
|
system call copies the kernel's call frame
|
|
unwind data into the buffer pointed to by
|
|
.I buf
|
|
and returns the size of the unwind data;
|
|
this data describes the gate page (kernel code that
|
|
is mapped into user space).
|
|
.PP
|
|
The size of the buffer
|
|
.I buf
|
|
is specified in
|
|
.IR buf_size .
|
|
The data is copied only if
|
|
.I buf_size
|
|
is greater than or equal to the size of the unwind data and
|
|
.I buf
|
|
is not NULL;
|
|
otherwise, no data is copied, and the call succeeds,
|
|
returning the size that would be needed to store the unwind data.
|
|
.PP
|
|
The first part of the unwind data contains an unwind table.
|
|
The rest contains the associated unwind information, in no particular order.
|
|
The unwind table contains entries of the following form:
|
|
.PP
|
|
.in +4n
|
|
.EX
|
|
u64 start; (64\-bit address of start of function)
|
|
u64 end; (64\-bit address of end of function)
|
|
u64 info; (BUF\-relative offset to unwind info)
|
|
.EE
|
|
.in
|
|
.PP
|
|
An entry whose
|
|
.I start
|
|
value is zero indicates the end of the table.
|
|
For more information about the format, see the
|
|
.I IA-64 Software Conventions and Runtime Architecture
|
|
manual.
|
|
.SH RETURN VALUE
|
|
On success,
|
|
.BR getunwind ()
|
|
returns the size of the unwind data.
|
|
On error, \-1 is returned and
|
|
.I errno
|
|
is set to indicate the error.
|
|
.SH ERRORS
|
|
.BR getunwind ()
|
|
fails with the error
|
|
.B EFAULT
|
|
if the unwind info can't be stored in the space specified by
|
|
.IR buf .
|
|
.SH VERSIONS
|
|
This system call is available since Linux 2.4.
|
|
.SH CONFORMING TO
|
|
This system call is Linux-specific,
|
|
and is available only on the IA-64 architecture.
|
|
.SH NOTES
|
|
This system call has been deprecated.
|
|
The modern way to obtain the kernel's unwind data is via the
|
|
.BR vdso (7).
|
|
.SH SEE ALSO
|
|
.BR getauxval (3)
|