35、深入理解 Linux 内核内存分配器

深入理解 Linux 内核内存分配器

1. 内核代码中的 goto 语句与内存清理

在代码里,使用了多个局部 goto 语句。仔细观察会发现,它能让错误处理代码路径保持清晰和符合逻辑,这也是 Linux 内核编码风格指南的一部分。关于 goto 语句的使用说明可参考:https://www.kernel.org/doc/html/v5.4/process/coding-style.html#centralized-exiting-of-functions 。理解其使用模式后,会发现它有助于减少常见的内存泄漏等清理错误。

在清理方法中,在从内核内存移除之前,要释放内核模块清理代码中刚分配的所有内存块。

为了将库 klib_llkd 代码与 lowlevel_mem 内核模块链接,Makefile 需做如下更改:

PWD                   := $(shell pwd)
obj-m                 += lowlevel_mem_lkm.o
lowlevel_mem_lkm-objs := lowlevel_mem.o ../../klib_lkdc.o
EXTRA_CFLAGS          += -DDEBUG

在示例 LKM 中,常使用 %px 打印格式说明符,以便查看实际虚拟地址而非哈希值(内核安全特性),不过在生产环境中不要这么做。

2. 部署 lowlevel_mem_lkm 内核模块

现在来让内核模块运行起来,将在树莓派 4(运行默认树莓派操作系统)和 x86_64

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值