const struct kmalloc_info_struct kmalloc_info[] __initconst = { {NULL, 0}, {"kmalloc-96", 96}, {"kmalloc-192", 192}, {"kmalloc-8", 8}, {"kmalloc-16", 16}, {"kmalloc-32", 32}, {"kmalloc-64", 64}, {"kmalloc-128", 128}, {"kmalloc-256", 256}, {"kmalloc-512", 512...
#define INIT_KMALLOC_INFO(__size, __short_size) \ { \ .name[KMALLOC_NORMAL] = "kmalloc-" #__short_size, \ .name[KMALLOC_RECLAIM] = "kmalloc-rcl-" #__short_size, \ KMALLOC_CGROUP_NAME(__short_size) \ KMALLOC_DMA_NAME(__short_size) \ .size = __size, \ } /* * kmalloc_...
如果我们创建的是 KMALLOC_RECLAIM 类型的 kmalloc 内存池,那么其下所管理的各种尺寸的 slab cache 名称需要加上kmalloc-rcl前缀。 最后调用 create_kmalloc_cache 根据 kmalloc_info[idx].size 和 kmalloc_info[idx].name 指定的尺寸和名称创建 slab cache。关于 slab cache 的详细创建过程,感兴趣的同学可以回看下...
如果我们创建的是 KMALLOC_RECLAIM 类型的 kmalloc 内存池,那么其下所管理的各种尺寸的 slab cache 名称需要加上kmalloc-rcl前缀。 最后调用 create_kmalloc_cache 根据 kmalloc_info[idx].size 和 kmalloc_info[idx].name 指定的尺寸和名称创建 slab cache。关于 slab cache 的详细创建过程,感兴趣的同学可以回看下...
size_index[16] 存储的信息表示,如果内核申请的内存块在 128 字节到 136 字节之间时,那么 kmalloc 将会到 kmalloc_info[2] 所指定的通用 slab cache —— kmalloc-192 中分配一个 192 字节大小的内存块。 同样的道理,申请 144,152,160 ... 192 等字节尺寸的内存块对应的最佳 slab cache 选取规则也是如此,...
同理,当内核申请一个尺寸在 128 字节到 192 字节之间的内存块时,内核会直接从 kmalloc-256 中分配一个 256 字节大小的内存块。 当内核申请超过 256 字节的内存块时,一般都是会按照 2 的次幂来申请的,所以这里只需要单独支持 kmalloc-96 和 kmalloc-192 即可。