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

廣告


  

廣告



廣告