PAPI 7.1.0.0
Loading...
Searching...
No Matches
arm_cpu_utils.h File Reference
Include dependency graph for arm_cpu_utils.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int arm_cpu_init (void)
 
int arm_cpu_finalize (void)
 
int arm_cpu_get_vendor (char *vendor)
 
int arm_cpu_get_name (char *name)
 
int arm_cpu_get_attribute (CPU_attr_e attr, int *value)
 
int arm_cpu_get_attribute_at (CPU_attr_e attr, int loc, int *value)
 

Function Documentation

◆ arm_cpu_finalize()

int arm_cpu_finalize ( void  )

Definition at line 66 of file arm_cpu_utils.c.

67{
68 return CPU_SUCCESS;
69}
#define CPU_SUCCESS
Definition: cpu_utils.h:4

◆ arm_cpu_get_attribute()

int arm_cpu_get_attribute ( CPU_attr_e  attr,
int value 
)

Definition at line 169 of file arm_cpu_utils.c.

170{
171 return os_cpu_get_attribute(attr, value);
172}
int os_cpu_get_attribute(CPU_attr_e attr, int *value)
Definition: os_cpu_utils.c:30
Here is the call graph for this function:
Here is the caller graph for this function:

◆ arm_cpu_get_attribute_at()

int arm_cpu_get_attribute_at ( CPU_attr_e  attr,
int  loc,
int value 
)

Definition at line 175 of file arm_cpu_utils.c.

176{
177 int status = CPU_SUCCESS;
178
179 switch(attr) {
181 //fall through
183 //fall through
185 //fall through
187 //fall through
189 //fall through
191 //fall through
193 //fall through
195 //fall through
197 //fall through
199 //fall through
201 //fall through
203 //fall through
205 //fall through
207 //fall through
209 status = get_cache_info(attr, loc, value);
210 break;
212 //fall through
214 status = os_cpu_get_attribute_at(attr, loc, value);
215 break;
216 default:
217 status = CPU_ERROR;
218 }
219
220 return status;
221}
static int get_cache_info(CPU_attr_e attr, int level, int *value)
#define CPU_ERROR
Definition: cpu_utils.h:5
@ CPU_ATTR__CACHE_INST_TOT_SIZE
Definition: cpu_utils.h:21
@ CPU_ATTR__HWTHREAD_NUMA_AFFINITY
Definition: cpu_utils.h:34
@ CPU_ATTR__CACHE_UNIF_TOT_SIZE
Definition: cpu_utils.h:29
@ CPU_ATTR__CACHE_DATA_ASSOCIATIVITY
Definition: cpu_utils.h:28
@ CPU_ATTR__CACHE_INST_LINE_SIZE
Definition: cpu_utils.h:22
@ CPU_ATTR__NUMA_MEM_SIZE
Definition: cpu_utils.h:36
@ CPU_ATTR__CACHE_UNIF_LINE_SIZE
Definition: cpu_utils.h:30
@ CPU_ATTR__CACHE_DATA_NUM_LINES
Definition: cpu_utils.h:27
@ CPU_ATTR__CACHE_UNIF_ASSOCIATIVITY
Definition: cpu_utils.h:32
@ CPU_ATTR__CACHE_INST_PRESENT
Definition: cpu_utils.h:18
@ CPU_ATTR__CACHE_DATA_PRESENT
Definition: cpu_utils.h:19
@ CPU_ATTR__CACHE_DATA_LINE_SIZE
Definition: cpu_utils.h:26
@ CPU_ATTR__CACHE_INST_ASSOCIATIVITY
Definition: cpu_utils.h:24
@ CPU_ATTR__CACHE_INST_NUM_LINES
Definition: cpu_utils.h:23
@ CPU_ATTR__CACHE_UNIF_NUM_LINES
Definition: cpu_utils.h:31
@ CPU_ATTR__CACHE_DATA_TOT_SIZE
Definition: cpu_utils.h:25
@ CPU_ATTR__CACHE_UNIF_PRESENT
Definition: cpu_utils.h:20
int os_cpu_get_attribute_at(CPU_attr_e attr, int loc, int *value)
Definition: os_cpu_utils.c:42
Here is the call graph for this function:
Here is the caller graph for this function:

◆ arm_cpu_get_name()

int arm_cpu_get_name ( char *  name)

Definition at line 115 of file arm_cpu_utils.c.

