pmc_read, pmc_rw,
pmc_write — read and write
hardware performance counters
Performance Counters Library (libpmc,
-lpmc)
#include
<pmc.h>
int
pmc_read(pmc_id_t
pmc, pmc_value_t
*value);
int
pmc_rw(pmc_id_t
pmc, pmc_value_t
newvalue, pmc_value_t
*oldvaluep);
int
pmc_write(pmc_id_t
pmc, pmc_value_t
value);
These functions read and write the current value of a PMC.
Function
pmc_read()
will read the current value of the PMC specified by argument
pmc and write it to the location specified by argument
value.
Function
pmc_write()
will set the current value of the PMC specified by argument
pmc to the value specified by argument
value.
Function
pmc_rw()
combines a read and a write into a single atomic operation.
For write operations the PMC should be a quiescent state.
Upon successful completion, the value 0 is returned;
otherwise the value -1 is returned and the global variable
errno is set to indicate the error.
A call to these functions may fail with the following errors:
- [
EBUSY]
- A write operation specified a currently running PMC.
- [
EINVAL]
- Argument pmc specified a PMC not in a readable
state.
- [
EINVAL]
- The PMC specified by argument pmc was not owned by
the current process.