pmc_allocate, pmc_release(3) | allocate and free performance monitoring counters |
pmc_release, pmc_allocate(3) | allocate and free performance monitoring counters |
PMC_ALLOCATE(3) | MidnightBSD Library Functions Manual | PMC_ALLOCATE(3) |
pmc_allocate
,
pmc_release
— allocate and
free performance monitoring counters
Performance Counters Library (libpmc, -lpmc)
#include
<pmc.h>
int
pmc_allocate
(const char
*eventspecifier, enum pmc_mode mode,
uint32_t flags, int cpu,
pmc_id_t *pmcid);
int
pmc_release
(pmc_id_t
pmc);
Function
pmc_allocate
()
allocates a performance monitoring counter that measures the events named by
argument eventspecifier, and writes the allocated
handle to the location pointed to by argument
pmcid.
Argument eventspecifier comprises an PMC event name followed by an optional comma separated list of keywords and qualifiers. The allowed syntax for argument eventspecifier is processor specific and is listed in section EVENT SPECIFIERS in the pmc(3) manual page.
The desired PMC mode is specified by argument mode. Legal values for the mode argument are:
PMC_MODE_SC
PMC_MODE_SS
PMC_MODE_TC
PMC_MODE_TS
Mode specific modifiers may be specified using argument flags. The flags supported at PMC allocation time are:
PMC_F_DESCENDANTS
PMC_F_LOG_PROCCSW
PMC_F_LOG_PROCEXIT
PMC_F_LOG_PROCCSW
and
PMC_F_LOG_PROCEXIT
need a log file to be configured
before they are started.
For system scope PMCs, the argument cpu is a
non-negative value that specifies the CPU number that the PMC is to be
allocated on. Process scope PMC allocations should specify the constant
PMC_CPU_ANY
for this argument.
Function
pmc_release
()
releases the PMC denoted by argument pmcid.
If successful, function pmc_allocate
()
sets the location specified by argument pmcid to the
handle of the allocated PMC and returns 0. In case of an error, the function
returns -1 and sets the global variable errno to
indicate the error.
The pmc_release
() function returns the value 0
if successful; otherwise the value -1 is returned and the global
variable errno is set to indicate the error.
EINVAL
]pmc_allocate
() had an invalid value.EINVAL
]pmc_allocate
() had an invalid CPU number.EINVAL
]EINVAL
]pmc_allocate
() specified an event not supported by
hardware or contained a syntax error.ENXIO
]pmc_allocate
() requested the use of a
hardware resource that was absent or administratively disabled.EOPNOTSUPP
]pmc_allocate
().EPERM
]ESRCH
]pmc_release
() was called without first
having allocated a PMC.EINVAL
]pmc_release
() did not specify a PMC previously
allocated by this process.pmc(3), pmc_attach(3), pmc_configure_logfile(3), pmc_start(3), hwpmc(4)
September 22, 2008 | midnightbsd-3.1 |