116{
117 int papi_errno;
118
119 papi_errno = os_cpu_get_name(name);
120 if (strlen(name) != 0) {
121 return papi_errno;
122 }
123
124 char tmp[PAPI_MAX_STR_LEN];
125 papi_errno = os_cpu_get_vendor(tmp);
126 if (papi_errno != PAPI_OK) {
127 return papi_errno;
128 }
129
130 int vendor_id;
131 sscanf(tmp, "%x", &vendor_id);
132
133 int name_id;
134 papi_errno = os_cpu_get_attribute(CPU_ATTR__CPUID_MODEL, &name_id);
135 if (papi_errno != PAPI_OK) {
136 return papi_errno;
137 }
138
139 switch(vendor_id) {
140 case VENDOR_ARM_ARM:
141 papi_errno = name_id_arm_cpu_get_name(name_id, name);
142 break;
144 papi_errno = name_id_broadcom_cpu_get_name(name_id, name);
145 break;
147 papi_errno = name_id_cavium_cpu_get_name(name_id, name);
148 break;
150 papi_errno = name_id_fujitsu_cpu_get_name(name_id, name);
151 break;
153 papi_errno = name_id_hisilicon_cpu_get_name(name_id, name);
154 break;
155 case VENDOR_ARM_APM:
156 papi_errno = name_id_apm_cpu_get_name(name_id, name);
157 break;
159 papi_errno = name_id_qualcomm_cpu_get_name(name_id, name);
160 break;
161 default:
162 papi_errno = PAPI_ENOSUPP;
163 }
164
165 return papi_errno;
166}
double tmp
static int name_id_hisilicon_cpu_get_name(int name_id, char *name)
static int name_id_arm_cpu_get_name(int name_id, char *name)
static int name_id_broadcom_cpu_get_name(int name_id, char *name)
#define VENDOR_ARM_CAVIUM
Definition: arm_cpu_utils.c:9
static int name_id_fujitsu_cpu_get_name(int name_id, char *name)
#define VENDOR_ARM_HISILICON
Definition: arm_cpu_utils.c:11
static int name_id_cavium_cpu_get_name(int name_id, char *name)
#define VENDOR_ARM_BROADCOM
Definition: arm_cpu_utils.c:8
#define VENDOR_ARM_ARM
Definition: arm_cpu_utils.c:7
#define VENDOR_ARM_QUALCOMM
Definition: arm_cpu_utils.c:13
static int name_id_apm_cpu_get_name(int name_id, char *name)
#define VENDOR_ARM_FUJITSU
Definition: arm_cpu_utils.c:10
#define VENDOR_ARM_APM
Definition: arm_cpu_utils.c:12
static int name_id_qualcomm_cpu_get_name(int name_id, char *name)
@ CPU_ATTR__CPUID_MODEL
Definition: cpu_utils.h:14
#define PAPI_OK
Definition: f90papi.h:73
#define PAPI_ENOSUPP
Definition: f90papi.h:244
#define PAPI_MAX_STR_LEN
Definition: f90papi.h:77
int os_cpu_get_vendor(char *vendor)
Definition: os_cpu_utils.c:6
int os_cpu_get_name(char *name)
Definition: os_cpu_utils.c:18
const char * name
Definition: rocs.c:225
Here is the call graph for this function:
Here is the caller graph for this function:

◆ arm_cpu_get_vendor()

int arm_cpu_get_vendor ( char *  vendor)

Definition at line 72 of file arm_cpu_utils.c.

73{
74 int papi_errno;
75
77 papi_errno = os_cpu_get_vendor(tmp);
78 if (papi_errno != PAPI_OK) {
79 return papi_errno;
80 }
81
82 int vendor_id;
83 sscanf(tmp, "%x", &vendor_id);
84
85 switch(vendor_id) {
86 case VENDOR_ARM_ARM:
87 strcpy(vendor, "Arm");
88 break;
90 strcpy(vendor, "Broadcom");
91 break;
93 strcpy(vendor, "Cavium");
94 break;
96 strcpy(vendor, "Fujitsu");
97 break;
99 strcpy(vendor, "Hisilicon");
100 break;
101 case VENDOR_ARM_APM:
102 strcpy(vendor, "Apm");
103 break;
105 strcpy(vendor, "Qualcomm");
106 break;
107 default:
108 papi_errno = PAPI_ENOSUPP;
109 }
110
111 return papi_errno;
112}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ arm_cpu_init()

int arm_cpu_init ( void  )

Definition at line 60 of file arm_cpu_utils.c.

61{
62 return CPU_SUCCESS;
63}