39、深入理解内核自定义 slab 缓存及调试方法

深入理解内核自定义 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值