Blame src/libpfm-3.y/docs/man3/pfm_find_event.3

Packit Service a1973e
.TH LIBPFM 3  "August, 2006" "" "Linux Programmer's Manual"
Packit Service a1973e
.SH NAME
Packit Service a1973e
pfm_find_event, pfm_find_full_event, pfm_find_event_bycode,
Packit Service a1973e
pfm_find_event_bycode_next, pfm_find_event_mask \- search for events and unit
Packit Service a1973e
masks
Packit Service a1973e
.SH SYNOPSIS
Packit Service a1973e
.nf
Packit Service a1973e
.B #include <perfmon/pfmlib.h>
Packit Service a1973e
.sp
Packit Service a1973e
.BI "int pfm_find_event(const char *"str ", unsigned int *"desc ");"
Packit Service a1973e
.BI "int pfm_find_full_event(const char *"str ", pfmlib_event_t *"e ");"
Packit Service a1973e
.BI "int pfm_find_event_bycode(int "code ", unsigned int *"desc ");"
Packit Service a1973e
.BI "int pfm_find_event_bycode_next(unsigned int "desc1 ", int "code ", unsigned int *"desc ");"
Packit Service a1973e
.BI "int pfm_find_event_mask(unsigned int "idx ", const char *"str ", unsigned int *"mask_idx ");"
Packit Service a1973e
Packit Service a1973e
.sp
Packit Service a1973e
.SH DESCRIPTION
Packit Service a1973e
The PMU counters can be programmed to count the number of occurrences
Packit Service a1973e
of certain events. The number of events varies from one PMU model
Packit Service a1973e
to the other. Each event has a name and a code which is used to program
Packit Service a1973e
the actual PMU register. Some event may need to be further qualified
Packit Service a1973e
with unit masks.
Packit Service a1973e
.sp
Packit Service a1973e
The library does not directly expose the event code, nor unit mask code,
Packit Service a1973e
to user applications because it is not necessary. Instead applications
Packit Service a1973e
use names to query the library for particular information about events.
Packit Service a1973e
Given an event name, the library returns an opaque descriptor. 
Packit Service a1973e
Each descriptor is unique and has no relationship to the event code.
Packit Service a1973e
.sp
Packit Service a1973e
The set of functions described here can be used to get an event descriptor
Packit Service a1973e
given either the name of the event or its code. Several events may
Packit Service a1973e
share the same code. An event name is a string structured as: event_name[:unit_mask1[:unit_mask2]].
Packit Service a1973e
.sp
Packit Service a1973e
The \fBpfm_find_event()\fR function is a general purpose search routine.
Packit Service a1973e
Given an event name in \fBstr\fR, it returns the descriptor for the
Packit Service a1973e
corresponding event.  If unit masks are provided, they are not taken
Packit Service a1973e
into account. This function is being \fBdeprecated\fR in favor of
Packit Service a1973e
the \fBpfm_find_full_event()\fR function.
Packit Service a1973e
.sp
Packit Service a1973e
The \fBpfm_find_full_event()\fR function is the general purpose search routine.
Packit Service a1973e
Given an event name in \fBstr\fR, it returns in \fBev\fR, the full event descriptor that
Packit Service a1973e
includes the event descriptor in \fBev->event\fR and the unit mask descriptors
Packit Service a1973e
in \fBev->unit_masks\fR. The number of unit masks descriptors returned is
Packit Service a1973e
indicated in \fBev->num_masks\fR. Unit masks are specified as a colon
Packit Service a1973e
separated list of unit mask names, exact values or value combinations.
Packit Service a1973e
For instance, if event A supports unit masks M1 (0x1) and M2 (0x40), and
Packit Service a1973e
both unit masks are to be measured, then the following values for
Packit Service a1973e
\fBstr\fR are valid: "A:M1:M2", "A:M1:0x40", "A:M2:0x1", "A:0x1:0x40", "A:0x41".
Packit Service a1973e
.sp 
Packit Service a1973e
The \fBpfm_find_event_bycode()\fR function searches for an event given
Packit Service a1973e
its \fBcode\fR represented as an integer. It returns in \fBdesc\fR,
Packit Service a1973e
the event code. Unit masks are ignored.
Packit Service a1973e
Packit Service a1973e
.sp
Packit Service a1973e
Because there can be several events with the same code, the library
Packit Service a1973e
provides the \fBpfm_find_event_bycode_next()\fR function to search for other
Packit Service a1973e
events with the same code. Given an event \fBdesc1\fR and a \fBcode\fR,
Packit Service a1973e
this function will look for the next event with the same code. If
Packit Service a1973e
such an event exists, its descriptor will be stored into \fBdesc\fR.
Packit Service a1973e
It is not necessary to have called the \fBpfm_find_event_bycode()\fR function prior
Packit Service a1973e
to calling this function. This function is fully threadsafe as it does
Packit Service a1973e
not maintain any state between calls.
Packit Service a1973e
.sp
Packit Service a1973e
The \fBpfm_find_event_mask()\fR function is used to find the unit mask descriptor
Packit Service a1973e
based on its name or numerical value passed in \fBstr\fR for the event specified
Packit Service a1973e
in \fBidx\fR. The numeric value must be an exact match of an existing unit mask value,
Packit Service a1973e
i.e., all bits must match. Some events do not have unit masks, in which case this function
Packit Service a1973e
returns an error.
Packit Service a1973e
.SH RETURN
Packit Service a1973e
All functions return whether or not the call was successful.
Packit Service a1973e
A return value of \fBPFMLIB_SUCCESS\fR indicates success, 
Packit Service a1973e
otherwise the value is the error code.
Packit Service a1973e
.SH ERRORS
Packit Service a1973e
.B PFMLIB_ERR_NOINIT
Packit Service a1973e
the library has not been initialized properly.
Packit Service a1973e
.TP
Packit Service a1973e
.B PFMLIB_ERR_INVAL
Packit Service a1973e
the event descriptor is invalid, or the pointer argument is NULL.
Packit Service a1973e
.TP
Packit Service a1973e
.B PFMLIB_ERR_NOTFOUND
Packit Service a1973e
no matching event or unit mask was found.
Packit Service a1973e
.SH AUTHOR
Packit Service a1973e
Stephane Eranian <eranian@hpl.hp.com>
Packit Service a1973e
.PP