The Gaudi Framework  master (37c0b60a)
pfmlib.h File Reference
#include <inttypes.h>
#include <stdio.h>
#include <perfmon/pfmlib_comp.h>
#include <perfmon/pfmlib_os.h>
Include dependency graph for pfmlib.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pfmlib_regmask_t
 
struct  pfmlib_event_t
 
struct  pfmlib_reg_t
 
struct  pfmlib_input_param_t
 
struct  pfmlib_output_param_t
 
struct  pfmlib_options_t
 

Macros

#define PFMLIB_VERSION   ( 3 << 16 | 9 )
 
#define PFMLIB_MAJ_VERSION(v)   ( ( v ) >> 16 )
 
#define PFMLIB_MIN_VERSION(v)   ( (v)&0xffff )
 
#define PFMLIB_MAX_PMCS   512 /* maximum number of PMCS supported by the library */
 
#define PFMLIB_MAX_PMDS   512 /* maximum number of PMDS supported by the library */
 
#define PFM_PLM0   0x1 /* priv level 0 */
 
#define PFM_PLM1   0x2 /* priv level 1 */
 
#define PFM_PLM2   0x4 /* priv level 2 */
 
#define PFM_PLM3   0x8 /* priv level 3 */
 
#define PFMLIB_REG_MAX   PFMLIB_MAX_PMDS
 
#define __PFMLIB_REG_BV_BITS   ( sizeof( pfmlib_regmask_bits_t ) << 3 )
 
#define PFMLIB_BVSIZE(x)   ( ( ( x ) + (__PFMLIB_REG_BV_BITS)-1 ) / __PFMLIB_REG_BV_BITS )
 
#define PFMLIB_REG_BV   PFMLIB_BVSIZE( PFMLIB_REG_MAX )
 
#define PFMLIB_MAX_MASKS_PER_EVENT   48 /* maximum number of unit masks per event */
 
#define PFMLIB_PFP_SYSTEMWIDE   0x1 /* indicate monitors will be used in a system-wide session */
 
#define PFMLIB_NO_PMU   -1 /* PMU unused (forced) */
 
#define PFMLIB_UNKNOWN_PMU   0 /* type not yet known (dynamic) */
 
#define PFMLIB_GEN_IA64_PMU   1 /* Intel IA-64 architected PMU */
 
#define PFMLIB_ITANIUM_PMU   2 /* Intel Itanium */
 
#define PFMLIB_ITANIUM2_PMU   3 /* Intel Itanium 2 */
 
#define PFMLIB_MONTECITO_PMU   4 /* Intel Dual-Core Itanium 2 9000 */
 
#define PFMLIB_AMD64_PMU   16 /* AMD AMD64 (K7, K8, Fam 10h) */
 
#define PFMLIB_GEN_IA32_PMU   63 /* Intel architectural PMU for X86 */
 
#define PFMLIB_I386_P6_PMU   32 /* Intel PIII (P6 core) */
 
#define PFMLIB_PENTIUM4_PMU   33 /* Intel Pentium4/Xeon/EM64T */
 
#define PFMLIB_COREDUO_PMU   34 /* Intel Core Duo/Core Solo */
 
#define PFMLIB_I386_PM_PMU   35 /* Intel Pentium M */
 
#define PFMLIB_CORE_PMU   36 /* obsolete, use PFMLIB_INTEL_CORE_PMU */
 
#define PFMLIB_INTEL_CORE_PMU   36 /* Intel Core */
 
#define PFMLIB_INTEL_PPRO_PMU   37 /* Intel Pentium Pro */
 
#define PFMLIB_INTEL_PII_PMU   38 /* Intel Pentium II */
 
#define PFMLIB_INTEL_ATOM_PMU   39 /* Intel Atom */
 
#define PFMLIB_INTEL_NHM_PMU   40 /* Intel Nehalem */
 
#define PFMLIB_INTEL_WSM_PMU   41 /* Intel Westmere */
 
#define PFMLIB_MIPS_20KC_PMU   64 /* MIPS 20KC */
 
#define PFMLIB_MIPS_24K_PMU   65 /* MIPS 24K */
 
#define PFMLIB_MIPS_25KF_PMU   66 /* MIPS 25KF */
 
#define PFMLIB_MIPS_34K_PMU   67 /* MIPS 34K */
 
#define PFMLIB_MIPS_5KC_PMU   68 /* MIPS 5KC */
 
#define PFMLIB_MIPS_74K_PMU   69 /* MIPS 74K */
 
#define PFMLIB_MIPS_R10000_PMU   70 /* MIPS R10000 */
 
