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

Go to the source code of this file.

Macros

#define CPU_SUCCESS   0
 
#define CPU_ERROR   -1
 

Enumerations

enum  CPU_attr_e {
  CPU_ATTR__NUM_SOCKETS , CPU_ATTR__NUM_NODES , CPU_ATTR__NUM_CORES , CPU_ATTR__NUM_THREADS ,
  CPU_ATTR__VENDOR_ID , CPU_ATTR__CPUID_FAMILY , CPU_ATTR__CPUID_MODEL , CPU_ATTR__CPUID_STEPPING ,
  CPU_ATTR__CACHE_MAX_NUM_LEVELS , CPU_ATTR__CACHE_INST_PRESENT , CPU_ATTR__CACHE_DATA_PRESENT , CPU_ATTR__CACHE_UNIF_PRESENT ,
  CPU_ATTR__CACHE_INST_TOT_SIZE , CPU_ATTR__CACHE_INST_LINE_SIZE , CPU_ATTR__CACHE_INST_NUM_LINES , CPU_ATTR__CACHE_INST_ASSOCIATIVITY ,
  CPU_ATTR__CACHE_DATA_TOT_SIZE , CPU_ATTR__CACHE_DATA_LINE_SIZE , CPU_ATTR__CACHE_DATA_NUM_LINES , CPU_ATTR__CACHE_DATA_ASSOCIATIVITY ,
  CPU_ATTR__CACHE_UNIF_TOT_SIZE , CPU_ATTR__CACHE_UNIF_LINE_SIZE , CPU_ATTR__CACHE_UNIF_NUM_LINES , CPU_ATTR__CACHE_UNIF_ASSOCIATIVITY ,
  CPU_ATTR__HWTHREAD_NUMA_AFFINITY , CPU_ATTR__NUMA_MEM_SIZE
}
 

Functions

int cpu_init (void)
 
int cpu_finalize (void)
 
int cpu_get_vendor (char *vendor)
 
int cpu_get_name (char *name)
 
int cpu_get_attribute (CPU_attr_e attr, int *value)
 
int cpu_get_attribute_at (CPU_attr_e attr, int loc, int *value)
 
int cpu_get_cache_info (CPU_attr_e attr, int level, _sysdetect_cache_level_info_t *clevel_ptr, int *value)
 

Macro Definition Documentation

◆ CPU_ERROR

#define CPU_ERROR   -1

Definition at line 5 of file cpu_utils.h.

◆ CPU_SUCCESS

#define CPU_SUCCESS   0

Definition at line 4 of file cpu_utils.h.

Enumeration Type Documentation

◆ CPU_attr_e

enum CPU_attr_e
Enumerator
CPU_ATTR__NUM_SOCKETS 
CPU_ATTR__NUM_NODES 
CPU_ATTR__NUM_CORES 
CPU_ATTR__NUM_THREADS 
CPU_ATTR__VENDOR_ID 
CPU_ATTR__CPUID_FAMILY 
CPU_ATTR__CPUID_MODEL 
CPU_ATTR__CPUID_STEPPING 
CPU_ATTR__CACHE_MAX_NUM_LEVELS 
CPU_ATTR__CACHE_INST_PRESENT 
CPU_ATTR__CACHE_DATA_PRESENT 
CPU_ATTR__CACHE_UNIF_PRESENT 
CPU_ATTR__CACHE_INST_TOT_SIZE 
CPU_ATTR__CACHE_INST_LINE_SIZE 
CPU_ATTR__CACHE_INST_NUM_LINES 
CPU_ATTR__CACHE_INST_ASSOCIATIVITY 
CPU_ATTR__CACHE_DATA_TOT_SIZE 
CPU_ATTR__CACHE_DATA_LINE_SIZE 
CPU_ATTR__CACHE_DATA_NUM_LINES 
CPU_ATTR__CACHE_DATA_ASSOCIATIVITY 
CPU_ATTR__CACHE_UNIF_TOT_SIZE 
CPU_ATTR__CACHE_UNIF_LINE_SIZE 
CPU_ATTR__CACHE_UNIF_NUM_LINES 
CPU_ATTR__CACHE_UNIF_ASSOCIATIVITY 
CPU_ATTR__HWTHREAD_NUMA_AFFINITY 
CPU_ATTR__NUMA_MEM_SIZE 

