Skip to content

Commit b1a5d63

Browse files
authored
Revert "Implement cpuinfo_deinitialize() to free heap-allocated globals (#387)" (#411)
This reverts commit 4628dc0.
1 parent 69e20fa commit b1a5d63

11 files changed

Lines changed: 1 addition & 363 deletions

File tree

src/arm/linux/init.c

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,43 +1001,3 @@ void cpuinfo_arm_linux_init(void) {
10011001
free(linux_cpu_to_core_map);
10021002
free(linux_cpu_to_uarch_index_map);
10031003
}
1004-
1005-
void cpuinfo_arm_linux_deinit(void) {
1006-
free(cpuinfo_processors);
1007-
cpuinfo_processors = NULL;
1008-
cpuinfo_processors_count = 0;
1009-
1010-
free(cpuinfo_cores);
1011-
cpuinfo_cores = NULL;
1012-
cpuinfo_cores_count = 0;
1013-
1014-
free(cpuinfo_clusters);
1015-
cpuinfo_clusters = NULL;
1016-
cpuinfo_clusters_count = 0;
1017-
1018-
/* cpuinfo_packages points to static storage (&package) — do not free */
1019-
cpuinfo_packages = NULL;
1020-
cpuinfo_packages_count = 0;
1021-
1022-
free(cpuinfo_uarchs);
1023-
cpuinfo_uarchs = NULL;
1024-
cpuinfo_uarchs_count = 0;
1025-
1026-
for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
1027-
free(cpuinfo_cache[lvl]);
1028-
cpuinfo_cache[lvl] = NULL;
1029-
cpuinfo_cache_count[lvl] = 0;
1030-
}
1031-
cpuinfo_max_cache_size = 0;
1032-
1033-
free(cpuinfo_linux_cpu_to_processor_map);
1034-
cpuinfo_linux_cpu_to_processor_map = NULL;
1035-
1036-
free(cpuinfo_linux_cpu_to_core_map);
1037-
cpuinfo_linux_cpu_to_core_map = NULL;
1038-
1039-
free((void*)cpuinfo_linux_cpu_to_uarch_index_map);
1040-
cpuinfo_linux_cpu_to_uarch_index_map = NULL;
1041-
1042-
cpuinfo_linux_cpu_max = 0;
1043-
}

src/arm/mach/init.c

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -755,32 +755,3 @@ void cpuinfo_arm_mach_init(void) {
755755
free(l2);
756756
free(l3);
757757
}
758-
759-
void cpuinfo_arm_mach_deinit(void) {
760-
free(cpuinfo_processors);
761-
cpuinfo_processors = NULL;
762-
cpuinfo_processors_count = 0;
763-
764-
free(cpuinfo_cores);
765-
cpuinfo_cores = NULL;
766-
cpuinfo_cores_count = 0;
767-
768-
free(cpuinfo_clusters);
769-
cpuinfo_clusters = NULL;
770-
cpuinfo_clusters_count = 0;
771-
772-
free(cpuinfo_packages);
773-
cpuinfo_packages = NULL;
774-
cpuinfo_packages_count = 0;
775-
776-
free(cpuinfo_uarchs);
777-
cpuinfo_uarchs = NULL;
778-
cpuinfo_uarchs_count = 0;
779-
780-
for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
781-
free(cpuinfo_cache[lvl]);
782-
cpuinfo_cache[lvl] = NULL;
783-
cpuinfo_cache_count[lvl] = 0;
784-
}
785-
cpuinfo_max_cache_size = 0;
786-
}

src/arm/windows/init-by-logical-sys-info.c

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -372,40 +372,6 @@ bool cpu_info_init_by_logical_sys_info(const struct woa_chip_info* chip_info, co
372372
return result;
373373
}
374374

