/proc/self/cwd/external/cpuinfo/src/init.c
Line | Count | Source (jump to first uncovered line) |
1 | | #if defined(_WIN32) || defined(__CYGWIN__) |
2 | | #include <windows.h> |
3 | | #elif !defined(__EMSCRIPTEN__) || defined(__EMSCRIPTEN_PTHREADS__) |
4 | | #include <pthread.h> |
5 | | #endif |
6 | | |
7 | | #include <cpuinfo.h> |
8 | | #include <cpuinfo/internal-api.h> |
9 | | #include <cpuinfo/log.h> |
10 | | |
11 | | #ifdef __APPLE__ |
12 | | #include "TargetConditionals.h" |
13 | | #endif |
14 | | |
15 | | |
16 | | #if defined(_WIN32) || defined(__CYGWIN__) |
17 | | static INIT_ONCE init_guard = INIT_ONCE_STATIC_INIT; |
18 | | #elif !defined(__EMSCRIPTEN__) || defined(__EMSCRIPTEN_PTHREADS__) |
19 | | static pthread_once_t init_guard = PTHREAD_ONCE_INIT; |
20 | | #else |
21 | | static bool init_guard = false; |
22 | | #endif |
23 | | |
24 | 0 | bool CPUINFO_ABI cpuinfo_initialize(void) { |
25 | 0 | #if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64 |
26 | | #if defined(__MACH__) && defined(__APPLE__) |
27 | | pthread_once(&init_guard, &cpuinfo_x86_mach_init); |
28 | | #elif defined(__linux__) |
29 | 0 | pthread_once(&init_guard, &cpuinfo_x86_linux_init); |
30 | | #elif defined(_WIN32) || defined(__CYGWIN__) |
31 | | InitOnceExecuteOnce(&init_guard, &cpuinfo_x86_windows_init, NULL, NULL); |
32 | | #else |
33 | | cpuinfo_log_error("operating system is not supported in cpuinfo"); |
34 | | #endif |
35 | | #elif CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64 |
36 | | #if defined(__linux__) |
37 | | pthread_once(&init_guard, &cpuinfo_arm_linux_init); |
38 | | #elif defined(__MACH__) && defined(__APPLE__) |
39 | | pthread_once(&init_guard, &cpuinfo_arm_mach_init); |
40 | | #elif defined(_WIN32) |
41 | | InitOnceExecuteOnce(&init_guard, &cpuinfo_arm_windows_init, NULL, NULL); |
42 | | #else |
43 | | cpuinfo_log_error("operating system is not supported in cpuinfo"); |
44 | | #endif |
45 | | #elif CPUINFO_ARCH_RISCV32 || CPUINFO_ARCH_RISCV64 |
46 | | #if defined(__linux__) |
47 | | pthread_once(&init_guard, &cpuinfo_riscv_linux_init); |
48 | | #else |
49 | | cpuinfo_log_error("operating system is not supported in cpuinfo"); |
50 | | #endif |
51 | | #elif CPUINFO_ARCH_ASMJS || CPUINFO_ARCH_WASM || CPUINFO_ARCH_WASMSIMD |
52 | | #if defined(__EMSCRIPTEN_PTHREADS__) |
53 | | pthread_once(&init_guard, &cpuinfo_emscripten_init); |
54 | | #else |
55 | | if (!init_guard) { |
56 | | cpuinfo_emscripten_init(); |
57 | | } |
58 | | init_guard = true; |
59 | | #endif |
60 | | #else |
61 | | cpuinfo_log_error("processor architecture is not supported in cpuinfo"); |
62 | | #endif |
63 | 0 | return cpuinfo_is_initialized; |
64 | 0 | } |
65 | | |
66 | 0 | void CPUINFO_ABI cpuinfo_deinitialize(void) { |
67 | 0 | } |