#define PFMLIB_MIPS_R12000_PMU   71 /* MIPS R12000 */
 
#define PFMLIB_MIPS_RM7000_PMU   72 /* MIPS RM7000 */
 
#define PFMLIB_MIPS_RM9000_PMU   73 /* MIPS RM9000 */
 
#define PFMLIB_MIPS_SB1_PMU   74 /* MIPS SB1/SB1A */
 
#define PFMLIB_MIPS_VR5432_PMU   75 /* MIPS VR5432 */
 
#define PFMLIB_MIPS_VR5500_PMU   76 /* MIPS VR5500 */
 
#define PFMLIB_MIPS_ICE9A_PMU   77 /* SiCortex ICE9A */
 
#define PFMLIB_MIPS_ICE9B_PMU   78 /* SiCortex ICE9B */
 
#define PFMLIB_POWERPC_PMU   90 /* POWERPC */
 
#define PFMLIB_CRAYX2_PMU   96 /* Cray X2 */
 
#define PFMLIB_CELL_PMU   100 /* CELL */
 
#define PFMLIB_PPC970_PMU   110 /* IBM PowerPC 970(FX,GX) */
 
#define PFMLIB_PPC970MP_PMU   111 /* IBM PowerPC 970MP */
 
#define PFMLIB_POWER3_PMU   112 /* IBM POWER3 */
 
#define PFMLIB_POWER4_PMU   113 /* IBM POWER4 */
 
#define PFMLIB_POWER5_PMU   114 /* IBM POWER5 */
 
#define PFMLIB_POWER5p_PMU   115 /* IBM POWER5+ */
 
#define PFMLIB_POWER6_PMU   116 /* IBM POWER6 */
 
#define PFMLIB_POWER7_PMU   117 /* IBM POWER7 */
 
#define PFMLIB_SPARC_ULTRA12_PMU   130 /* UltraSPARC I, II, IIi, and IIe */
 
#define PFMLIB_SPARC_ULTRA3_PMU   131 /* UltraSPARC III */
 
#define PFMLIB_SPARC_ULTRA3I_PMU   132 /* UltraSPARC IIIi and IIIi+ */
 
#define PFMLIB_SPARC_ULTRA3PLUS_PMU   133 /* UltraSPARC III+ and IV */
 
#define PFMLIB_SPARC_ULTRA4PLUS_PMU   134 /* UltraSPARC IV+ */
 
#define PFMLIB_SPARC_NIAGARA1_PMU   135 /* Niagara-1 */
 
#define PFMLIB_SPARC_NIAGARA2_PMU   136 /* Niagara-2 */
 
#define PFMLIB_SUCCESS   0 /* success */
 
#define PFMLIB_ERR_NOTSUPP   -1 /* function not supported */
 
#define PFMLIB_ERR_INVAL   -2 /* invalid parameters */
 
#define PFMLIB_ERR_NOINIT   -3 /* library was not initialized */
 
#define PFMLIB_ERR_NOTFOUND   -4 /* event not found */
 
#define PFMLIB_ERR_NOASSIGN   -5 /* cannot assign events to counters */
 
#define PFMLIB_ERR_FULL   -6 /* buffer is full or too small */
 
#define PFMLIB_ERR_EVTMANY   -7 /* event used more than once */
 
#define PFMLIB_ERR_MAGIC   -8 /* invalid library magic number */
 
#define PFMLIB_ERR_FEATCOMB   -9 /* invalid combination of features */
 
#define PFMLIB_ERR_EVTSET   -10 /* incompatible event sets */
 
#define PFMLIB_ERR_EVTINCOMP   -11 /* incompatible event combination */
 
#define PFMLIB_ERR_TOOMANY   -12 /* too many events or unit masks */
 
#define PFMLIB_ERR_IRRTOOBIG   -13 /* code range too big */
 
#define PFMLIB_ERR_IRREMPTY   -14 /* empty code range */
 
#define PFMLIB_ERR_IRRINVAL   -15 /* invalid code range */
 
#define PFMLIB_ERR_IRRTOOMANY   -16 /* too many code ranges */
 
#define PFMLIB_ERR_DRRINVAL   -17 /* invalid data range */
 
#define PFMLIB_ERR_DRRTOOMANY   -18 /* too many data ranges */
 
#define PFMLIB_ERR_BADHOST   -19 /* not supported by host CPU */
 
#define PFMLIB_ERR_IRRALIGN   -20 /* bad alignment for code range */
 
#define PFMLIB_ERR_IRRFLAGS   -21 /* code range missing flags */
 
#define PFMLIB_ERR_UMASK   -22 /* invalid or missing unit mask */
 
