深入理解内核自定义 slab 缓存及调试方法
在 Linux 内核中,许多内核代码(包括众多驱动程序)会创建并使用自己的自定义 slab 缓存。例如,在 5.4.0 Linux 内核中,有超过 350 次调用了相关 API。下面我们将详细介绍如何创建、使用自定义 slab 缓存,以及如何进行调试。
自定义 slab 缓存的使用
当我们创建了自定义 slab 缓存后,就可以使用 kmem_cache_alloc() 来分配内存对象。该函数的签名如下:
void *kmem_cache_alloc(struct kmem_cache *s, gfp_t gfpflags);
- 参数说明 :
- 第一个参数是指向之前创建的自定义缓存的指针,即
kmem_cache_create()的返回值。 - 第二个参数是常见的 GFP 标志。对于正常的进程上下文分配,使用
GFP_KERNEL;如果处于原子或中断上下文,则使用GFP_ATOMIC。 - 返回值 :返回一个指向新分配内存块的指针,即内核逻辑地址。
使用完新分配的内存对象后,需要使用 kmem_cache_free() 释放它:
void k
超级会员免费看
订阅专栏 解锁全文
2814

被折叠的 条评论
为什么被折叠?