Definition at line 7 of file cpu_utils.h.

7 {
16 /* Cache Attributes */
33 /* Hardware Thread Affinity Attributes */
35 /* Memory Attributes */
CPU_attr_e
Definition: cpu_utils.h:7
@ CPU_ATTR__CPUID_MODEL
Definition: cpu_utils.h:14
@ CPU_ATTR__CACHE_MAX_NUM_LEVELS
Definition: cpu_utils.h:17
@ CPU_ATTR__NUM_THREADS
Definition: cpu_utils.h:11
@ CPU_ATTR__CPUID_FAMILY
Definition: cpu_utils.h:13
@ 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__NUM_NODES
Definition: cpu_utils.h:9
@ 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__CPUID_STEPPING
Definition: cpu_utils.h:15
@ CPU_ATTR__CACHE_INST_PRESENT
Definition: cpu_utils.h:18
@ CPU_ATTR__NUM_CORES
Definition: cpu_utils.h:10
@ 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__NUM_SOCKETS
Definition: cpu_utils.h:8
@ CPU_ATTR__VENDOR_ID
Definition: cpu_utils.h:12
@ CPU_ATTR__CACHE_UNIF_PRESENT
Definition: cpu_utils.h:20

Function Documentation

◆ cpu_finalize()

int cpu_finalize ( void  )

◆ cpu_get_attribute()

int cpu_get_attribute ( CPU_attr_e  attr,
int value 
)

Definition at line 55 of file cpu_utils.c.

56{
57#if defined(__x86_64__) || defined(__amd64__)
58 return x86_cpu_get_attribute(attr, value);
59#elif defined(__powerpc__)
60 return powerpc_cpu_get_attribute(attr, value);
61#elif defined(__arm__) || defined(__aarch64__)
62 return arm_cpu_get_attribute(attr, value);
63#endif
64 return os_cpu_get_attribute(attr, value);
65}
int arm_cpu_get_attribute(CPU_attr_e attr, int *value)
int os_cpu_get_attribute(CPU_attr_e attr, int *value)
Definition: os_cpu_utils.c:30
int powerpc_cpu_get_attribute(CPU_attr_e attr, int *value)
int x86_cpu_get_attribute(CPU_attr_e attr, int *value)
Definition: x86_cpu_utils.c:94
Here is the call graph for this function:
Here is the caller graph for this function:

◆ cpu_get_attribute_at()

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

Definition at line 68 of file cpu_utils.c.

69{
70#if defined(__x86_64__) || defined(__amd64__)
71 return x86_cpu_get_attribute_at(attr, loc, value);
72#elif defined(__powerpc__)
73 return powerpc_cpu_get_attribute_at(attr, loc, value);
74#elif defined(__arm__) || defined(__aarch64__)
75 return arm_cpu_get_attribute_at(attr, loc, value);
76#endif
77 return os_cpu_get_attribute_at(attr, loc, value);
78}
int arm_cpu_get_attribute_at(CPU_attr_e attr, int loc, int *value)
int os_cpu_get_attribute_at(CPU_attr_e attr, int loc, int *value)
Definition: os_cpu_utils.c:42
int powerpc_cpu_get_attribute_at(CPU_attr_e attr, int loc, int *value)
int x86_cpu_get_attribute_at(CPU_attr_e attr, int loc, int *value)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ cpu_get_cache_info()

int cpu_get_cache_info ( CPU_attr_e  attr,
int  level,
_sysdetect_cache_level_info_t clevel_ptr,
int value 
)

Definition at line 94 of file cpu_utils.c.

95{
96 int status = CPU_SUCCESS;
97 int i;
98
99 *value = 0;
100
102 return CPU_ERROR;
103
104 switch(attr) {
106 if (get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_INST)) {
107 *value = 1;
108 }
109 break;
111 if (get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_DATA)) {
112 *value = 1;
113 }
114 break;
116 if (get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_UNIFIED)) {
117 *value = 1;
118 }
119 break;
121 if ((i = get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_INST))) {
122 *value = clevel_ptr[level-1].cache[i-1].size;
123 }
124 break;
126 if ((i = get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_INST))) {
127 *value = clevel_ptr[level-1].cache[i-1].line_size;
128 }
129 break;
131 if ((i = get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_INST))) {
132 *value = clevel_ptr[level-1].cache[i-1].num_lines;
133 }
134 break;
136 if ((i = get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_INST))) {
137 *value = clevel_ptr[level-1].cache[i-1].associativity;
138 }
139 break;
141 if ((i = get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_DATA))) {
142 *value = clevel_ptr[level-1].cache[i-1].size;
143 }
144 break;
146 if ((i = get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_DATA))) {
147 *value = clevel_ptr[level-1].cache[i-1].line_size;
148 }
149 break;
151 if ((i = get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_DATA))) {
152 *value = clevel_ptr[level-1].cache[i-1].num_lines;
153 }
154 break;
156 if ((i = get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_DATA))) {
157 *value = clevel_ptr[level-1].cache[i-1].associativity;
158 }
159 break;
161 if ((i = get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_UNIFIED))) {
162 *value = clevel_ptr[level-1].cache[i-1].size;
163 }
164 break;
166 if ((i = get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_UNIFIED))) {
167 *value = clevel_ptr[level-1].cache[i-1].line_size;
168 }
169 break;
171 if ((i = get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_UNIFIED))) {
172 *value = clevel_ptr[level-1].cache[i-1].num_lines;
173 }
174 break;
176 if ((i = get_cache_level(&clevel_ptr[level-1], PAPI_MH_TYPE_UNIFIED))) {
177 *value = clevel_ptr[level-1].cache[i-1].associativity;
178 }
179 break;
180 default:
181 status = CPU_ERROR;
182 }
183
184 return status;
185}
int i
static int get_cache_level(_sysdetect_cache_level_info_t *clevel_ptr, int type)
Definition: cpu_utils.c:81
#define CPU_ERROR
Definition: cpu_utils.h:5
#define CPU_SUCCESS
Definition: cpu_utils.h:4
#define PAPI_MAX_MEM_HIERARCHY_LEVELS
Definition: f90papi.h:103
#define PAPI_MH_TYPE_DATA
Definition: papi.h:720
#define PAPI_MH_TYPE_INST
Definition: papi.h:719
#define PAPI_MH_TYPE_UNIFIED
Definition: papi.h:723
PAPI_mh_cache_info_t cache[PAPI_MH_MAX_LEVELS]
Definition: sysdetect.h:57
Here is the call graph for this function:
Here is the caller graph for this function:

