深入理解 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
超级会员免费看
订阅专栏 解锁全文

193

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