#define PFMLIB_ERR_NOMEM   -23 /* out of memory */
 
#define __PFMLIB_REGMASK_EL(g)   ( ( g ) / __PFMLIB_REG_BV_BITS )
 
#define __PFMLIB_REGMASK_MASK(g)   ( ( (pfmlib_regmask_bits_t)1 ) << ( ( g ) % __PFMLIB_REG_BV_BITS ) )
 

Typedefs

typedef unsigned long pfmlib_regmask_bits_t
 
typedef int pfm_err_t
 

Functions

pfm_err_t pfm_set_options (pfmlib_options_t *opt)
 
pfm_err_t pfm_initialize (void)
 
pfm_err_t pfm_list_supported_pmus (int(*pf)(const char *fmt,...))
 
pfm_err_t pfm_get_pmu_name (char *name, int maxlen)
 
pfm_err_t pfm_get_pmu_type (int *type)
 
pfm_err_t pfm_get_pmu_name_bytype (int type, char *name, size_t maxlen)
 
pfm_err_t pfm_is_pmu_supported (int type)
 
pfm_err_t pfm_force_pmu (int type)
 
pfm_err_t pfm_find_event (const char *str, unsigned int *idx)
 
pfm_err_t pfm_find_event_byname (const char *name, unsigned int *idx)
 
pfm_err_t pfm_find_event_bycode (int code, unsigned int *idx)
 
pfm_err_t pfm_find_event_bycode_next (int code, unsigned int start, unsigned int *next)
 
pfm_err_t pfm_find_event_mask (unsigned int event_idx, const char *str, unsigned int *mask_idx)
 
pfm_err_t pfm_find_full_event (const char *str, pfmlib_event_t *e)
 
pfm_err_t pfm_get_max_event_name_len (size_t *len)
 
pfm_err_t pfm_get_num_events (unsigned int *count)
 
pfm_err_t pfm_get_num_event_masks (unsigned int event_idx, unsigned int *count)
 
pfm_err_t pfm_get_event_name (unsigned int idx, char *name, size_t maxlen)
 
pfm_err_t pfm_get_full_event_name (pfmlib_event_t *e, char *name, size_t maxlen)
 
pfm_err_t pfm_get_event_code (unsigned int idx, int *code)
 
pfm_err_t pfm_get_event_mask_code (unsigned int idx, unsigned int mask_idx, unsigned int *code)
 
pfm_err_t pfm_get_event_counters (unsigned int idx, pfmlib_regmask_t *counters)
 
pfm_err_t pfm_get_event_description (unsigned int idx, char **str)
 
pfm_err_t pfm_get_event_code_counter (unsigned int idx, unsigned int cnt, int *code)
 
pfm_err_t pfm_get_event_mask_name (unsigned int event_idx, unsigned int mask_idx, char *name, size_t maxlen)
 
pfm_err_t pfm_get_event_mask_description (unsigned int event_idx, unsigned int mask_idx, char **desc)
 
pfm_err_t pfm_dispatch_events (pfmlib_input_param_t *p, void *model_in, pfmlib_output_param_t *q, void *model_out)
 
pfm_err_t pfm_get_impl_pmcs (pfmlib_regmask_t *impl_pmcs)
 
pfm_err_t pfm_get_impl_pmds (pfmlib_regmask_t *impl_pmds)
 
pfm_err_t pfm_get_impl_counters (pfmlib_regmask_t *impl_counters)
 
pfm_err_t pfm_get_num_pmds (unsigned int *num)
 
pfm_err_t pfm_get_num_pmcs (unsigned int *num)
 
pfm_err_t pfm_get_num_counters (unsigned int *num)
 
pfm_err_t pfm_get_hw_counter_width (unsigned int *width)
 
pfm_err_t pfm_get_version (unsigned int *version)
 
char * pfm_strerror (int code)
 
pfm_err_t pfm_get_cycle_event (pfmlib_event_t *e)
 
pfm_err_t pfm_get_inst_retired_event (pfmlib_event_t *e)
 

Macro Definition Documentation

◆ __PFMLIB_REG_BV_BITS

#define __PFMLIB_REG_BV_BITS   ( sizeof( pfmlib_regmask_bits_t ) << 3 )

Definition at line 71 of file pfmlib.h.

◆ __PFMLIB_REGMASK_EL

#define __PFMLIB_REGMASK_EL (   g)    ( ( g ) / __PFMLIB_REG_BV_BITS )

Definition at line 294 of file pfmlib.h.

◆ __PFMLIB_REGMASK_MASK