375-
BOOL CALLBACK cpuinfo_arm_windows_deinit(PINIT_ONCE init_once, PVOID parameter, PVOID* context) {
376-
HANDLE heap = GetProcessHeap();
377-
378-
HeapFree(heap, 0, cpuinfo_processors);
379-
cpuinfo_processors = NULL;
380-
cpuinfo_processors_count = 0;
381-
382-
HeapFree(heap, 0, cpuinfo_packages);
383-
cpuinfo_packages = NULL;
384-
cpuinfo_packages_count = 0;
385-
386-
HeapFree(heap, 0, cpuinfo_clusters);
387-
cpuinfo_clusters = NULL;
388-
cpuinfo_clusters_count = 0;
389-
390-
HeapFree(heap, 0, cpuinfo_cores);
391-
cpuinfo_cores = NULL;
392-
cpuinfo_cores_count = 0;
393-
394-
HeapFree(heap, 0, cpuinfo_uarchs);
395-
cpuinfo_uarchs = NULL;
396-
cpuinfo_uarchs_count = 0;
397-
398-
/* Caches are allocated as a single contiguous block starting at l1i */
399-
HeapFree(heap, 0, cpuinfo_cache[cpuinfo_cache_level_1i]);
400-
for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
401-
cpuinfo_cache[lvl] = NULL;
402-
cpuinfo_cache_count[lvl] = 0;
403-
}
404-
cpuinfo_max_cache_size = 0;
405-
406-
return TRUE;
407-
}
408-
409375
static uint32_t count_logical_processors(const uint32_t max_group_count, uint32_t* global_proc_index_per_group) {
410376
uint32_t nr_of_processors = 0;
411377

src/cpuinfo/internal-api.h

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,6 @@ extern CPUINFO_INTERNAL struct cpuinfo_uarch_info cpuinfo_global_uarch;
4545
extern CPUINFO_INTERNAL uint32_t cpuinfo_linux_cpu_max;
4646
extern CPUINFO_INTERNAL const struct cpuinfo_processor** cpuinfo_linux_cpu_to_processor_map;
4747
extern CPUINFO_INTERNAL const struct cpuinfo_core** cpuinfo_linux_cpu_to_core_map;
48-
#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64 || CPUINFO_ARCH_RISCV32 || CPUINFO_ARCH_RISCV64
49-
extern CPUINFO_INTERNAL const uint32_t* cpuinfo_linux_cpu_to_uarch_index_map;
50-
#endif
5148
#endif
5249

5350
CPUINFO_PRIVATE void cpuinfo_x86_mach_init(void);
@@ -65,23 +62,6 @@ CPUINFO_PRIVATE void cpuinfo_arm_linux_init(void);
6562
CPUINFO_PRIVATE void cpuinfo_riscv_linux_init(void);
6663
CPUINFO_PRIVATE void cpuinfo_emscripten_init(void);
6764

68-
/* Platform-specific deinitialization functions.
69-
* Each frees the globals allocated by its corresponding init function. */
70-
CPUINFO_PRIVATE void cpuinfo_x86_mach_deinit(void);
71-
CPUINFO_PRIVATE void cpuinfo_x86_linux_deinit(void);
72-
CPUINFO_PRIVATE void cpuinfo_x86_freebsd_deinit(void);
73-
#if defined(_WIN32) || defined(__CYGWIN__)
74-
#if CPUINFO_ARCH_ARM64
75-
CPUINFO_PRIVATE BOOL CALLBACK cpuinfo_arm_windows_deinit(PINIT_ONCE init_once, PVOID parameter, PVOID* context);
76-
#else
77-
CPUINFO_PRIVATE BOOL CALLBACK cpuinfo_x86_windows_deinit(PINIT_ONCE init_once, PVOID parameter, PVOID* context);
78-
#endif
79-
#endif
80-
CPUINFO_PRIVATE void cpuinfo_arm_mach_deinit(void);
81-
CPUINFO_PRIVATE void cpuinfo_arm_linux_deinit(void);
82-
CPUINFO_PRIVATE void cpuinfo_riscv_linux_deinit(void);
83-
CPUINFO_PRIVATE void cpuinfo_emscripten_deinit(void);
84-
8565
CPUINFO_PRIVATE uint32_t cpuinfo_compute_max_cache_size(const struct cpuinfo_processor* processor);
8666

8767
typedef void (*cpuinfo_processor_callback)(uint32_t);

src/emscripten/init.c

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -286,35 +286,3 @@ void cpuinfo_emscripten_init(void) {
286286
free(l1d);
287287
free(l2);
288288
}
289-
290-
void cpuinfo_emscripten_deinit(void) {
291-
free(cpuinfo_processors);
292-
cpuinfo_processors = NULL;
293-
cpuinfo_processors_count = 0;
294-
295-
free(cpuinfo_cores);
296-
cpuinfo_cores = NULL;
297-
cpuinfo_cores_count = 0;
298-
299-
free(cpuinfo_clusters);
300-
cpuinfo_clusters = NULL;
301-
cpuinfo_clusters_count = 0;
302-
303-
/* cpuinfo_packages points to static storage (&static_package) — do not free */
304-
cpuinfo_packages = NULL;
305-
cpuinfo_packages_count = 0;
306-
307-
/* L1i, L1d, L2 are dynamically allocated; L3 may point to static
308-
* storage (&static_x86_l3) so only free levels that were calloc'd */
309-
free(cpuinfo_cache[cpuinfo_cache_level_1i]);
310-
free(cpuinfo_cache[cpuinfo_cache_level_1d]);
311-
free(cpuinfo_cache[cpuinfo_cache_level_2]);
312-
/* cpuinfo_cache[cpuinfo_cache_level_3] may be &static_x86_l3 — do not free */
313-
for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
314-
cpuinfo_cache[lvl] = NULL;
315-
cpuinfo_cache_count[lvl] = 0;
316-
}
317-
cpuinfo_max_cache_size = 0;
318-
319-
cpuinfo_global_uarch = (struct cpuinfo_uarch_info){0};
320-
}

