Coverage Report

Created: 2024-05-04 12:45

/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
}