#define __PFMLIB_REGMASK_MASK (   g)    ( ( (pfmlib_regmask_bits_t)1 ) << ( ( g ) % __PFMLIB_REG_BV_BITS ) )

Definition at line 295 of file pfmlib.h.

◆ PFM_PLM0

#define PFM_PLM0   0x1 /* priv level 0 */

Definition at line 51 of file pfmlib.h.

◆ PFM_PLM1

#define PFM_PLM1   0x2 /* priv level 1 */

Definition at line 52 of file pfmlib.h.

◆ PFM_PLM2

#define PFM_PLM2   0x4 /* priv level 2 */

Definition at line 53 of file pfmlib.h.

◆ PFM_PLM3

#define PFM_PLM3   0x8 /* priv level 3 */

Definition at line 54 of file pfmlib.h.

◆ PFMLIB_AMD64_PMU

#define PFMLIB_AMD64_PMU   16 /* AMD AMD64 (K7, K8, Fam 10h) */

Definition at line 212 of file pfmlib.h.

◆ PFMLIB_BVSIZE

#define PFMLIB_BVSIZE (   x)    ( ( ( x ) + (__PFMLIB_REG_BV_BITS)-1 ) / __PFMLIB_REG_BV_BITS )

Definition at line 72 of file pfmlib.h.

◆ PFMLIB_CELL_PMU

#define PFMLIB_CELL_PMU   100 /* CELL */

Definition at line 246 of file pfmlib.h.

◆ PFMLIB_CORE_PMU

#define PFMLIB_CORE_PMU   36 /* obsolete, use PFMLIB_INTEL_CORE_PMU */

Definition at line 218 of file pfmlib.h.

◆ PFMLIB_COREDUO_PMU

#define PFMLIB_COREDUO_PMU   34 /* Intel Core Duo/Core Solo */

Definition at line 216 of file pfmlib.h.

◆ PFMLIB_CRAYX2_PMU

#define PFMLIB_CRAYX2_PMU   96 /* Cray X2 */

Definition at line 244 of file pfmlib.h.

◆ PFMLIB_ERR_BADHOST

#define PFMLIB_ERR_BADHOST   -19 /* not supported by host CPU */

Definition at line 288 of file pfmlib.h.

◆ PFMLIB_ERR_DRRINVAL

#define PFMLIB_ERR_DRRINVAL   -17 /* invalid data range */

Definition at line 286 of file pfmlib.h.

◆ PFMLIB_ERR_DRRTOOMANY

#define PFMLIB_ERR_DRRTOOMANY   -18 /* too many data ranges */

Definition at line 287 of file pfmlib.h.

◆ PFMLIB_ERR_EVTINCOMP

#define PFMLIB_ERR_EVTINCOMP   -11 /* incompatible event combination */

Definition at line 279 of file pfmlib.h.

◆ PFMLIB_ERR_EVTMANY

#define PFMLIB_ERR_EVTMANY   -7 /* event used more than once */

Definition at line 275 of file pfmlib.h.

◆ PFMLIB_ERR_EVTSET

#define PFMLIB_ERR_EVTSET   -10 /* incompatible event sets */

Definition at line 278 of file pfmlib.h.

◆ PFMLIB_ERR_FEATCOMB

#define PFMLIB_ERR_FEATCOMB   -9 /* invalid combination of features */

Definition at line 277 of file pfmlib.h.

◆ PFMLIB_ERR_FULL

#define PFMLIB_ERR_FULL   -6 /* buffer is full or too small */

Definition at line 274 of file pfmlib.h.

◆ PFMLIB_ERR_INVAL

#define PFMLIB_ERR_INVAL   -2 /* invalid parameters */

Definition at line 270 of file pfmlib.h.

◆ PFMLIB_ERR_IRRALIGN

#define PFMLIB_ERR_IRRALIGN   -20 /* bad alignment for code range */

Definition at line 289 of file pfmlib.h.

◆ PFMLIB_ERR_IRREMPTY

#define PFMLIB_ERR_IRREMPTY   -14 /* empty code range */

Definition at line 283 of file pfmlib.h.

◆ PFMLIB_ERR_IRRFLAGS

#define PFMLIB_ERR_IRRFLAGS   -21 /* code range missing flags */

Definition at line 290 of file pfmlib.h.

◆ PFMLIB_ERR_IRRINVAL

#define PFMLIB_ERR_IRRINVAL   -15 /* invalid code range */

Definition at line 284 of file pfmlib.h.

◆ PFMLIB_ERR_IRRTOOBIG

#define PFMLIB_ERR_IRRTOOBIG   -13 /* code range too big */

Definition at line 282 of file pfmlib.h.