src/init.c

Lines changed: 1 addition & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,10 @@
1414

1515
#if defined(_WIN32) || defined(__CYGWIN__)
1616
static INIT_ONCE init_guard = INIT_ONCE_STATIC_INIT;
17-
static INIT_ONCE deinit_guard = INIT_ONCE_STATIC_INIT;
1817
#elif !defined(__EMSCRIPTEN__) || defined(__EMSCRIPTEN_PTHREADS__)
1918
static pthread_once_t init_guard = PTHREAD_ONCE_INIT;
20-
static pthread_once_t deinit_guard = PTHREAD_ONCE_INIT;
2119
#else
2220
static bool init_guard = false;
23-
static bool deinit_guard = false;
2421
#endif
2522

2623
bool CPUINFO_ABI cpuinfo_initialize(void) {
@@ -67,52 +64,4 @@ bool CPUINFO_ABI cpuinfo_initialize(void) {
6764
return cpuinfo_is_initialized;
6865
}
6966

70-
void CPUINFO_ABI cpuinfo_deinitialize(void) {
71-
if (!cpuinfo_is_initialized) {
72-
return;
73-
}
74-
cpuinfo_is_initialized = false;
75-
#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
76-
#if defined(__MACH__) && defined(__APPLE__)
77-
pthread_once(&deinit_guard, &cpuinfo_x86_mach_deinit);
78-
#elif defined(__FreeBSD__)
79-
pthread_once(&deinit_guard, &cpuinfo_x86_freebsd_deinit);
80-
#elif defined(__linux__)
81-
pthread_once(&deinit_guard, &cpuinfo_x86_linux_deinit);
82-
#elif defined(_WIN32) || defined(__CYGWIN__)
83-
InitOnceExecuteOnce(&deinit_guard, &cpuinfo_x86_windows_deinit, NULL, NULL);
84-
#endif
85-
#elif CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
86-
#if defined(__linux__)
87-
pthread_once(&deinit_guard, &cpuinfo_arm_linux_deinit);
88-
#elif defined(__MACH__) && defined(__APPLE__)
89-
pthread_once(&deinit_guard, &cpuinfo_arm_mach_deinit);
90-
#elif defined(_WIN32)
91-
InitOnceExecuteOnce(&deinit_guard, &cpuinfo_arm_windows_deinit, NULL, NULL);
92-
#endif
93-
#elif CPUINFO_ARCH_RISCV32 || CPUINFO_ARCH_RISCV64
94-
#if defined(__linux__)
95-
pthread_once(&deinit_guard, &cpuinfo_riscv_linux_deinit);
96-
#endif
97-
#elif CPUINFO_ARCH_ASMJS || CPUINFO_ARCH_WASM || CPUINFO_ARCH_WASMSIMD
98-
#if defined(__EMSCRIPTEN_PTHREADS__)
99-
pthread_once(&deinit_guard, &cpuinfo_emscripten_deinit);
100-
#else
101-
if (!deinit_guard) {
102-
cpuinfo_emscripten_deinit();
103-
}
104-
deinit_guard = true;
105-
#endif
106-
#endif
107-
/* Reset guards to allow re-initialization */
108-
#if defined(_WIN32) || defined(__CYGWIN__)
109-
init_guard = (INIT_ONCE)INIT_ONCE_STATIC_INIT;
110-
deinit_guard = (INIT_ONCE)INIT_ONCE_STATIC_INIT;
111-
#elif !defined(__EMSCRIPTEN__) || defined(__EMSCRIPTEN_PTHREADS__)
112-
init_guard = (pthread_once_t)PTHREAD_ONCE_INIT;
113-
deinit_guard = (pthread_once_t)PTHREAD_ONCE_INIT;
114-
#else
115-
init_guard = false;
116-
deinit_guard = false;
117-
#endif
118-
}
67+
void CPUINFO_ABI cpuinfo_deinitialize(void) {}

src/riscv/linux/init.c

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -618,36 +618,3 @@ void cpuinfo_riscv_linux_init(void) {
618618
free(linux_cpu_to_core_map);
619619
free(linux_cpu_to_uarch_index_map);
620620
}
621-
622-
void cpuinfo_riscv_linux_deinit(void) {
623-
free(cpuinfo_processors);
624-
cpuinfo_processors = NULL;
625-
cpuinfo_processors_count = 0;
626-
627-
free(cpuinfo_cores);
628-
cpuinfo_cores = NULL;
629-
cpuinfo_cores_count = 0;
630-
631-
free(cpuinfo_clusters);
632-
cpuinfo_clusters = NULL;
633-
cpuinfo_clusters_count = 0;
634-
635-
free(cpuinfo_packages);
636-
cpuinfo_packages = NULL;
637-
cpuinfo_packages_count = 0;
638-
639-
free(cpuinfo_uarchs);
640-
cpuinfo_uarchs = NULL;
641-
cpuinfo_uarchs_count = 0;
642-
643-
free(cpuinfo_linux_cpu_to_processor_map);
644-
cpuinfo_linux_cpu_to_processor_map = NULL;
645-
646-
free(cpuinfo_linux_cpu_to_core_map);
647-
cpuinfo_linux_cpu_to_core_map = NULL;
648-
649-
free((void*)cpuinfo_linux_cpu_to_uarch_index_map);
650-
cpuinfo_linux_cpu_to_uarch_index_map = NULL;
651-
652-
cpuinfo_linux_cpu_max = 0;
653-
}

src/x86/freebsd/init.c

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -396,30 +396,3 @@ void cpuinfo_x86_freebsd_init(void) {
396396
free(l3);
397397
free(l4);
398398
}
399-
400-
void cpuinfo_x86_freebsd_deinit(void) {
401-
free(cpuinfo_processors);
402-
cpuinfo_processors = NULL;
403-
cpuinfo_processors_count = 0;
404-
405-
free(cpuinfo_cores);
406-
cpuinfo_cores = NULL;
407-
cpuinfo_cores_count = 0;
408-
409-
free(cpuinfo_clusters);
410-
cpuinfo_clusters = NULL;
411-
cpuinfo_clusters_count = 0;
412-
413-
free(cpuinfo_packages);
414-
cpuinfo_packages = NULL;
415-
cpuinfo_packages_count = 0;
416-
417-
for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
418-
free(cpuinfo_cache[lvl]);
419-
cpuinfo_cache[lvl] = NULL;
420-
cpuinfo_cache_count[lvl] = 0;
421-
}
422-
cpuinfo_max_cache_size = 0;
423-
424-
cpuinfo_global_uarch = (struct cpuinfo_uarch_info){0};
425-
}

