34 #define PFMLIB_VERSION (3 << 16 | 9) 35 #define PFMLIB_MAJ_VERSION(v) ((v)>>16) 36 #define PFMLIB_MIN_VERSION(v) ((v) & 0xffff) 41 #define PFMLIB_MAX_PMCS 512 42 #define PFMLIB_MAX_PMDS 512 63 #if PFMLIB_MAX_PMCS > PFMLIB_MAX_PMDS 64 #define PFMLIB_REG_MAX PFMLIB_MAX_PMCS 66 #define PFMLIB_REG_MAX PFMLIB_MAX_PMDS 70 #define __PFMLIB_REG_BV_BITS (sizeof(pfmlib_regmask_bits_t)<<3) 71 #define PFMLIB_BVSIZE(x) (((x)+(__PFMLIB_REG_BV_BITS)-1) / __PFMLIB_REG_BV_BITS) 72 #define PFMLIB_REG_BV PFMLIB_BVSIZE(PFMLIB_REG_MAX) 80 #define PFMLIB_MAX_MASKS_PER_EVENT 48 91 unsigned long reserved[2];
115 unsigned long reserved[6];
121 #define PFMLIB_PFP_SYSTEMWIDE 0x1 131 unsigned long reserved[7];
138 unsigned int pfm_debug:1;
139 unsigned int pfm_verbose:1;
140 unsigned int pfm_reserved:30;
166 extern pfm_err_t
pfm_find_event(
const char *str,
unsigned int *idx);
172 unsigned int *mask_idx);
179 unsigned int *count);
186 unsigned int mask_idx,
194 unsigned int mask_idx,
195 char *
name,
size_t maxlen);
197 unsigned int mask_idx,
221 #define PFMLIB_NO_PMU -1 222 #define PFMLIB_UNKNOWN_PMU 0 223 #define PFMLIB_GEN_IA64_PMU 1 224 #define PFMLIB_ITANIUM_PMU 2 225 #define PFMLIB_ITANIUM2_PMU 3 226 #define PFMLIB_MONTECITO_PMU 4 227 #define PFMLIB_AMD64_PMU 16 228 #define PFMLIB_GEN_IA32_PMU 63 229 #define PFMLIB_I386_P6_PMU 32 230 #define PFMLIB_PENTIUM4_PMU 33 231 #define PFMLIB_COREDUO_PMU 34 232 #define PFMLIB_I386_PM_PMU 35 233 #define PFMLIB_CORE_PMU 36 234 #define PFMLIB_INTEL_CORE_PMU 36 235 #define PFMLIB_INTEL_PPRO_PMU 37 236 #define PFMLIB_INTEL_PII_PMU 38 237 #define PFMLIB_INTEL_ATOM_PMU 39 238 #define PFMLIB_INTEL_NHM_PMU 40 239 #define PFMLIB_INTEL_WSM_PMU 41 241 #define PFMLIB_MIPS_20KC_PMU 64 242 #define PFMLIB_MIPS_24K_PMU 65 243 #define PFMLIB_MIPS_25KF_PMU 66 244 #define PFMLIB_MIPS_34K_PMU 67 245 #define PFMLIB_MIPS_5KC_PMU 68 246 #define PFMLIB_MIPS_74K_PMU 69 247 #define PFMLIB_MIPS_R10000_PMU 70 248 #define PFMLIB_MIPS_R12000_PMU 71 249 #define PFMLIB_MIPS_RM7000_PMU 72 250 #define PFMLIB_MIPS_RM9000_PMU 73 251 #define PFMLIB_MIPS_SB1_PMU 74 252 #define PFMLIB_MIPS_VR5432_PMU 75 253 #define PFMLIB_MIPS_VR5500_PMU 76 254 #define PFMLIB_MIPS_ICE9A_PMU 77 255 #define PFMLIB_MIPS_ICE9B_PMU 78 257 #define PFMLIB_POWERPC_PMU 90 259 #define PFMLIB_CRAYX2_PMU 96 261 #define PFMLIB_CELL_PMU 100 263 #define PFMLIB_PPC970_PMU 110 264 #define PFMLIB_PPC970MP_PMU 111 265 #define PFMLIB_POWER3_PMU 112 266 #define PFMLIB_POWER4_PMU 113 267 #define PFMLIB_POWER5_PMU 114 268 #define PFMLIB_POWER5p_PMU 115 269 #define PFMLIB_POWER6_PMU 116 270 #define PFMLIB_POWER7_PMU 117 272 #define PFMLIB_SPARC_ULTRA12_PMU 130 273 #define PFMLIB_SPARC_ULTRA3_PMU 131 274 #define PFMLIB_SPARC_ULTRA3I_PMU 132 275 #define PFMLIB_SPARC_ULTRA3PLUS_PMU 133 276 #define PFMLIB_SPARC_ULTRA4PLUS_PMU 134 277 #define PFMLIB_SPARC_NIAGARA1_PMU 135 278 #define PFMLIB_SPARC_NIAGARA2_PMU 136 283 #define PFMLIB_SUCCESS 0 284 #define PFMLIB_ERR_NOTSUPP -1 285 #define PFMLIB_ERR_INVAL -2 286 #define PFMLIB_ERR_NOINIT -3 287 #define PFMLIB_ERR_NOTFOUND -4 288 #define PFMLIB_ERR_NOASSIGN -5 289 #define PFMLIB_ERR_FULL -6 290 #define PFMLIB_ERR_EVTMANY -7 291 #define PFMLIB_ERR_MAGIC -8 292 #define PFMLIB_ERR_FEATCOMB -9 293 #define PFMLIB_ERR_EVTSET -10 294 #define PFMLIB_ERR_EVTINCOMP -11 295 #define PFMLIB_ERR_TOOMANY -12 297 #define PFMLIB_ERR_IRRTOOBIG -13 298 #define PFMLIB_ERR_IRREMPTY -14 299 #define PFMLIB_ERR_IRRINVAL -15 300 #define PFMLIB_ERR_IRRTOOMANY -16 301 #define PFMLIB_ERR_DRRINVAL -17 302 #define PFMLIB_ERR_DRRTOOMANY -18 303 #define PFMLIB_ERR_BADHOST -19 304 #define PFMLIB_ERR_IRRALIGN -20 305 #define PFMLIB_ERR_IRRFLAGS -21 306 #define PFMLIB_ERR_UMASK -22 307 #define PFMLIB_ERR_NOMEM -23 309 #define __PFMLIB_REGMASK_EL(g) ((g)/__PFMLIB_REG_BV_BITS) 310 #define __PFMLIB_REGMASK_MASK(g) (((pfmlib_regmask_bits_t)1) << ((g) % __PFMLIB_REG_BV_BITS)) 346 unsigned int weight = 0;
348 if (h == NULL || w == NULL)
352 weight += (
unsigned int)pfmlib_popcnt(h->
bits[pos]);
363 if (h1 == NULL || h2 == NULL)
367 if (h1->
bits[pos] != h2->
bits[pos])
return 0;
376 if (dst == NULL || h1 == NULL || h2 == NULL)
389 if (dst == NULL || h1 == NULL || h2 == NULL)
402 if (dst == NULL || h1 == NULL || h2 == NULL)
415 if (dst == NULL || src == NULL)
pfm_err_t pfm_get_cycle_event(pfmlib_event_t *e)
pfm_err_t pfm_get_pmu_type(int *type)
char * pfm_strerror(int code)
pfm_err_t pfm_get_event_mask_code(unsigned int idx, unsigned int mask_idx, unsigned int *code)
unsigned long reg_alt_addr
pfm_err_t pfm_get_hw_counter_width(unsigned int *width)
pfm_err_t pfm_get_event_mask_description(unsigned int event_idx, unsigned int mask_idx, char **desc)
#define PFMLIB_MAX_MASKS_PER_EVENT
#define __PFMLIB_REGMASK_EL(g)
pfm_err_t pfm_get_num_counters(unsigned int *num)
pfmlib_regmask_bits_t bits[PFMLIB_REG_BV]
pfm_err_t pfm_get_num_event_masks(unsigned int event_idx, unsigned int *count)
pfm_err_t pfm_dispatch_events(pfmlib_input_param_t *p, void *model_in, pfmlib_output_param_t *q, void *model_out)
unsigned long pfmlib_regmask_bits_t
unsigned int pfp_pmc_count
unsigned long long reg_value
pfm_err_t pfm_get_max_event_name_len(size_t *len)
unsigned int pfp_pmd_count
unsigned long long reg_addr
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_num_pmds(unsigned int *num)
pfm_err_t pfm_list_supported_pmus(int(*pf)(const char *fmt,...))
pfm_err_t pfm_find_event_byname(const char *name, unsigned int *idx)
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_name(unsigned int idx, char *name, size_t maxlen)
unsigned int reg_reserved1
pfm_err_t pfm_is_pmu_supported(int type)
pfm_err_t pfm_initialize(void)
pfm_err_t pfm_find_event(const char *str, unsigned int *idx)
pfm_err_t pfm_get_impl_pmcs(pfmlib_regmask_t *impl_pmcs)
#define __PFMLIB_REGMASK_MASK(g)
pfm_err_t pfm_get_event_counters(unsigned int idx, pfmlib_regmask_t *counters)
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_inst_retired_event(pfmlib_event_t *e)
pfm_err_t pfm_find_event_bycode_next(int code, unsigned int start, unsigned int *next)
pfm_err_t pfm_get_num_pmcs(unsigned int *num)
pfm_err_t pfm_get_event_code(unsigned int idx, int *code)
pfm_err_t pfm_get_pmu_name(char *name, int maxlen)
pfm_err_t pfm_get_pmu_name_bytype(int type, 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_version(unsigned int *version)
pfm_err_t pfm_force_pmu(int type)
pfm_err_t pfm_get_impl_counters(pfmlib_regmask_t *impl_counters)
pfm_err_t pfm_get_impl_pmds(pfmlib_regmask_t *impl_pmds)
pfm_err_t pfm_get_num_events(unsigned int *count)
pfm_err_t pfm_set_options(pfmlib_options_t *opt)
pfm_err_t pfm_find_event_bycode(int code, unsigned int *idx)