备注

此系统调用已被弃用。获取内核展开数据的现代方法是通过vdso(7)。

Glibc没有为该系统调用提供包装器;如果您想调用它,请使用syscall(2)。

语法

#include <syscall.h>
#include <linux/unwind.h>

long getunwind(void *buf, size_t buf_size);

注意:此系统调用没有glibc包装器。请参阅注释。

版本

从Linux 2.4开始,此系统调用可用。

名称

getunwind-将展开数据复制到调用者的缓冲区

GETUNWIND - Linux手册页

Linux程序员手册 第2部分
更新日期: 2017-09-15

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

另外参见

getauxval(3)

返回值

成功时,getunwind()返回展开数据的大小。发生错误时,将返回-1并将errno设置为指示错误。

错误说明

如果无法将展开信息存储在buf指定的空间中,则getunwind()失败并显示错误EFAULT。

说明

注意:此功能已过时。

特定于IA-64的getunwind()系统调用将内核的调用帧展开数据复制到buf指向的缓冲区中,并返回展开数据的大小。此数据描述了登机页面(映射到用户空间的内核代码)。

缓冲区buf的大小在buf_size中指定。仅当buf_size大于或等于展开数据的大小并且buf不为NULL时,才复制数据。否则,将不会复制任何数据,并且调用将成功,并返回存储展开数据所需的大小。

展开数据的第一部分包含一个展开表。其余部分包含关联的展开信息(不按特定顺序)。展开表包含以下形式的条目:

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)

起始值为零的条目指示表的结束。有关格式的更多信息,请参见IA-64软件约定和运行时体系结构手册。

遵循规范

该系统调用特定于Linux,仅在IA-64体系结构上可用。

日期:2019-08-20 17:58:52 来源:oir作者:oir