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

广告


  

广告



广告