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.