Linux内核内存分配:页面分配器与GFP标志详解
1. 内核模块内存分配代码实现
在之前的代码片段中,我们结合了封装在 page_address() API内的 alloc_pages() 来分配 $2^3 = 8$ 页的内存。代码中使用了几个局部 goto 语句,仔细观察会发现,它能让错误处理代码路径保持清晰和逻辑连贯,这也是Linux内核编码风格指南的一部分。
在清理方法中,在从内核内存中移除之前,我们会释放内核模块清理代码中刚刚分配的所有内存块。
为了将库 klib 代码与 lowlevel_mem_lkm 内核模块链接起来, Makefile 需要做如下更改:
FNAME_C := lowlevel_mem
[ ... ]
PWD := $(shell pwd)
obj-m += ${FNAME_C}_lkm.o
lowlevel_mem_lkm-objs := ${FNAME_C}.o ../../klib.o
2. 部署 lowlevel_mem_lkm 内核模块
接下来,我们将在树莓派4(运行32位默认树莓派操作系统)和x86_64虚拟机(运行Ubuntu 22.04 LTS)上构建并部署 ch8/lowlevel_mem 内核模块。
超级会员免费看
订阅专栏 解锁全文
39

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