◆ PFMLIB_ERR_IRRTOOMANY

#define PFMLIB_ERR_IRRTOOMANY   -16 /* too many code ranges */

Definition at line 285 of file pfmlib.h.

◆ PFMLIB_ERR_MAGIC

#define PFMLIB_ERR_MAGIC   -8 /* invalid library magic number */

Definition at line 276 of file pfmlib.h.

◆ PFMLIB_ERR_NOASSIGN

#define PFMLIB_ERR_NOASSIGN   -5 /* cannot assign events to counters */

Definition at line 273 of file pfmlib.h.

◆ PFMLIB_ERR_NOINIT

#define PFMLIB_ERR_NOINIT   -3 /* library was not initialized */

Definition at line 271 of file pfmlib.h.

◆ PFMLIB_ERR_NOMEM

#define PFMLIB_ERR_NOMEM   -23 /* out of memory */

Definition at line 292 of file pfmlib.h.

◆ PFMLIB_ERR_NOTFOUND

#define PFMLIB_ERR_NOTFOUND   -4 /* event not found */

Definition at line 272 of file pfmlib.h.

◆ PFMLIB_ERR_NOTSUPP

#define PFMLIB_ERR_NOTSUPP   -1 /* function not supported */

Definition at line 269 of file pfmlib.h.

◆ PFMLIB_ERR_TOOMANY

#define PFMLIB_ERR_TOOMANY   -12 /* too many events or unit masks */

Definition at line 280 of file pfmlib.h.

◆ PFMLIB_ERR_UMASK

#define PFMLIB_ERR_UMASK   -22 /* invalid or missing unit mask */

Definition at line 291 of file pfmlib.h.

◆ PFMLIB_GEN_IA32_PMU

#define PFMLIB_GEN_IA32_PMU   63 /* Intel architectural PMU for X86 */

Definition at line 213 of file pfmlib.h.

◆ PFMLIB_GEN_IA64_PMU

#define PFMLIB_GEN_IA64_PMU   1 /* Intel IA-64 architected PMU */

Definition at line 208 of file pfmlib.h.

◆ PFMLIB_I386_P6_PMU

#define PFMLIB_I386_P6_PMU   32 /* Intel PIII (P6 core) */

Definition at line 214 of file pfmlib.h.

◆ PFMLIB_I386_PM_PMU

#define PFMLIB_I386_PM_PMU   35 /* Intel Pentium M */

Definition at line 217 of file pfmlib.h.

◆ PFMLIB_INTEL_ATOM_PMU

#define PFMLIB_INTEL_ATOM_PMU   39 /* Intel Atom */

Definition at line 222 of file pfmlib.h.

◆ PFMLIB_INTEL_CORE_PMU

#define PFMLIB_INTEL_CORE_PMU   36 /* Intel Core */

Definition at line 219 of file pfmlib.h.

◆ PFMLIB_INTEL_NHM_PMU

#define PFMLIB_INTEL_NHM_PMU   40 /* Intel Nehalem */

Definition at line 223 of file pfmlib.h.

◆ PFMLIB_INTEL_PII_PMU

#define PFMLIB_INTEL_PII_PMU   38 /* Intel Pentium II */

Definition at line 221 of file pfmlib.h.

◆ PFMLIB_INTEL_PPRO_PMU

#define PFMLIB_INTEL_PPRO_PMU   37 /* Intel Pentium Pro */

Definition at line 220 of file pfmlib.h.

◆ PFMLIB_INTEL_WSM_PMU

#define PFMLIB_INTEL_WSM_PMU   41 /* Intel Westmere */

Definition at line 224 of file pfmlib.h.

◆ PFMLIB_ITANIUM2_PMU

#define PFMLIB_ITANIUM2_PMU   3 /* Intel Itanium 2 */

Definition at line 210 of file pfmlib.h.

◆ PFMLIB_ITANIUM_PMU

#define PFMLIB_ITANIUM_PMU   2 /* Intel Itanium */

Definition at line 209 of file pfmlib.h.

◆ PFMLIB_MAJ_VERSION

#define PFMLIB_MAJ_VERSION (   v)    ( ( v ) >> 16 )

Definition at line 36 of file pfmlib.h.

◆ PFMLIB_MAX_MASKS_PER_EVENT

#define PFMLIB_MAX_MASKS_PER_EVENT   48 /* maximum number of unit masks per event */

Definition at line 80 of file pfmlib.h.

◆ PFMLIB_MAX_PMCS

#define PFMLIB_MAX_PMCS   512 /* maximum number of PMCS supported by the library */

