Skip to main content

simple_render/
memory.rs

1#[cfg(all(target_os = "linux", target_env = "gnu"))]
2pub fn tune_allocator_for_low_memory() {
3    unsafe {
4        let _ = mallopt(M_ARENA_MAX, 1);
5        let _ = mallopt(M_TRIM_THRESHOLD, 64 * 1024);
6        let _ = mallopt(M_TOP_PAD, 0);
7    }
8}
9
10#[cfg(not(all(target_os = "linux", target_env = "gnu")))]
11pub fn tune_allocator_for_low_memory() {}
12
13#[cfg(all(target_os = "linux", target_env = "gnu"))]
14pub fn trim_free_heap_pages() {
15    unsafe {
16        let _ = malloc_trim(0);
17    }
18}
19
20#[cfg(not(all(target_os = "linux", target_env = "gnu")))]
21pub fn trim_free_heap_pages() {}
22
23#[cfg(all(target_os = "linux", target_env = "gnu"))]
24unsafe extern "C" {
25    fn mallopt(param: i32, value: i32) -> i32;
26    fn malloc_trim(pad: usize) -> i32;
27}
28
29#[cfg(all(target_os = "linux", target_env = "gnu"))]
30const M_TRIM_THRESHOLD: i32 = -1;
31
32#[cfg(all(target_os = "linux", target_env = "gnu"))]
33const M_TOP_PAD: i32 = -2;
34
35#[cfg(all(target_os = "linux", target_env = "gnu"))]
36const M_ARENA_MAX: i32 = -8;