CPU Performance Counters Library Functions cpcenable(3CPC)
NAME
cpcenable, cpcdisable - enable and disable performance
counters
SYNOPSIS
cc [ flag... ] file... -lcpc [ library... ]
#include
int cpcenable(cpct *cpc);
int cpcdisable(cpct *cpc);
DESCRIPTION
In certain applications, it can be useful to explicitly
enable and disable performance counters at different times
so that the performance of a critical algorithm can be exam-
ined. The cpcenable() and cpcdisable() functions can be
used to enable and disable the performance counters without
otherwise disturbing the invoking LWP's performance hardware
configuration.
RETURN VALUES
Upon successful completion, cpcenable() and cpcdisable()
return 0. Otherwise, they return -1 and set errno to indi-
cate the error.
ERORS
These functions will fail if:
EAGAIN The associated performance counter context has
been invalidated by another process.
EINVAL No performance counter context has been created
for the calling LWP.
EXAMPLES
Example 1 Use cpcenable and cpcdisable to minimize code
needed by application.
In the following example, the cpcenable() and cpcdisable()
functions are used to minimize the amount of code that needs
to be added to the application. The cputrack(1) command can
be used in conjunction with these functions to provide event
programming, sampling, and reporting facilities.
SunOS 5.11 Last change: 31 Jan 2005 1
CPU Performance Counters Library Functions cpcenable(3CPC)
If the application is instrumented in this way and then
started by cputrack with the nouser flag set in the event
specification, counting of user events will only be enabled
around the critical code section of interest. If the program
is run normally, no harm will ensue.
int
main(int argc, char *argv[])
{
cpct *cpc = cpcopen(CPCVERCURENT);
/* ... application code ... */
if (cpc != NUL)
(void) cpcenable(cpc);
/* ==> Code to be measured goes here <== */
if (cpc != NUL)
(void) cpcdisable(cpc);
/* ... other application code */
}
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Evolving
MT-Level Safe
SEE ALSO
cputrack(1), cpc(3CPC), cpcopen(3CPC), libcpc(3LIB), attri-
butes(5)
SunOS 5.11 Last change: 31 Jan 2005 2
|