Definition at line 42 of file pfmlib.h.

◆ PFMLIB_MAX_PMDS

#define PFMLIB_MAX_PMDS   512 /* maximum number of PMDS supported by the library */

Definition at line 43 of file pfmlib.h.

◆ PFMLIB_MIN_VERSION

#define PFMLIB_MIN_VERSION (   v)    ( (v)&0xffff )

Definition at line 37 of file pfmlib.h.

◆ PFMLIB_MIPS_20KC_PMU

#define PFMLIB_MIPS_20KC_PMU   64 /* MIPS 20KC */

Definition at line 226 of file pfmlib.h.

◆ PFMLIB_MIPS_24K_PMU

#define PFMLIB_MIPS_24K_PMU   65 /* MIPS 24K */

Definition at line 227 of file pfmlib.h.

◆ PFMLIB_MIPS_25KF_PMU

#define PFMLIB_MIPS_25KF_PMU   66 /* MIPS 25KF */

Definition at line 228 of file pfmlib.h.

◆ PFMLIB_MIPS_34K_PMU

#define PFMLIB_MIPS_34K_PMU   67 /* MIPS 34K */

Definition at line 229 of file pfmlib.h.

◆ PFMLIB_MIPS_5KC_PMU

#define PFMLIB_MIPS_5KC_PMU   68 /* MIPS 5KC */

Definition at line 230 of file pfmlib.h.

◆ PFMLIB_MIPS_74K_PMU

#define PFMLIB_MIPS_74K_PMU   69 /* MIPS 74K */

Definition at line 231 of file pfmlib.h.

◆ PFMLIB_MIPS_ICE9A_PMU

#define PFMLIB_MIPS_ICE9A_PMU   77 /* SiCortex ICE9A */

Definition at line 239 of file pfmlib.h.

◆ PFMLIB_MIPS_ICE9B_PMU

#define PFMLIB_MIPS_ICE9B_PMU   78 /* SiCortex ICE9B */

Definition at line 240 of file pfmlib.h.

◆ PFMLIB_MIPS_R10000_PMU

#define PFMLIB_MIPS_R10000_PMU   70 /* MIPS R10000 */

Definition at line 232 of file pfmlib.h.

◆ PFMLIB_MIPS_R12000_PMU

#define PFMLIB_MIPS_R12000_PMU   71 /* MIPS R12000 */

Definition at line 233 of file pfmlib.h.

◆ PFMLIB_MIPS_RM7000_PMU

#define PFMLIB_MIPS_RM7000_PMU   72 /* MIPS RM7000 */

Definition at line 234 of file pfmlib.h.

◆ PFMLIB_MIPS_RM9000_PMU

#define PFMLIB_MIPS_RM9000_PMU   73 /* MIPS RM9000 */

Definition at line 235 of file pfmlib.h.

◆ PFMLIB_MIPS_SB1_PMU

#define PFMLIB_MIPS_SB1_PMU   74 /* MIPS SB1/SB1A */

Definition at line 236 of file pfmlib.h.

◆ PFMLIB_MIPS_VR5432_PMU

#define PFMLIB_MIPS_VR5432_PMU   75 /* MIPS VR5432 */

Definition at line 237 of file pfmlib.h.

◆ PFMLIB_MIPS_VR5500_PMU

#define PFMLIB_MIPS_VR5500_PMU   76 /* MIPS VR5500 */

Definition at line 238 of file pfmlib.h.

◆ PFMLIB_MONTECITO_PMU

#define PFMLIB_MONTECITO_PMU   4 /* Intel Dual-Core Itanium 2 9000 */

Definition at line 211 of file pfmlib.h.

◆ PFMLIB_NO_PMU

#define PFMLIB_NO_PMU   -1 /* PMU unused (forced) */

Definition at line 206 of file pfmlib.h.

◆ PFMLIB_PENTIUM4_PMU

#define PFMLIB_PENTIUM4_PMU   33 /* Intel Pentium4/Xeon/EM64T */

Definition at line 215 of file pfmlib.h.

◆ PFMLIB_PFP_SYSTEMWIDE

#define PFMLIB_PFP_SYSTEMWIDE   0x1 /* indicate monitors will be used in a system-wide session */

Definition at line 121 of file pfmlib.h.

◆ PFMLIB_POWER3_PMU

#define PFMLIB_POWER3_PMU   112 /* IBM POWER3 */

Definition at line 250 of file pfmlib.h.

◆ PFMLIB_POWER4_PMU

#define PFMLIB_POWER4_PMU   113 /* IBM POWER4 */

Definition at line 251 of file pfmlib.h.

