Function jemalloc_ctl::raw::name_to_mib

source ·
pub fn name_to_mib(name: &[u8], mib: &mut [usize]) -> Result<()>
Expand description

Translates name to a mib (Management Information Base)

mibs are used to avoid repeated name lookups for applications that repeatedly query the same portion of jemallocs mallctl namespace.

On success, mib contains an array of integers. It is possible to pass mib with a length smaller than the number of period-separated name components. This results in a partial MIB that can be used as the basis for constructing a complete MIB.

For name components that are integers (e.g. the 2 in arenas.bin.2.size), the corresponding MIB component will always be that integer. Therefore, it is legitimate to construct code like the following:

#[global_allocator]
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;

fn main() {
    use jemalloc_ctl::raw;
    use libc::{c_uint, c_char};
    unsafe {
        let mut mib = [0; 4];
        let nbins: c_uint = raw::read(b"arenas.nbins\0").unwrap();
        raw::name_to_mib(b"arenas.bin.0.size\0", &mut mib).unwrap();
        for i in 0..4 {
            mib[2] = i;
            let bin_size: usize = raw::read_mib(&mut mib).unwrap();
            println!("arena bin {} has size {}", i, bin_size);
        }
    }
}