Description

The cpc_cciname() function returns a printable description of the processor performance counter
interfaces, for example, the string UltraSPARC III+ & IV. This name should
not be assumed to be the same as the name the manufacturer
might otherwise ascribe to the processor. It simply names the performance counter interfaces
as understood by the system, 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 system. The string
returned might be substantially longer than 80 characters. 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 inclusive-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 precisely 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 capable 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 processor. 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.