40、Linux内核内存分配:页面分配器与GFP标志详解

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 内核模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值