1#[cfg(not(feature = "heap"))]
2#[cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))]
3extern "C" {
4 fn mi_option_set_enabled(_: mi_option_e, val: bool);
5}
6
7#[cfg(not(feature = "heap"))]
8#[cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))]
9#[allow(non_camel_case_types)]
10#[allow(dead_code)]
11#[repr(C)]
12enum mi_option_e {
13 mi_option_show_errors, mi_option_show_stats, mi_option_verbose, mi_option_eager_commit, mi_option_arena_eager_commit, mi_option_purge_decommits, mi_option_allow_large_os_pages, mi_option_reserve_huge_os_pages, mi_option_reserve_huge_os_pages_at, mi_option_reserve_os_memory, mi_option_deprecated_segment_cache,
26 mi_option_deprecated_page_reset,
27 mi_option_abandoned_page_purge, mi_option_deprecated_segment_reset,
29 mi_option_eager_commit_delay,
30 mi_option_purge_delay, mi_option_use_numa_nodes, mi_option_limit_os_alloc, mi_option_os_tag, mi_option_max_errors, mi_option_max_warnings, mi_option_max_segment_reclaim,
37 mi_option_destroy_on_exit, mi_option_arena_reserve, mi_option_arena_purge_mult,
40 mi_option_purge_extend_delay,
41 _mi_option_last,
42}
43
44#[cfg(not(feature = "heap"))]
45use mimalloc::MiMalloc;
46#[cfg(not(feature = "heap"))]
47#[global_allocator]
48static GLOBAL: MiMalloc = MiMalloc;
49
50pub fn init_allocator_with_default_settings() {
51 #[cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))]
52 #[cfg(not(feature = "heap"))]
53 unsafe {
54 mi_option_set_enabled(mi_option_e::mi_option_purge_decommits, false)
56 };
57}