perfmonctl() - Unix,Linux系統呼叫 - 技術教學
Tutorials Point


  Unix入門
  Unix Shell程式設計
  高階Unix
  Unix有用參考
  Unix有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考資料     討論論壇     關於TP  

perfmonctl() - Unix,Linux系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

perfmonctl - PMU介面

概要

#include <syscall.h> 
#include <perfmon.h> 

long perfmonctl(int fd, int cmd, void *arg, int narg);

描述

perfmonctl 系統呼叫提供了一個 PMU(效能監控單元)介面。PMU 由 PMD(效能監控資料)暫存器和 PMC(效能監控控制)暫存器組成,硬體統計資料在此處收集。

perfmonctl 將對輸入引數 arg 應用函式 cmd。引數數量由輸入變數 narg 定義。fd 指定要對其進行操作的 perfmon 上下文。

已實現的命令 cmd 為:

標籤描述
PFM_CREATE_CONTEXT
 設定上下文
perfmonctl(int fd, PFM_CREATE_CONTEXT , pfarg_context_t *ctxt,1); 

fd 引數被忽略。根據 ctxt 中指定的引數建立一個新上下文,其檔案描述符返回到 ctxt->ctx_fd

除了將其傳遞給 perfmonctl 外,檔案描述符還可以用於使用 read(2) 系統呼叫讀取事件通知(型別 pfm_msg_t)。select(2) 和 poll(2) 都可以用於等待事件通知。

可以使用 close(2) 系統呼叫銷燬上下文。

PFM_WRITE_PMCS
 設定 PMC 暫存器
perfmonctl(int fd, PFM_WRITE_PMCS , pfarg_pmc_t *pmcs,n); 
PFM_WRITE_PMDS
 設定 PMD 暫存器
perfmonctl(int fd, PFM_WRITE_PMDS , pfarg_pmd_t *pmds,n); 
PFM_READ_PMDS
 讀取 PMD 暫存器
perfmonctl(int fd, PFM_READ_PMDS , pfarg_pmd_t *pmds,n); 
PFM_START
 啟動監控
perfmonctl(int fd,PFM_START,arg,1); 
perfmonctl(int fd,PFM_START,NULL,0); 
PFM_STOP
 停止監控
perfmonctl(int fd,PFM_START,NULL,0); 
PFM_LOAD_CONTEXT
 將上下文附加到執行緒
perfmonctl(int fd, PFM_LOAD_CONTEXT ,pfarg_load_t *largs,1); 
PFM_UNLOAD_CONTEXT
 從執行緒分離上下文
perfmonctl(int fd,PFM_UNLOAD_CONTEXT,NULL,0); 
PFM_RESTART
 在收到溢位通知後重新啟動監控
perfmonctl(int fd,PFM_RESTART,NULL,0); 
PFM_CREATE_EVTSETS
 建立或修改事件集
perfmonctl(int fd,PFM_CREATE_EVTSETS,pfarg_setdesc_t*desc,n); 
PFM_DELETE_EVTSETS
 刪除事件集
perfmonctl(int fd,PFM_DELETE_EVTSET,pfarg_setdesc_t*desc,n); 
PFM_GETINFO_EVTSETS
 獲取有關事件集的資訊
perfmonctl(int fd,PFM_GETINFO_EVTSETS,pfarg_setinfo_t*info,n); 

返回值

操作成功時,perfmonctl 返回零。如果出錯,則返回 -1,並在 errno 中設定錯誤程式碼。

可用性

自核心 2.6 起,此係統呼叫僅在 IA-64 架構上實現。

參見



previous next Printer Friendly

廣告


  

廣告



廣告