LIBPFM(3) Linux Programmer's Manual LIBPFM(3)NAME
pfm_get_impl_pmcs, pfm_get_impl_pmds, pfm_get_impl_counters,
pfm_get_num_counters, pfm_get_num_pmcs, pfm_get_num_pmds,
pfm_get_hw_counter_width - return bitmask of implemented PMU registers
or number of PMU registers
SYNOPSIS
#include <perfmon/pfmlib.h>
int pfm_get_impl_pmcs(pfmlib_regmask_t *impl_pmcs);
int pfm_get_impl_pmds(pfmlib_regmask_t *impl_pmds);
int pfm_get_impl_counters(pfmlib_regmask_t *impl_counters);
int pfm_get_num_counters(unsigned int *num);
int pfm_get_num_pmcs(unsigned int *num);
int pfm_get_num_pmds(unsigned int *num);
int pfm_get_num_counters(unsigned int *num);
int pfm_get_hw_counter_width(unsigned int *width);
DESCRIPTION
The pfm_get_impl_*() functions can be used to figure out which PMU reg‐
isters are implemented on the host CPU. All implemented registers may
not necessarily be available to applications. Programs need to query
the operating system kernel monitoring interface to figure out the list
of available registers.
The pfm_get_impl_*() functions all return a bitmask of registers corre‐
sponding to the query. The bitmask pointer passed as argument is reset
to zero by each function. The returned bitmask must be accessed using
the set of functions provided by the library to ensure portability. See
related man pages below.
The pfm_get_num_*() functions return the number of implemented PMC or
PMD registers. Those numbers may be different from the actual number of
registers available to applications.
The pfm_get_impl_pmcs() function returns in impl_pmcs the bitmask of
implemented PMCS.
The pfm_get_impl_pmds() function returns in impl_pmds the bitmask of
implemented PMDS.
The pfm_get_impl_counters() function returns in impl_counters a bitmask
of the PMD registers used as counters. Depending on the PMU mode, not
all PMD registers are necessarily used as counters.
The pfm_get_num_counters() function returns in num the number of PMD
used as counters. A counter is a PMD which is used to accumulate the
number of occurrences of an event.
The pfm_get_num_pmcs() function returns in num the number of imple‐
mented PMCs by the host PMU.
The pfm_get_num_pmds() function returns in num the number of imple‐
mented PMDs by the host PMU.
The pfm_get_hw_counter_width() function returns the width in bits of
the counters in width. PMU implementations can have different number of
bits implemented. For instance, Itanium has 32-bit counters, while Ita‐
nium 2 has 47-bits.
RETURN
The function returns whether or not it was successful. A return value
of PFMLIB_SUCCESS indicates success, otherwise the value is the error
code.
ERRORS
PFMLIB_ERR_NOINIT the library has not been initialized properly.
SEE ALSOpfm_regmask_set(3), pfm_regmask_isset(3)AUTHOR
Stephane Eranian <eranian@hpl.hp.com>
July, 2003 LIBPFM(3)