Provided by: libpfm4-dev_4.9.0-2_amd64 bug

NAME

       pfm_get_event_attr_info - get event attribute information

SYNOPSIS

       #include <perfmon/pfmlib.h>

       int pfm_get_event_attr_info(int idx, int attr, pfm_os_t os, pfm_event_attr_info_t *info);

DESCRIPTION

       This  function returns in info information about the attribute designated by attr for the event specified
       in idx and the os layer in os.

       The pfm_os_t enumeration provides the following choices:

       PFM_OS_NONE
              The returned information pertains only to what the PMU  hardware  exports.   No  operating  system
              attributes is taken into account.

       PFM_OS_PERF_EVENT
              The  returned  information includes the actual PMU hardware and the additional attributes exported
              by the perf_events kernel interface.  The perf_event attributes pertain only the PMU hardware.  In
              case perf_events is not detected, an error is returned.

       PFM_OS_PERF_EVENT_EXT
              The  returned  information  includes all of what is already provided by PFM_OS_PERF_EVENT plus all
              the software attributes controlled by perf_events, such as sampling period, precise sampling.

       The pfm_event_attr_info_t structure is defined as follows:
       typedef struct {
               const char              *name;
               const char              *desc;
               const char              *equiv;
               size_t           size;
               uint64_t                code;
               pfm_attr_t              type;
               int                     idx;
               pfm_attr_ctrl_t         ctrl;
               int                     reserved1;
               struct {
                       int             is_dfl:1;
                       int             is_precise:1;
                       int             reserved:30;
               };
               union {
                       uint64_t        dfl_val64;
                       const char      *dfl_str;
                       int             dfl_bool;
                       int             dfl_int;
               };
       } pfm_event_attr_info_t;

       The fields of this structure are defined as follows:

       name   This is the name of the attribute. This is a read-only string.

       desc   This is the description of the attribute. This is a read-only string.   It  may  contain  multiple
              sentences.

       equiv  Certain  attributes  may  be  just variations of other attributes for the same event.  They may be
              provided as handy shortcuts to avoid supplying a long list of attributes.  For  those  attributes,
              this  field  is  not NULL and contains the complete equivalent attribute string. This string, once
              appended to the event name, may be used library calls requiring an event string.

       code   This is the raw attribute code. For PFM_ATTR_UMASK, this is the unit  mask  code.  For  all  other
              attributes, this is an opaque index.

       type   This  is  the  type of the attribute. Attributes represent either sub-events or extra filters that
              can be applied to the event. Filters (also called modifiers)  may be tied to the event or the  PMU
              register  the  event  is  programmed  into.  The  type  of  an attribute determines how it must be
              specified. The following types are defined:

              PFM_ATTR_UMASK
                     This is a unit mask, i.e., a sub-event. It is specified using its name.  Depending  on  the
                     event, it may be possible to specify multiple unit masks.

              PFM_ATTR_MOD_BOOL
                     This  is  a boolean attribute. It has a value of 0, 1, y or n. The value is specified after
                     the equal sign, e.g., foo=1. As a convenience, the equal sign and value may be omitted,  in
                     which case this is equivalent to =1.

              PFM_ATTR_MOD_INTEGER
                     This is an integer attribute. It has a value which must be passed after the equal sign. The
                     range of valid values depends on the attribute and is usually specified in its description.

       idx    This is the attribute index. It is identical to the value of  attr  passed  to  the  call  and  is
              provided for completeness.

       size   This field contains the size of the struct passed. This field is used to provide for extensibility
              of  the  struct  without  compromising  backward  compatibility.   The  value  should  be  set  to
              sizeof(pfm_event_attr_info_t).  If  instead,  a  value  of 0 is specified, the library assumes the
              struct passed is identical to the first ABI version which size  is  PFM_ATTR_INFO_ABI0.  Thus,  if
              fields were added after the first ABI, they will not be set by the library. The library does check
              that bytes beyond what is implemented are zeroes.

       is_dfl This field indicates whether or not this attribute is set by  default.  This  applies  mostly  for
              PFM_ATTR_UMASK.  If  a  unit mask is marked as default, and no unit mask is specified in the event
              string, then the library uses it by default. Note that there may be multiple  defaults  per  event
              depending on how unit masks are grouped.

       is_precise
              This  field  indicates whether or not this umask supports precise sampling.  Precise sampling is a
              hardware mechanism that avoids instruction address skid when using  interrupt-based  sampling.  On
              Intel  X86  processors,  this field indicates that the umask supports Precise Event-Based Sampling
              (PEBS).

       dfl_val64, dfl_str, dfl_bool, dfl_int
              This union contains the value of an attribute. For PFM_ATTR_UMASK, the is the unit mask code,  for
              all other types this is the actual value of the attribute.

       ctrl   This  field  indicates  which  layer  or source controls the attribute.  The following sources are
              defined:

              PFM_ATTR_CTRL_UNKNOWN
                     The source controlling the attribute is not known.

              PFM_ATTR_CTRL_PMU
                     The attribute is controlled by the PMU hardware.

              PFM_ATTR_CTRL_PERF_EVENT
                     The attribute is controlled by the perf_events kernel interface.

       reserved
              These fields must be set to zero.

RETURN

       If successful, the function returns PFM_SUCCESS and attribute information in info, otherwise  it  returns
       an error code.

ERRORS

       PFMLIB_ERR_NOINIT
              Library has not been initialized properly.

       PFMLIB_ERR_INVAL
              The idx or attr arguments are invalid or info is NULL or size is not zero.

       PFM_ERR_NOTSUPP
              The requested os layer has not been detected on the host system.

AUTHOR

       Stephane Eranian <eranian@gmail.com>

                                                 December, 2009                                        LIBPFM(3)