Revert "Implement `cpuinfo_deinitialize()` to free heap-allocated globals (#387)" (#411)
This reverts commit 4628dc060ce4e82345dc166bbac875609db4ff69.
diff --git a/src/arm/linux/init.c b/src/arm/linux/init.c
index 587317b..534230d 100644
--- a/src/arm/linux/init.c
+++ b/src/arm/linux/init.c
@@ -1001,43 +1001,3 @@
free(linux_cpu_to_core_map);
free(linux_cpu_to_uarch_index_map);
}
-
-void cpuinfo_arm_linux_deinit(void) {
- free(cpuinfo_processors);
- cpuinfo_processors = NULL;
- cpuinfo_processors_count = 0;
-
- free(cpuinfo_cores);
- cpuinfo_cores = NULL;
- cpuinfo_cores_count = 0;
-
- free(cpuinfo_clusters);
- cpuinfo_clusters = NULL;
- cpuinfo_clusters_count = 0;
-
- /* cpuinfo_packages points to static storage (&package) — do not free */
- cpuinfo_packages = NULL;
- cpuinfo_packages_count = 0;
-
- free(cpuinfo_uarchs);
- cpuinfo_uarchs = NULL;
- cpuinfo_uarchs_count = 0;
-
- for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
- free(cpuinfo_cache[lvl]);
- cpuinfo_cache[lvl] = NULL;
- cpuinfo_cache_count[lvl] = 0;
- }
- cpuinfo_max_cache_size = 0;
-
- free(cpuinfo_linux_cpu_to_processor_map);
- cpuinfo_linux_cpu_to_processor_map = NULL;
-
- free(cpuinfo_linux_cpu_to_core_map);
- cpuinfo_linux_cpu_to_core_map = NULL;
-
- free((void*)cpuinfo_linux_cpu_to_uarch_index_map);
- cpuinfo_linux_cpu_to_uarch_index_map = NULL;
-
- cpuinfo_linux_cpu_max = 0;
-}
diff --git a/src/arm/mach/init.c b/src/arm/mach/init.c
index eac431f..11de4ae 100644
--- a/src/arm/mach/init.c
+++ b/src/arm/mach/init.c
@@ -755,32 +755,3 @@
free(l2);
free(l3);
}
-
-void cpuinfo_arm_mach_deinit(void) {
- free(cpuinfo_processors);
- cpuinfo_processors = NULL;
- cpuinfo_processors_count = 0;
-
- free(cpuinfo_cores);
- cpuinfo_cores = NULL;
- cpuinfo_cores_count = 0;
-
- free(cpuinfo_clusters);
- cpuinfo_clusters = NULL;
- cpuinfo_clusters_count = 0;
-
- free(cpuinfo_packages);
- cpuinfo_packages = NULL;
- cpuinfo_packages_count = 0;
-
- free(cpuinfo_uarchs);
- cpuinfo_uarchs = NULL;
- cpuinfo_uarchs_count = 0;
-
- for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
- free(cpuinfo_cache[lvl]);
- cpuinfo_cache[lvl] = NULL;
- cpuinfo_cache_count[lvl] = 0;
- }
- cpuinfo_max_cache_size = 0;
-}
diff --git a/src/arm/windows/init-by-logical-sys-info.c b/src/arm/windows/init-by-logical-sys-info.c
index 2e44f8a..815ecb7 100644
--- a/src/arm/windows/init-by-logical-sys-info.c
+++ b/src/arm/windows/init-by-logical-sys-info.c
@@ -372,40 +372,6 @@
return result;
}
-BOOL CALLBACK cpuinfo_arm_windows_deinit(PINIT_ONCE init_once, PVOID parameter, PVOID* context) {
- HANDLE heap = GetProcessHeap();
-
- HeapFree(heap, 0, cpuinfo_processors);
- cpuinfo_processors = NULL;
- cpuinfo_processors_count = 0;
-
- HeapFree(heap, 0, cpuinfo_packages);
- cpuinfo_packages = NULL;
- cpuinfo_packages_count = 0;
-
- HeapFree(heap, 0, cpuinfo_clusters);
- cpuinfo_clusters = NULL;
- cpuinfo_clusters_count = 0;
-
- HeapFree(heap, 0, cpuinfo_cores);
- cpuinfo_cores = NULL;
- cpuinfo_cores_count = 0;
-
- HeapFree(heap, 0, cpuinfo_uarchs);
- cpuinfo_uarchs = NULL;
- cpuinfo_uarchs_count = 0;
-
- /* Caches are allocated as a single contiguous block starting at l1i */
- HeapFree(heap, 0, cpuinfo_cache[cpuinfo_cache_level_1i]);
- for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
- cpuinfo_cache[lvl] = NULL;
- cpuinfo_cache_count[lvl] = 0;
- }
- cpuinfo_max_cache_size = 0;
-
- return TRUE;
-}
-
static uint32_t count_logical_processors(const uint32_t max_group_count, uint32_t* global_proc_index_per_group) {
uint32_t nr_of_processors = 0;
diff --git a/src/cpuinfo/internal-api.h b/src/cpuinfo/internal-api.h
index 9c15888..d84b26a 100644
--- a/src/cpuinfo/internal-api.h
+++ b/src/cpuinfo/internal-api.h
@@ -45,9 +45,6 @@
extern CPUINFO_INTERNAL uint32_t cpuinfo_linux_cpu_max;
extern CPUINFO_INTERNAL const struct cpuinfo_processor** cpuinfo_linux_cpu_to_processor_map;
extern CPUINFO_INTERNAL const struct cpuinfo_core** cpuinfo_linux_cpu_to_core_map;
-#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64 || CPUINFO_ARCH_RISCV32 || CPUINFO_ARCH_RISCV64
-extern CPUINFO_INTERNAL const uint32_t* cpuinfo_linux_cpu_to_uarch_index_map;
-#endif
#endif
CPUINFO_PRIVATE void cpuinfo_x86_mach_init(void);
@@ -65,23 +62,6 @@
CPUINFO_PRIVATE void cpuinfo_riscv_linux_init(void);
CPUINFO_PRIVATE void cpuinfo_emscripten_init(void);
-/* Platform-specific deinitialization functions.
- * Each frees the globals allocated by its corresponding init function. */
-CPUINFO_PRIVATE void cpuinfo_x86_mach_deinit(void);
-CPUINFO_PRIVATE void cpuinfo_x86_linux_deinit(void);
-CPUINFO_PRIVATE void cpuinfo_x86_freebsd_deinit(void);
-#if defined(_WIN32) || defined(__CYGWIN__)
-#if CPUINFO_ARCH_ARM64
-CPUINFO_PRIVATE BOOL CALLBACK cpuinfo_arm_windows_deinit(PINIT_ONCE init_once, PVOID parameter, PVOID* context);
-#else
-CPUINFO_PRIVATE BOOL CALLBACK cpuinfo_x86_windows_deinit(PINIT_ONCE init_once, PVOID parameter, PVOID* context);
-#endif
-#endif
-CPUINFO_PRIVATE void cpuinfo_arm_mach_deinit(void);
-CPUINFO_PRIVATE void cpuinfo_arm_linux_deinit(void);
-CPUINFO_PRIVATE void cpuinfo_riscv_linux_deinit(void);
-CPUINFO_PRIVATE void cpuinfo_emscripten_deinit(void);
-
CPUINFO_PRIVATE uint32_t cpuinfo_compute_max_cache_size(const struct cpuinfo_processor* processor);
typedef void (*cpuinfo_processor_callback)(uint32_t);
diff --git a/src/emscripten/init.c b/src/emscripten/init.c
index 6c8210f..c239324 100644
--- a/src/emscripten/init.c
+++ b/src/emscripten/init.c
@@ -286,35 +286,3 @@
free(l1d);
free(l2);
}
-
-void cpuinfo_emscripten_deinit(void) {
- free(cpuinfo_processors);
- cpuinfo_processors = NULL;
- cpuinfo_processors_count = 0;
-
- free(cpuinfo_cores);
- cpuinfo_cores = NULL;
- cpuinfo_cores_count = 0;
-
- free(cpuinfo_clusters);
- cpuinfo_clusters = NULL;
- cpuinfo_clusters_count = 0;
-
- /* cpuinfo_packages points to static storage (&static_package) — do not free */
- cpuinfo_packages = NULL;
- cpuinfo_packages_count = 0;
-
- /* L1i, L1d, L2 are dynamically allocated; L3 may point to static
- * storage (&static_x86_l3) so only free levels that were calloc'd */
- free(cpuinfo_cache[cpuinfo_cache_level_1i]);
- free(cpuinfo_cache[cpuinfo_cache_level_1d]);
- free(cpuinfo_cache[cpuinfo_cache_level_2]);
- /* cpuinfo_cache[cpuinfo_cache_level_3] may be &static_x86_l3 — do not free */
- for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
- cpuinfo_cache[lvl] = NULL;
- cpuinfo_cache_count[lvl] = 0;
- }
- cpuinfo_max_cache_size = 0;
-
- cpuinfo_global_uarch = (struct cpuinfo_uarch_info){0};
-}
diff --git a/src/init.c b/src/init.c
index e71b186..81d5721 100644
--- a/src/init.c
+++ b/src/init.c
@@ -14,13 +14,10 @@
#if defined(_WIN32) || defined(__CYGWIN__)
static INIT_ONCE init_guard = INIT_ONCE_STATIC_INIT;
-static INIT_ONCE deinit_guard = INIT_ONCE_STATIC_INIT;
#elif !defined(__EMSCRIPTEN__) || defined(__EMSCRIPTEN_PTHREADS__)
static pthread_once_t init_guard = PTHREAD_ONCE_INIT;
-static pthread_once_t deinit_guard = PTHREAD_ONCE_INIT;
#else
static bool init_guard = false;
-static bool deinit_guard = false;
#endif
bool CPUINFO_ABI cpuinfo_initialize(void) {
@@ -67,52 +64,4 @@
return cpuinfo_is_initialized;
}
-void CPUINFO_ABI cpuinfo_deinitialize(void) {
- if (!cpuinfo_is_initialized) {
- return;
- }
- cpuinfo_is_initialized = false;
-#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
-#if defined(__MACH__) && defined(__APPLE__)
- pthread_once(&deinit_guard, &cpuinfo_x86_mach_deinit);
-#elif defined(__FreeBSD__)
- pthread_once(&deinit_guard, &cpuinfo_x86_freebsd_deinit);
-#elif defined(__linux__)
- pthread_once(&deinit_guard, &cpuinfo_x86_linux_deinit);
-#elif defined(_WIN32) || defined(__CYGWIN__)
- InitOnceExecuteOnce(&deinit_guard, &cpuinfo_x86_windows_deinit, NULL, NULL);
-#endif
-#elif CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
-#if defined(__linux__)
- pthread_once(&deinit_guard, &cpuinfo_arm_linux_deinit);
-#elif defined(__MACH__) && defined(__APPLE__)
- pthread_once(&deinit_guard, &cpuinfo_arm_mach_deinit);
-#elif defined(_WIN32)
- InitOnceExecuteOnce(&deinit_guard, &cpuinfo_arm_windows_deinit, NULL, NULL);
-#endif
-#elif CPUINFO_ARCH_RISCV32 || CPUINFO_ARCH_RISCV64
-#if defined(__linux__)
- pthread_once(&deinit_guard, &cpuinfo_riscv_linux_deinit);
-#endif
-#elif CPUINFO_ARCH_ASMJS || CPUINFO_ARCH_WASM || CPUINFO_ARCH_WASMSIMD
-#if defined(__EMSCRIPTEN_PTHREADS__)
- pthread_once(&deinit_guard, &cpuinfo_emscripten_deinit);
-#else
- if (!deinit_guard) {
- cpuinfo_emscripten_deinit();
- }
- deinit_guard = true;
-#endif
-#endif
- /* Reset guards to allow re-initialization */
-#if defined(_WIN32) || defined(__CYGWIN__)
- init_guard = (INIT_ONCE)INIT_ONCE_STATIC_INIT;
- deinit_guard = (INIT_ONCE)INIT_ONCE_STATIC_INIT;
-#elif !defined(__EMSCRIPTEN__) || defined(__EMSCRIPTEN_PTHREADS__)
- init_guard = (pthread_once_t)PTHREAD_ONCE_INIT;
- deinit_guard = (pthread_once_t)PTHREAD_ONCE_INIT;
-#else
- init_guard = false;
- deinit_guard = false;
-#endif
-}
+void CPUINFO_ABI cpuinfo_deinitialize(void) {}
diff --git a/src/riscv/linux/init.c b/src/riscv/linux/init.c
index 3da8c3f..45168c7 100644
--- a/src/riscv/linux/init.c
+++ b/src/riscv/linux/init.c
@@ -618,36 +618,3 @@
free(linux_cpu_to_core_map);
free(linux_cpu_to_uarch_index_map);
}
-
-void cpuinfo_riscv_linux_deinit(void) {
- free(cpuinfo_processors);
- cpuinfo_processors = NULL;
- cpuinfo_processors_count = 0;
-
- free(cpuinfo_cores);
- cpuinfo_cores = NULL;
- cpuinfo_cores_count = 0;
-
- free(cpuinfo_clusters);
- cpuinfo_clusters = NULL;
- cpuinfo_clusters_count = 0;
-
- free(cpuinfo_packages);
- cpuinfo_packages = NULL;
- cpuinfo_packages_count = 0;
-
- free(cpuinfo_uarchs);
- cpuinfo_uarchs = NULL;
- cpuinfo_uarchs_count = 0;
-
- free(cpuinfo_linux_cpu_to_processor_map);
- cpuinfo_linux_cpu_to_processor_map = NULL;
-
- free(cpuinfo_linux_cpu_to_core_map);
- cpuinfo_linux_cpu_to_core_map = NULL;
-
- free((void*)cpuinfo_linux_cpu_to_uarch_index_map);
- cpuinfo_linux_cpu_to_uarch_index_map = NULL;
-
- cpuinfo_linux_cpu_max = 0;
-}
diff --git a/src/x86/freebsd/init.c b/src/x86/freebsd/init.c
index ba30a5d..797fa24 100644
--- a/src/x86/freebsd/init.c
+++ b/src/x86/freebsd/init.c
@@ -396,30 +396,3 @@
free(l3);
free(l4);
}
-
-void cpuinfo_x86_freebsd_deinit(void) {
- free(cpuinfo_processors);
- cpuinfo_processors = NULL;
- cpuinfo_processors_count = 0;
-
- free(cpuinfo_cores);
- cpuinfo_cores = NULL;
- cpuinfo_cores_count = 0;
-
- free(cpuinfo_clusters);
- cpuinfo_clusters = NULL;
- cpuinfo_clusters_count = 0;
-
- free(cpuinfo_packages);
- cpuinfo_packages = NULL;
- cpuinfo_packages_count = 0;
-
- for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
- free(cpuinfo_cache[lvl]);
- cpuinfo_cache[lvl] = NULL;
- cpuinfo_cache_count[lvl] = 0;
- }
- cpuinfo_max_cache_size = 0;
-
- cpuinfo_global_uarch = (struct cpuinfo_uarch_info){0};
-}
diff --git a/src/x86/linux/init.c b/src/x86/linux/init.c
index 62e1187..d2b2d47 100644
--- a/src/x86/linux/init.c
+++ b/src/x86/linux/init.c
@@ -676,38 +676,3 @@
free(linux_cpu_to_processor_map);
free(linux_cpu_to_core_map);
}
-
-void cpuinfo_x86_linux_deinit(void) {
- free(cpuinfo_processors);
- cpuinfo_processors = NULL;
- cpuinfo_processors_count = 0;
-
- free(cpuinfo_cores);
- cpuinfo_cores = NULL;
- cpuinfo_cores_count = 0;
-
- free(cpuinfo_clusters);
- cpuinfo_clusters = NULL;
- cpuinfo_clusters_count = 0;
-
- free(cpuinfo_packages);
- cpuinfo_packages = NULL;
- cpuinfo_packages_count = 0;
-
- for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
- free(cpuinfo_cache[lvl]);
- cpuinfo_cache[lvl] = NULL;
- cpuinfo_cache_count[lvl] = 0;
- }
- cpuinfo_max_cache_size = 0;
-
- free(cpuinfo_linux_cpu_to_processor_map);
- cpuinfo_linux_cpu_to_processor_map = NULL;
-
- free(cpuinfo_linux_cpu_to_core_map);
- cpuinfo_linux_cpu_to_core_map = NULL;
-
- cpuinfo_linux_cpu_max = 0;
-
- cpuinfo_global_uarch = (struct cpuinfo_uarch_info){0};
-}
diff --git a/src/x86/mach/init.c b/src/x86/mach/init.c
index 9009e83..b8ea604 100644
--- a/src/x86/mach/init.c
+++ b/src/x86/mach/init.c
@@ -378,30 +378,3 @@
free(l3);
free(l4);
}
-
-void cpuinfo_x86_mach_deinit(void) {
- free(cpuinfo_processors);
- cpuinfo_processors = NULL;
- cpuinfo_processors_count = 0;
-
- free(cpuinfo_cores);
- cpuinfo_cores = NULL;
- cpuinfo_cores_count = 0;
-
- free(cpuinfo_clusters);
- cpuinfo_clusters = NULL;
- cpuinfo_clusters_count = 0;
-
- free(cpuinfo_packages);
- cpuinfo_packages = NULL;
- cpuinfo_packages_count = 0;
-
- for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
- free(cpuinfo_cache[lvl]);
- cpuinfo_cache[lvl] = NULL;
- cpuinfo_cache_count[lvl] = 0;
- }
- cpuinfo_max_cache_size = 0;
-
- cpuinfo_global_uarch = (struct cpuinfo_uarch_info){0};
-}
diff --git a/src/x86/windows/init.c b/src/x86/windows/init.c
index f1401be..7380bb4 100644
--- a/src/x86/windows/init.c
+++ b/src/x86/windows/init.c
@@ -665,39 +665,5 @@
if (l4 != NULL) {
HeapFree(heap, 0, l4);
}
- if (processor_infos != NULL) {
- HeapFree(heap, 0, processor_infos);
- }
- return TRUE;
-}
-
-BOOL CALLBACK cpuinfo_x86_windows_deinit(PINIT_ONCE init_once, PVOID parameter, PVOID* context) {
- HANDLE heap = GetProcessHeap();
-
- HeapFree(heap, 0, cpuinfo_processors);
- cpuinfo_processors = NULL;
- cpuinfo_processors_count = 0;
-
- HeapFree(heap, 0, cpuinfo_cores);
- cpuinfo_cores = NULL;
- cpuinfo_cores_count = 0;
-
- HeapFree(heap, 0, cpuinfo_clusters);
- cpuinfo_clusters = NULL;
- cpuinfo_clusters_count = 0;
-
- HeapFree(heap, 0, cpuinfo_packages);
- cpuinfo_packages = NULL;
- cpuinfo_packages_count = 0;
-
- for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
- HeapFree(heap, 0, cpuinfo_cache[lvl]);
- cpuinfo_cache[lvl] = NULL;
- cpuinfo_cache_count[lvl] = 0;
- }
- cpuinfo_max_cache_size = 0;
-
- cpuinfo_global_uarch = (struct cpuinfo_uarch_info){0};
-
return TRUE;
}