aboutsummaryrefslogtreecommitdiff
path: root/src/init.c
diff options
context:
space:
mode:
authorMarat Dukhan <maratek@gmail.com>2018-02-19 22:43:26 -0800
committerMarat Dukhan <maratek@gmail.com>2018-02-19 22:48:12 -0800
commitb2fc4ab8099b802de934f24adf2da6e4c863bd3c (patch)
treee2e22022cc4d4d1de9eba0e6628f127e7e8806ee /src/init.c
parenta9e55a6afde89722af7ee30dc7bd27435e96226b (diff)
downloadcpuinfo-b2fc4ab8099b802de934f24adf2da6e4c863bd3c.tar.gz
Windows support
Diffstat (limited to 'src/init.c')
-rw-r--r--src/init.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/init.c b/src/init.c
index 8a88ce5..a877f23 100644
--- a/src/init.c
+++ b/src/init.c
@@ -1,4 +1,8 @@
-#include <pthread.h>
+#ifdef _WIN32
+ #include <windows.h>
+#else
+ #include <pthread.h>
+#endif
#include <cpuinfo.h>
#include <api.h>
@@ -17,7 +21,11 @@ uint32_t cpuinfo_cores_count = 0;
uint32_t cpuinfo_packages_count = 0;
-static pthread_once_t init_guard = PTHREAD_ONCE_INIT;
+#ifdef _WIN32
+ static INIT_ONCE init_guard = INIT_ONCE_STATIC_INIT;
+#else
+ static pthread_once_t init_guard = PTHREAD_ONCE_INIT;
+#endif
void CPUINFO_ABI cpuinfo_initialize(void) {
#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
@@ -25,6 +33,8 @@ void CPUINFO_ABI cpuinfo_initialize(void) {
pthread_once(&init_guard, &cpuinfo_x86_mach_init);
#elif defined(__linux__)
pthread_once(&init_guard, &cpuinfo_x86_linux_init);
+ #elif defined(_WIN32)
+ InitOnceExecuteOnce(&init_guard, &cpuinfo_x86_windows_init, NULL, NULL);
#else
#error Unsupported target OS
#endif