PAPI 7.1.0.0
Loading...
Searching...
No Matches
papi_libpfm4_events.c File Reference
Include dependency graph for papi_libpfm4_events.c:

Go to the source code of this file.

Functions

int _papi_libpfm4_error (int pfm_error)
 
int _papi_libpfm4_shutdown (papi_vector_t *my_vector)
 
int _papi_libpfm4_init (papi_vector_t *my_vector)
 

Variables

static int libpfm4_users =0
 

Function Documentation

◆ _papi_libpfm4_error()

int _papi_libpfm4_error ( int  pfm_error)

Definition at line 39 of file papi_libpfm4_events.c.

39 {
40
41 switch ( pfm_error ) {
42 case PFM_SUCCESS: return PAPI_OK; /* success */
43 case PFM_ERR_NOTSUPP: return PAPI_ENOSUPP; /* function not supported */
44 case PFM_ERR_INVAL: return PAPI_EINVAL; /* invalid parameters */
45 case PFM_ERR_NOINIT: return PAPI_ENOINIT; /* library not initialized */
46 case PFM_ERR_NOTFOUND: return PAPI_ENOEVNT; /* event not found */
47 case PFM_ERR_FEATCOMB: return PAPI_ECOMBO; /* invalid combination of features */
48 case PFM_ERR_UMASK: return PAPI_EATTR; /* invalid or missing unit mask */
49 case PFM_ERR_NOMEM: return PAPI_ENOMEM; /* out of memory */
50 case PFM_ERR_ATTR: return PAPI_EATTR; /* invalid event attribute */
51 case PFM_ERR_ATTR_VAL: return PAPI_EATTR; /* invalid event attribute value */
52 case PFM_ERR_ATTR_SET: return PAPI_EATTR; /* attribute value already set */
53 case PFM_ERR_TOOMANY: return PAPI_ECOUNT; /* too many parameters */
54 case PFM_ERR_TOOSMALL: return PAPI_ECOUNT; /* parameter is too small */
55 default:
56 PAPIWARN("Unknown libpfm error code %d, returning PAPI_EINVAL",pfm_error);
57 return PAPI_EINVAL;
58 }
59}
#define PAPI_OK
Definition: f90papi.h:73
#define PAPI_ENOEVNT
Definition: f90papi.h:139
#define PAPI_ECOMBO
Definition: f90papi.h:256
#define PAPI_ECOUNT
Definition: f90papi.h:195
#define PAPI_EINVAL
Definition: f90papi.h:115
#define PAPI_ENOSUPP
Definition: f90papi.h:244
#define PAPI_ENOMEM
Definition: f90papi.h:16
#define PAPI_ENOINIT
Definition: f90papi.h:160
#define PAPI_EATTR
Definition: f90papi.h:97
void PAPIWARN(char *format,...)
Here is the call graph for this function:

◆ _papi_libpfm4_init()

Definition at line 104 of file papi_libpfm4_events.c.

104 {
105
106 int version;
107 pfm_err_t retval = PFM_SUCCESS;
108
110
111 if (!libpfm4_users) {
113 if ( retval == PFM_SUCCESS ) {
115 }
116 else {
117 strncpy(my_vector->cmp_info.disabled_reason,
120 return PAPI_ESBSTR;
121 }
122 }
123 else {
125 }
126
128
129 /* get the libpfm4 version */
130
132 if (version >= 0) {
133
134 /* Complain if the compiled-against version */
135 /* doesn't match current version */
136
137 if ( PFM_MAJ_VERSION( version ) !=
138 PFM_MAJ_VERSION( LIBPFM_VERSION ) ) {
139
140 PAPIWARN( "Version mismatch of libpfm: "
141 "compiled %#x vs. installed %#x\n",
142 PFM_MAJ_VERSION( LIBPFM_VERSION ),
143 PFM_MAJ_VERSION( version ) );
144
145 }
146
147 /* Set the version */
148 sprintf( my_vector->cmp_info.support_version, "%d.%d",
149 PFM_MAJ_VERSION( version ),
150 PFM_MIN_VERSION( version ) );
151
152 } else {
153 PAPIWARN( "pfm_get_version(): %s", pfm_strerror( retval ) );
154 }
155
156 return PAPI_OK;
157}
#define PAPI_ESBSTR
Definition: f90papi.h:60
#define PAPI_MAX_STR_LEN
Definition: f90papi.h:77
uint8_t version
#define NAMELIB_LOCK
Definition: papi_internal.h:93
static int libpfm4_users
char * pfm_strerror(int code)
int pfm_err_t
Definition: pfmlib.h:151
pfm_err_t pfm_initialize(void)
pfm_err_t pfm_get_version(unsigned int *version)
char support_version[PAPI_MIN_STR_LEN]
Definition: papi.h:632
char disabled_reason[PAPI_HUGE_STR_LEN]
Definition: papi.h:634
PAPI_component_info_t cmp_info
Definition: papi_vector.h:20
inline_static int _papi_hwi_lock(int lck)
Definition: threads.h:69
inline_static int _papi_hwi_unlock(int lck)
Definition: threads.h:83
int retval
Definition: zero_fork.c:53
Here is the call graph for this function:

◆ _papi_libpfm4_shutdown()

Definition at line 72 of file papi_libpfm4_events.c.

72 {
73
74 /* clean out and free the native events structure */
76
78
79 /* Only free if we're the last user */
80
81 if (!libpfm4_users) {
82 pfm_terminate();
83 }
84
86
87 strcpy(my_vector->cmp_info.support_version,"");
88
89 return PAPI_OK;
90}
Here is the call graph for this function:

Variable Documentation

◆ libpfm4_users

int libpfm4_users =0
static

Definition at line 22 of file papi_libpfm4_events.c.