perfmonctl()函式 Unix/Linux


perfmonctl - 介面PMU

內容簡介

#include <syscall.h> 
#include <perfmon.h> 
long perfmonctl(int fd, int cmd, void *arg, int narg);

描述

perfmonctl system call provides an interface to PMU (performance monitoring unit). PMU consists of PMD (performance monitoring data) registers and PMC (performance monitoring control) registers, where are gathered the hardware statistic.

perfmonctl will apply a function cmd to input arguments arg. The number of arguments is defined by input variable nargfd specifies the perfmon context to operate on.

實現的 cmd 命令是:

標籤 描述
PFM_CREATE_CONTEXT
  set up a context
perfmonctl(int fd, PFM_CREATE_CONTEXT , pfarg_context_t *ctxt,1); 

The fd parameter is ignored. A new context is created as specified in ctxtand its file descriptor is returned in ctxt->ctx_fd.

The file descriptor, apart from passing it to perfmonctl, can be used to read event notifications (type pfm_msg_t) using the read(2) system call. Both select(2) and poll(2) can be used to wait for event notifications.

The context can be destroyed using the close(2) system call.

PFM_WRITE_PMCS
  set PMC registers
perfmonctl(int fd, PFM_WRITE_PMCS , pfarg_pmc_t *pmcs,n); 
PFM_WRITE_PMDS
  set PMD registers
perfmonctl(int fd, PFM_WRITE_PMDS , pfarg_pmd_t *pmds,n); 
PFM_READ_PMDS
  read PMD registers
perfmonctl(int fd, PFM_READ_PMDS , pfarg_pmd_t *pmds,n); 
PFM_START
  start monitoring
perfmonctl(int fd,PFM_START,arg,1); 
perfmonctl(int fd,PFM_START,NULL,0); 
PFM_STOP
  stop monitoring
perfmonctl(int fd,PFM_START,NULL,0); 
PFM_LOAD_CONTEXT
  attach the context to a thread
perfmonctl(int fd, PFM_LOAD_CONTEXT ,pfarg_load_t *largs,1); 
PFM_UNLOAD_CONTEXT
  detach the context from a thread
perfmonctl(int fd,PFM_UNLOAD_CONTEXT,NULL,0); 
PFM_RESTART
  restart monitoring after recieving an overflow notification
perfmonctl(int fd,PFM_RESTART,NULL,0); 
PFM_CREATE_EVTSETS
  create or modify event sets
perfmonctl(int fd,PFM_CREATE_EVTSETS,pfarg_setdesc_t*desc,n); 
PFM_DELETE_EVTSETS
  delete event sets
perfmonctl(int fd,PFM_DELETE_EVTSET,pfarg_setdesc_t*desc,n); 
PFM_GETINFO_EVTSETS
  get information about event sets
perfmonctl(int fd,PFM_GETINFO_EVTSETS,pfarg_setinfo_t*info,n); 

 

返回值

performctl returns zero when the operation is successful. On error -1 is returned and an error code is set in errno.

可用性

This syscall is implemented only on the IA-64 architecture since kernel 2.6.

 

另請參閱