◆ PFMLIB_POWER5_PMU

#define PFMLIB_POWER5_PMU   114 /* IBM POWER5 */

Definition at line 252 of file pfmlib.h.

◆ PFMLIB_POWER5p_PMU

#define PFMLIB_POWER5p_PMU   115 /* IBM POWER5+ */

Definition at line 253 of file pfmlib.h.

◆ PFMLIB_POWER6_PMU

#define PFMLIB_POWER6_PMU   116 /* IBM POWER6 */

Definition at line 254 of file pfmlib.h.

◆ PFMLIB_POWER7_PMU

#define PFMLIB_POWER7_PMU   117 /* IBM POWER7 */

Definition at line 255 of file pfmlib.h.

◆ PFMLIB_POWERPC_PMU

#define PFMLIB_POWERPC_PMU   90 /* POWERPC */

Definition at line 242 of file pfmlib.h.

◆ PFMLIB_PPC970_PMU

#define PFMLIB_PPC970_PMU   110 /* IBM PowerPC 970(FX,GX) */

Definition at line 248 of file pfmlib.h.

◆ PFMLIB_PPC970MP_PMU

#define PFMLIB_PPC970MP_PMU   111 /* IBM PowerPC 970MP */

Definition at line 249 of file pfmlib.h.

◆ PFMLIB_REG_BV

#define PFMLIB_REG_BV   PFMLIB_BVSIZE( PFMLIB_REG_MAX )

Definition at line 73 of file pfmlib.h.

◆ PFMLIB_REG_MAX

#define PFMLIB_REG_MAX   PFMLIB_MAX_PMDS

Definition at line 67 of file pfmlib.h.

◆ PFMLIB_SPARC_NIAGARA1_PMU

#define PFMLIB_SPARC_NIAGARA1_PMU   135 /* Niagara-1 */

Definition at line 262 of file pfmlib.h.

◆ PFMLIB_SPARC_NIAGARA2_PMU

#define PFMLIB_SPARC_NIAGARA2_PMU   136 /* Niagara-2 */

Definition at line 263 of file pfmlib.h.

◆ PFMLIB_SPARC_ULTRA12_PMU

#define PFMLIB_SPARC_ULTRA12_PMU   130 /* UltraSPARC I, II, IIi, and IIe */

Definition at line 257 of file pfmlib.h.

◆ PFMLIB_SPARC_ULTRA3_PMU

#define PFMLIB_SPARC_ULTRA3_PMU   131 /* UltraSPARC III */

Definition at line 258 of file pfmlib.h.

◆ PFMLIB_SPARC_ULTRA3I_PMU

#define PFMLIB_SPARC_ULTRA3I_PMU   132 /* UltraSPARC IIIi and IIIi+ */

Definition at line 259 of file pfmlib.h.

◆ PFMLIB_SPARC_ULTRA3PLUS_PMU

#define PFMLIB_SPARC_ULTRA3PLUS_PMU   133 /* UltraSPARC III+ and IV */

Definition at line 260 of file pfmlib.h.

◆ PFMLIB_SPARC_ULTRA4PLUS_PMU

#define PFMLIB_SPARC_ULTRA4PLUS_PMU   134 /* UltraSPARC IV+ */

Definition at line 261 of file pfmlib.h.

◆ PFMLIB_SUCCESS

#define PFMLIB_SUCCESS   0 /* success */

Definition at line 268 of file pfmlib.h.

◆ PFMLIB_UNKNOWN_PMU

#define PFMLIB_UNKNOWN_PMU   0 /* type not yet known (dynamic) */

Definition at line 207 of file pfmlib.h.

◆ PFMLIB_VERSION

#define PFMLIB_VERSION   ( 3 << 16 | 9 )

Definition at line 35 of file pfmlib.h.

Typedef Documentation

◆ pfm_err_t

typedef int pfm_err_t

Definition at line 150 of file pfmlib.h.

◆ pfmlib_regmask_bits_t

typedef unsigned long pfmlib_regmask_bits_t

Definition at line 58 of file pfmlib.h.

Function Documentation

◆ pfm_dispatch_events()

pfm_err_t pfm_dispatch_events ( pfmlib_input_param_t p,
void *  model_in,
pfmlib_output_param_t q,
void *  model_out 
)

◆ pfm_find_event()

pfm_err_t pfm_find_event ( const char *  str,
unsigned int *  idx 
)

◆ pfm_find_event_bycode()

pfm_err_t pfm_find_event_bycode ( int  code,
unsigned int *  idx 
)

◆ pfm_find_event_bycode_next()

