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)
string opt
print 'Summary: %32s [s] d d steps'%(summary.protocol,summary.type,summary.nevt,len(summary.data),)
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)