blob: 8a88ce5a4bf6d94a296ef205452929e702a69b7d [file] [log] [blame]
Marat Dukhan547fa362017-03-03 02:47:26 -05001#include <pthread.h>
2
3#include <cpuinfo.h>
4#include <api.h>
5
Hao Lu922070c2017-10-18 16:29:02 -07006#ifdef __APPLE__
7 #include "TargetConditionals.h"
8#endif
9
Marat Dukhan547fa362017-03-03 02:47:26 -050010
Marat Dukhan8ecad1a2017-05-08 07:21:57 +000011struct cpuinfo_processor* cpuinfo_processors = NULL;
Marat Dukhan43a51cd2017-09-22 16:35:05 -070012struct cpuinfo_core* cpuinfo_cores = NULL;
Marat Dukhan8ecad1a2017-05-08 07:21:57 +000013struct cpuinfo_package* cpuinfo_packages = NULL;
Marat Dukhan3045d4f2017-03-04 01:51:42 -050014
Marat Dukhan8ecad1a2017-05-08 07:21:57 +000015uint32_t cpuinfo_processors_count = 0;
16uint32_t cpuinfo_cores_count = 0;
17uint32_t cpuinfo_packages_count = 0;
Marat Dukhan547fa362017-03-03 02:47:26 -050018
19
20static pthread_once_t init_guard = PTHREAD_ONCE_INIT;
21
22void CPUINFO_ABI cpuinfo_initialize(void) {
23#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
Marat Dukhan3045d4f2017-03-04 01:51:42 -050024 #if defined(__MACH__) && defined(__APPLE__)
25 pthread_once(&init_guard, &cpuinfo_x86_mach_init);
26 #elif defined(__linux__)
27 pthread_once(&init_guard, &cpuinfo_x86_linux_init);
28 #else
29 #error Unsupported target OS
30 #endif
Marat Dukhanab42e7e2017-05-09 13:19:39 +000031#elif CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
Marat Dukhan3c982762017-05-08 06:16:45 +000032 #if defined(__linux__)
33 pthread_once(&init_guard, &cpuinfo_arm_linux_init);
Hao Lu922070c2017-10-18 16:29:02 -070034 #elif defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
35 pthread_once(&init_guard, &cpuinfo_arm_mach_init);
Marat Dukhan3c982762017-05-08 06:16:45 +000036 #else
37 #error Unsupported target OS
38 #endif
Marat Dukhan547fa362017-03-03 02:47:26 -050039#else
40 #error Unsupported target architecture
41#endif
42}
43
44void CPUINFO_ABI cpuinfo_deinitialize(void) {
45}