Unix入门
Unix Shell编程
高级Unix
Unix有用参考
Unix有用资源
精选阅读
版权所有 © 2014 tutorialspoint
|
perfmonctl() - Unix,Linux系统调用
广告
名称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 架构上实现。
参见
广告
|
|
|