aboutsummaryrefslogtreecommitdiff
path: root/include/cpuinfo.h
diff options
context:
space:
mode:
authorMarat Dukhan <marat@fb.com>2017-09-26 18:35:52 -0700
committerMarat Dukhan <marat@fb.com>2017-09-26 18:35:52 -0700
commit3040197bc3eb13796351e74a2e7a6f2bcc081752 (patch)
tree2387e26e11be3307d931e4741d2f3ae559e0bb09 /include/cpuinfo.h
parent2b24889379602c17d2448c891e25c76d2b039ffc (diff)
downloadcpuinfo-3040197bc3eb13796351e74a2e7a6f2bcc081752.tar.gz
Major API refactoring
Diffstat (limited to 'include/cpuinfo.h')
-rw-r--r--include/cpuinfo.h55
1 files changed, 27 insertions, 28 deletions
diff --git a/include/cpuinfo.h b/include/cpuinfo.h
index e60f70e..1df6097 100644
--- a/include/cpuinfo.h
+++ b/include/cpuinfo.h
@@ -80,15 +80,6 @@
#define CPUINFO_CACHE_INCLUSIVE 0x00000002
#define CPUINFO_CACHE_COMPLEX_INDEXING 0x00000004
-enum cpuinfo_cache_level {
- cpuinfo_cache_level_1i = 0,
- cpuinfo_cache_level_1d = 1,
- cpuinfo_cache_level_2 = 2,
- cpuinfo_cache_level_3 = 3,
- cpuinfo_cache_level_4 = 4,
- cpuinfo_cache_level_max = 5,
-};
-
struct cpuinfo_cache {
/** Cache size in bytes */
uint32_t size;
@@ -112,11 +103,6 @@ struct cpuinfo_cache {
uint32_t processor_count;
};
-struct cpuinfo_caches {
- uint32_t count;
- const struct cpuinfo_cache* instances;
-};
-
struct cpuinfo_trace_cache {
uint32_t uops;
uint32_t associativity;
@@ -1096,7 +1082,7 @@ static inline bool cpuinfo_has_x86_movbe(void) {
#endif
}
-static inline bool cpuinfo_has_x86_lahf_salf(void) {
+static inline bool cpuinfo_has_x86_lahf_sahf(void) {
#if CPUINFO_ARCH_X86
return true;
#elif CPUINFO_ARCH_X86_64
@@ -1503,22 +1489,35 @@ static inline bool cpuinfo_has_arm_crc32(void) {
#endif
}
-struct cpuinfo_caches CPUINFO_ABI cpuinfo_get_l1i_cache(void);
-struct cpuinfo_caches CPUINFO_ABI cpuinfo_get_l1d_cache(void);
-struct cpuinfo_caches CPUINFO_ABI cpuinfo_get_l2_cache(void);
-struct cpuinfo_caches CPUINFO_ABI cpuinfo_get_l3_cache(void);
-struct cpuinfo_caches CPUINFO_ABI cpuinfo_get_l4_cache(void);
+const struct cpuinfo_processor* cpuinfo_get_processors(void);
+const struct cpuinfo_core* cpuinfo_get_cores(void);
+const struct cpuinfo_package* cpuinfo_get_packages(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1i_caches(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1d_caches(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l2_caches(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l3_caches(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l4_caches(void);
-extern struct cpuinfo_processor* cpuinfo_processors;
-extern struct cpuinfo_core* cpuinfo_cores;
-extern struct cpuinfo_package* cpuinfo_packages;
+const struct cpuinfo_processor* cpuinfo_get_processor(uint32_t index);
+const struct cpuinfo_core* cpuinfo_get_core(uint32_t index);
+const struct cpuinfo_package* cpuinfo_get_package(uint32_t index);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1i_cache(uint32_t index);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1d_cache(uint32_t index);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l2_cache(uint32_t index);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l3_cache(uint32_t index);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l4_cache(uint32_t index);
-extern uint32_t cpuinfo_processors_count;
-extern uint32_t cpuinfo_cores_count;
-extern uint32_t cpuinfo_packages_count;
+uint32_t cpuinfo_get_processors_count(void);
+uint32_t cpuinfo_get_cores_count(void);
+uint32_t cpuinfo_get_packages_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l1i_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l1d_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l2_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l3_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l4_caches_count(void);
-const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_current_processor(void);
-const struct cpuinfo_core* CPUINFO_ABI cpuinfo_current_core(void);
+const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_current_processor(void);
+const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_current_core(void);
#ifdef __cplusplus
} /* extern "C" */