src/x86/linux/init.c

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -676,38 +676,3 @@ void cpuinfo_x86_linux_init(void) {
676676
free(linux_cpu_to_processor_map);
677677
free(linux_cpu_to_core_map);
678678
}
679-
680-
void cpuinfo_x86_linux_deinit(void) {
681-
free(cpuinfo_processors);
682-
cpuinfo_processors = NULL;
683-
cpuinfo_processors_count = 0;
684-
685-
free(cpuinfo_cores);
686-
cpuinfo_cores = NULL;
687-
cpuinfo_cores_count = 0;
688-
689-
free(cpuinfo_clusters);
690-
cpuinfo_clusters = NULL;
691-
cpuinfo_clusters_count = 0;
692-
693-
free(cpuinfo_packages);
694-
cpuinfo_packages = NULL;
695-
cpuinfo_packages_count = 0;
696-
697-
for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
698-
free(cpuinfo_cache[lvl]);
699-
cpuinfo_cache[lvl] = NULL;
700-
cpuinfo_cache_count[lvl] = 0;
701-
}
702-
cpuinfo_max_cache_size = 0;
703-
704-
free(cpuinfo_linux_cpu_to_processor_map);
705-
cpuinfo_linux_cpu_to_processor_map = NULL;
706-
707-
free(cpuinfo_linux_cpu_to_core_map);
708-
cpuinfo_linux_cpu_to_core_map = NULL;
709-
710-
cpuinfo_linux_cpu_max = 0;
711-
712-
cpuinfo_global_uarch = (struct cpuinfo_uarch_info){0};
713-
}

