The libpfm library provides full support for the Intel Core processor family, including
the Core 2 Duo series. The interface is defined in pfmlib_core.h. It consists
of a set of functions and structures which describe and allow access to the
Intel Core processors specific PMU features.
When Intel Core processor specific features are needed to support a measurement, their descriptions
must be passed as model-specific input arguments to the pfm_dispatch_events call. The Intel Core
processors specific input arguments are described in the pfmlib_core_input_param_t structure and
the output parameters in pfmlib_core_output_param_t. They are defined as follows:
The Intel Core processor provides a few additional per-event features for
counters: thresholding, inversion, edge detection. They can be set using the
pfp_core_counters data structure for each event. The flags
field can be initialized as follows:
PFMLIB_CORE_SEL_INV
Inverse the results of the cnt_mask comparison when set
PFMLIB_CORE_SEL_EDGE
Enables edge detection of events.
The cnt_mask field contains is used to set the event threshold.
The value of the counter is incremented each time the number of occurrences
per cycle of the event is greater or equal to the value of the field. When
zero all occurrences are counted.
Support for Precise-Event Based Sampling (PEBS)
The library can be used to setup the PMC registers when using PEBS. In this case,
the pfp_core_pebs structure must be used and the pebs_used field must
be set to 1. When using PEBS, it is not possible to use more than one event.
Support for Intel Core 2 Duo processors
The Intel Core 2 Duo processors are based on the Intel Core micro-architecture.
They implement the Intel architectural PMU and some extensions such as PEBS.
They support all the architectural events and a lot more Core 2 specific events.
The library auto-detects the processor and provides access to Core 2 events whenever
possible.
ERRORS
Refer to the description of pfm_dispatch_events() for errors.