getunwind() - Unix、Linux系统调用 - 技术教程
Tutorials Point


  Unix入门
  Unix Shell编程
  高级Unix
  Unix有用参考
  Unix有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于TP  

getunwind() - Unix、Linux系统调用


previous next AddThis Social Bookmark Button

广告

名称

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

概要

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

long getunwind (void *buf, size_t buf_size);

描述

sys_getunwind 函数返回展开表的大小,该表描述了门页(映射到用户空间的内核代码)。

展开数据被复制到缓冲区buf,其大小为buf_size。只有当buf_size大于或等于展开数据的大小且buf不为NULL时,才会复制数据。系统调用在这两种情况下都返回展开数据的大小。

展开数据的第一部分包含展开表。其余部分包含以随机顺序排列的相关展开信息。展开表包含一个类似于以下内容的表:

        u64 start;      (64-bit address of start of function)
        u64 end;        (64-bit address of start of function)
        u64 info;       (BUF-relative offset to unwind info)

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

返回值

sys_getunwind 函数返回展开表的大小。

错误

如果无法将展开信息存储在buf参数指定的空间中,则sys_getunwind 函数将失败并返回EFAULT

可用性

此系统调用仅在IA-64架构上可用。

应用程序用法

此系统调用已被弃用。强烈建议通过门DSO获取内核的展开信息。此DSO的ELF头地址通过AT_SYSINFO_EHDR传递到用户级别。

应用程序程序无法将此系统调用用作函数;可以使用syscall(2)函数调用它。

参见



previous next Printer Friendly

广告


  

广告



广告
© . All rights reserved.