src/x86/mach/init.c

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -378,30 +378,3 @@ void cpuinfo_x86_mach_init(void) {
378378
free(l3);
379379
free(l4);
380380
}
381-
382-
void cpuinfo_x86_mach_deinit(void) {
383-
free(cpuinfo_processors);
384-
cpuinfo_processors = NULL;
385-
cpuinfo_processors_count = 0;
386-
387-
free(cpuinfo_cores);
388-
cpuinfo_cores = NULL;
389-
cpuinfo_cores_count = 0;
390-
391-
free(cpuinfo_clusters);
392-
cpuinfo_clusters = NULL;
393-
cpuinfo_clusters_count = 0;
394-
395-
free(cpuinfo_packages);
396-
cpuinfo_packages = NULL;
397-
cpuinfo_packages_count = 0;
398-
399-
for (int lvl = 0; lvl < cpuinfo_cache_level_max; ++lvl) {
400-
free(cpuinfo_cache[lvl]);
401-
cpuinfo_cache[lvl] = NULL;
402-
cpuinfo_cache_count[lvl] = 0;
403-
}
404-
cpuinfo_max_cache_size = 0;
405-
406-
cpuinfo_global_uarch = (struct cpuinfo_uarch_info){0};
407-
}

0 commit comments

Comments
 (0)