34#define PFMLIB_VERSION (3 << 16 | 10)
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
121#define PFMLIB_PFP_SYSTEMWIDE 0x1
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)
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)
393 dst->
bits[pos] = h1->
bits[pos] & ~h2->bits[pos];
402 if (dst == NULL || h1 == NULL || h2 == NULL)
415 if (dst == NULL || src == NULL)
431 dst->
bits[pos] = ~dst->bits[pos];
static struct timeval start
static double b[MATRIX_SIZE][MATRIX_SIZE]
pfm_err_t pfm_is_pmu_supported(int type)
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_event_counters(unsigned int idx, pfmlib_regmask_t *counters)
pfm_err_t pfm_get_inst_retired_event(pfmlib_event_t *e)
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_hw_counter_width(unsigned int *width)
static int pfm_regmask_copy(pfmlib_regmask_t *dst, pfmlib_regmask_t *src)
char * pfm_strerror(int code)
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_event_code_counter(unsigned int idx, unsigned int cnt, int *code)
pfm_err_t pfm_force_pmu(int type)
pfm_err_t pfm_get_num_events(unsigned int *count)
static int pfm_regmask_set(pfmlib_regmask_t *h, unsigned int b)
pfm_err_t pfm_get_event_mask_description(unsigned int event_idx, unsigned int mask_idx, char **desc)
static int pfm_regmask_not(pfmlib_regmask_t *dst)
#define PFMLIB_MAX_MASKS_PER_EVENT
unsigned long pfmlib_regmask_bits_t
static int pfm_regmask_weight(pfmlib_regmask_t *h, unsigned int *w)
pfm_err_t pfm_get_full_event_name(pfmlib_event_t *e, char *name, size_t maxlen)
pfm_err_t pfm_find_event_bycode(int code, unsigned int *idx)
pfm_err_t pfm_get_event_name(unsigned int idx, char *name, size_t maxlen)
pfm_err_t pfm_get_num_pmds(unsigned int *num)
pfm_err_t pfm_find_event_mask(unsigned int event_idx, const char *str, unsigned int *mask_idx)
pfm_err_t pfm_get_pmu_name_bytype(int type, char *name, size_t maxlen)
static int pfm_regmask_eq(pfmlib_regmask_t *h1, pfmlib_regmask_t *h2)
pfm_err_t pfm_get_event_description(unsigned int idx, char **str)
pfm_err_t pfm_find_event_byname(const char *name, unsigned int *idx)
pfm_err_t pfm_get_impl_pmds(pfmlib_regmask_t *impl_pmds)
static int pfm_regmask_clr(pfmlib_regmask_t *h, unsigned int b)
static int pfm_regmask_andnot(pfmlib_regmask_t *dst, pfmlib_regmask_t *h1, pfmlib_regmask_t *h2)
pfm_err_t pfm_get_cycle_event(pfmlib_event_t *e)
#define __PFMLIB_REGMASK_EL(g)
pfm_err_t pfm_initialize(void)
static int pfm_regmask_and(pfmlib_regmask_t *dst, pfmlib_regmask_t *h1, pfmlib_regmask_t *h2)
pfm_err_t pfm_get_impl_counters(pfmlib_regmask_t *impl_counters)
static int pfm_regmask_isset(pfmlib_regmask_t *h, unsigned int b)
pfm_err_t pfm_get_num_pmcs(unsigned int *num)
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_pmu_type(int *type)
pfm_err_t pfm_find_event_bycode_next(int code, unsigned int start, unsigned int *next)
pfm_err_t pfm_get_event_code(unsigned int idx, int *code)
pfm_err_t pfm_get_num_event_masks(unsigned int event_idx, unsigned int *count)
static int pfm_regmask_or(pfmlib_regmask_t *dst, pfmlib_regmask_t *h1, pfmlib_regmask_t *h2)
pfm_err_t pfm_get_event_mask_code(unsigned int idx, unsigned int mask_idx, unsigned int *code)
pfm_err_t pfm_get_version(unsigned int *version)
pfm_err_t pfm_find_event(const char *str, unsigned int *idx)
#define __PFMLIB_REGMASK_MASK(g)
pfm_err_t pfm_set_options(pfmlib_options_t *opt)
pfm_err_t pfm_get_num_counters(unsigned int *num)
pfm_err_t pfm_get_impl_pmcs(pfmlib_regmask_t *impl_pmcs)
unsigned int pfm_reserved
unsigned int pfp_pmc_count
unsigned int pfp_pmd_count
unsigned int reg_reserved1
unsigned long long reg_value
unsigned long reg_alt_addr
unsigned long long reg_addr
pfmlib_regmask_bits_t bits[PFMLIB_REG_BV]