◆ cpu_get_name()

int cpu_get_name ( char *  name)

Definition at line 42 of file cpu_utils.c.

43{
44#if defined(__x86_64__) || defined(__amd64__)
45 return x86_cpu_get_name(name);
46#elif defined(__powerpc__)
48#elif defined(__arm__) || defined(__aarch64__)
49 return arm_cpu_get_name(name);
50#endif
51 return os_cpu_get_name(name);
52}
int arm_cpu_get_name(char *name)
int os_cpu_get_name(char *name)
Definition: os_cpu_utils.c:18
int powerpc_cpu_get_name(char *name)
const char * name
Definition: rocs.c:225
int x86_cpu_get_name(char *name)
Definition: x86_cpu_utils.c:88
Here is the call graph for this function:
Here is the caller graph for this function:

◆ cpu_get_vendor()

int cpu_get_vendor ( char *  vendor)

Definition at line 29 of file cpu_utils.c.

30{
31#if defined(__x86_64__) || defined(__amd64__)
32 return x86_cpu_get_vendor(vendor);
33#elif defined(__powerpc__)
34 return powerpc_cpu_get_vendor(vendor);
35#elif defined(__arm__) || defined(__aarch64__)
36 return arm_cpu_get_vendor(vendor);
37#endif
38 return os_cpu_get_vendor(vendor);
39}
int arm_cpu_get_vendor(char *vendor)
Definition: arm_cpu_utils.c:72
int os_cpu_get_vendor(char *vendor)
Definition: os_cpu_utils.c:6
int powerpc_cpu_get_vendor(char *vendor)
int x86_cpu_get_vendor(char *vendor)
Definition: x86_cpu_utils.c:82
Here is the call graph for this function:
Here is the caller graph for this function:

◆ cpu_init()

int cpu_init ( void  )