cpc_npic(3CPC) CPU Performance Counters Library Functions cpc_npic(3CPC)NAME
cpc_npic, cpc_caps, cpc_cciname, cpc_cpuref, cpc_walk_events_all,
cpc_walk_events_pic, cpc_walk_attrs - determine CPU performance counter
configuration
SYNOPSIS
cc [ flag... ] file... -lcpc [ library... ]
#include <libcpc.h>
const char *cpc_cciname(cpc_t *cpc);
const char *cpc_cpuref(cpc_t *cpc);
uint_t cpc_npic(cpc_t *cpc);
uint_t cpc_caps(cpc_t *cpc);
void cpc_walk_events_all(cpc_t *cpc, void *arg, void (*action)(void
*arg, const char *event));
void cpc_walk_events_pic(cpc_t *cpc, uint_t picno, void *arg, void
(*action)(void *arg, uint_t picno, const char *event));
void cpc_walk_attrs(cpc_t *cpc, void *arg, void (*action)(void *arg,
const char *attr));
DESCRIPTION
The cpc_cciname() function returns a printable description of the pro‐
cessor performance counter interfaces, for example, the string Ultra‐
SPARC III+ & IV. This name should not be assumed to be the same as the
name the manufacturer might otherwise ascribe to the processor. It sim‐
ply names the performance counter interfaces as understood by the sys‐
tem, and thus names the set of performance counter events that can be
described by that interface.
The cpc_cpuref() function returns a string that describes a reference
work that should be consulted to (allow a human to) understand the
semantics of the performance counter events that are known to the sys‐
tem. The string returned might be substantially longer than 80 charac‐
ters. Callers printing to a terminal might want to insert line breaks
as appropriate.
The cpc_npic() function returns the number of performance counters
accessible on the processor.
The cpc_caps() function returns a bitmap containing the bitwise inclu‐
sive-OR of zero or more flags that describe the capabilities of the
processor. If CPC_CAP_OVERFLOW_INTERRUPT is present, the processor can
generate an interrupt when a hardware performance counter overflows. If
CPC_CAP_OVERFLOW_PRECISE is present, the processor can determine pre‐
cisely which counter overflowed, thereby affecting the behavior of the
overflow notification mechanism described in cpc_bind_curlwp(3CPC).
The system maintains a list of performance counter events supported by
the underlying processor. Some processors are able to count all events
on all hardware counters, while other processors restrict certain
events to be counted only on specific hardware counters. The system
also maintains a list of processor-specific attributes that can be used
for advanced configuration of the performance counter hardware. These
functions allow applications to determine what events and attributes
are supported by the underlying processor. The reference work pointed
to by cpc_cpuref() should be consulted to understand the reasons for
and use of the attributes.
The cpc_walk_events_all() function calls the action function on each
element of a global event list. The action function is called with each
event supported by the processor, regardless of which counter is capa‐
ble of counting it. The action function is called only once for each
event, even if that event can be counted on more than one counter.
The cpc_walk_events_pic() function calls the action function with each
event supported by the counter indicated by the picno argument, where
picno ranges from 0 to the value returned by cpc_npic().
The system maintains a list of attributes that can be used to enable
advanced features of the performance counters on the underlying proces‐
sor. The cpc_walk_attrs() function calls the action function for each
supported attribute name. See the reference material as returned by
cpc_cpuref(3CPC) for the semantics use of attributes.
RETURN VALUES
The cpc_cciname() function always returns a printable description of
the processor performance counter interfaces.
The cpc_cpuref() function always returns a string that describes a ref‐
erence work.
The cpc_npic() function always returns the number of performance coun‐
ters accessible on the processor.
The cpc_caps() function always returns a bitmap containing the bitwise
inclusive-OR of zero or more flags that describe the capabilities of
the processor.
If the user-defined function specified by action is not called, the
cpc_walk_events_all(), cpc_walk_events_pic(), and cpc_walk_attrs()
functions set errno to indicate the error.
ERRORS
The cpc_walk_events_all(), cpc_walk_events_pic(), and cpc_walk_attrs()
functions will fail if:
ENOMEM There is not enough memory available.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
┌─────────────────────────────┬─────────────────────────────┐
│ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
├─────────────────────────────┼─────────────────────────────┤
│Interface Stability │Evolving │
├─────────────────────────────┼─────────────────────────────┤
│MT-Level │Safe │
└─────────────────────────────┴─────────────────────────────┘
SEE ALSOcpc_bind_curlwp(3CPC), libcpc(3LIB), attributes(5)SunOS 5.10 30 Jan 2004 cpc_npic(3CPC)