From e7cbbbfb1417c8c4cc0855f081d1c29a64023ab5 Mon Sep 17 00:00:00 2001 From: Daan Leijen Date: Sat, 7 Jun 2025 09:51:35 -0700 Subject: [PATCH] add mi_process_done to the api --- include/mimalloc.h | 14 +++++++++----- src/init.c | 6 +++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/include/mimalloc.h b/include/mimalloc.h index 97cf7856..ce814d18 100644 --- a/include/mimalloc.h +++ b/include/mimalloc.h @@ -153,17 +153,21 @@ mi_decl_export void mi_stats_reset(void) mi_attr_noexcept; mi_decl_export void mi_stats_merge(void) mi_attr_noexcept; mi_decl_export void mi_stats_print(void* out) mi_attr_noexcept; // backward compatibility: `out` is ignored and should be NULL mi_decl_export void mi_stats_print_out(mi_output_fun* out, void* arg) mi_attr_noexcept; -mi_decl_export void mi_options_print(void) mi_attr_noexcept; - -mi_decl_export void mi_process_init(void) mi_attr_noexcept; -mi_decl_export void mi_thread_init(void) mi_attr_noexcept; -mi_decl_export void mi_thread_done(void) mi_attr_noexcept; mi_decl_export void mi_thread_stats_print_out(mi_output_fun* out, void* arg) mi_attr_noexcept; +mi_decl_export void mi_options_print(void) mi_attr_noexcept; mi_decl_export void mi_process_info(size_t* elapsed_msecs, size_t* user_msecs, size_t* system_msecs, size_t* current_rss, size_t* peak_rss, size_t* current_commit, size_t* peak_commit, size_t* page_faults) mi_attr_noexcept; + +// Generally do not use the following as these are usually called automatically +mi_decl_export void mi_process_init(void) mi_attr_noexcept; +mi_decl_export void mi_cdecl mi_process_done(void) mi_attr_noexcept; +mi_decl_export void mi_thread_init(void) mi_attr_noexcept; +mi_decl_export void mi_thread_done(void) mi_attr_noexcept; + + // ------------------------------------------------------------------------------------- // Aligned allocation // Note that `alignment` always follows `size` for consistency with unaligned diff --git a/src/init.c b/src/init.c index 05ff688e..eb87ab3c 100644 --- a/src/init.c +++ b/src/init.c @@ -642,7 +642,11 @@ void mi_process_init(void) mi_attr_noexcept { } } -// Called when the process is done (through `at_exit`) +void mi_cdecl mi_process_done(void) mi_attr_noexcept { + _mi_process_done(); +} + +// Called when the process is done (cdecl as it is used with `at_exit` on some platforms) void mi_cdecl _mi_process_done(void) { // only shutdown if we were initialized if (!_mi_process_is_initialized) return;