pfm_err_t pfm_find_event_bycode_next ( int  code,
unsigned int  start,
unsigned int *  next 
)

◆ pfm_find_event_byname()

pfm_err_t pfm_find_event_byname ( const char *  name,
unsigned int *  idx 
)

◆ pfm_find_event_mask()

pfm_err_t pfm_find_event_mask ( unsigned int  event_idx,
const char *  str,
unsigned int *  mask_idx 
)

◆ pfm_find_full_event()

pfm_err_t pfm_find_full_event ( const char *  str,
pfmlib_event_t e 
)

◆ pfm_force_pmu()

pfm_err_t pfm_force_pmu ( int  type)

◆ pfm_get_cycle_event()

pfm_err_t pfm_get_cycle_event ( pfmlib_event_t e)

◆ pfm_get_event_code()

pfm_err_t pfm_get_event_code ( unsigned int  idx,
int *  code 
)

◆ pfm_get_event_code_counter()

pfm_err_t pfm_get_event_code_counter ( unsigned int  idx,
unsigned int  cnt,
int *  code 
)

◆ pfm_get_event_counters()

pfm_err_t pfm_get_event_counters ( unsigned int  idx,
pfmlib_regmask_t counters 
)

◆ pfm_get_event_description()

pfm_err_t pfm_get_event_description ( unsigned int  idx,
char **  str 
)

◆ pfm_get_event_mask_code()

pfm_err_t pfm_get_event_mask_code ( unsigned int  idx,
unsigned int  mask_idx,
unsigned int *  code 
)

◆ pfm_get_event_mask_description()

pfm_err_t pfm_get_event_mask_description ( unsigned int  event_idx,
unsigned int  mask_idx,
char **  desc 
)

◆ pfm_get_event_mask_name()

pfm_err_t pfm_get_event_mask_name ( unsigned int  event_idx,
unsigned int  mask_idx,
char *  name,
size_t  maxlen 
)

◆ pfm_get_event_name()

pfm_err_t pfm_get_event_name ( unsigned int  idx,
char *  name,
size_t  maxlen 
)

◆ pfm_get_full_event_name()

pfm_err_t pfm_get_full_event_name ( pfmlib_event_t e,
char *  name,
size_t  maxlen 
)

◆ pfm_get_hw_counter_width()

pfm_err_t pfm_get_hw_counter_width ( unsigned int *  width)

◆ pfm_get_impl_counters()

pfm_err_t pfm_get_impl_counters ( pfmlib_regmask_t impl_counters)

◆ pfm_get_impl_pmcs()

pfm_err_t pfm_get_impl_pmcs ( pfmlib_regmask_t impl_pmcs)

◆ pfm_get_impl_pmds()

pfm_err_t pfm_get_impl_pmds ( pfmlib_regmask_t impl_pmds)

◆ pfm_get_inst_retired_event()

pfm_err_t pfm_get_inst_retired_event ( pfmlib_event_t e)

◆ pfm_get_max_event_name_len()

pfm_err_t pfm_get_max_event_name_len ( size_t *  len)

◆ pfm_get_num_counters()

pfm_err_t pfm_get_num_counters ( unsigned int *  num)

◆ pfm_get_num_event_masks()

pfm_err_t pfm_get_num_event_masks ( unsigned int  event_idx,
unsigned int *  count 
)

◆ pfm_get_num_events()

pfm_err_t pfm_get_num_events ( unsigned int *  count)

◆ pfm_get_num_pmcs()

pfm_err_t pfm_get_num_pmcs ( unsigned int *  num)

◆ pfm_get_num_pmds()

pfm_err_t pfm_get_num_pmds ( unsigned int *  num)

◆ pfm_get_pmu_name()

pfm_err_t pfm_get_pmu_name ( char *  name,
int  maxlen 
)

◆ pfm_get_pmu_name_bytype()

pfm_err_t pfm_get_pmu_name_bytype ( int  type,
char *  name,
size_t  maxlen 
)

◆ pfm_get_pmu_type()

pfm_err_t pfm_get_pmu_type ( int *  type)

◆ pfm_get_version()

pfm_err_t pfm_get_version ( unsigned int *  version)

◆ pfm_initialize()

pfm_err_t pfm_initialize ( void  )

◆ pfm_is_pmu_supported()

pfm_err_t pfm_is_pmu_supported ( int  type)

◆ pfm_list_supported_pmus()

pfm_err_t pfm_list_supported_pmus ( int(*)(const char *fmt,...)  pf)

◆ pfm_set_options()

pfm_err_t pfm_set_options ( pfmlib_options_t opt)

◆ pfm_strerror()

char* pfm_strerror ( int  code)