linux 内核 dump_page

本文介绍了在openEuler22.03LTS操作系统中,使用内核函数kmalloc和kzalloc进行内存分配的示例。通过代码展示如何动态分配不同大小的内存,并利用dump_page进行内存页信息的打印。实验中,作者使用了kzalloc分配4MB内存并进行了页面转换和信息输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作系统:openEuler 22.03 LTS

内核版本 5.10.0-60.18.0.50.oe2203.x86_64

#include <linux/init.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/mmdebug.h>
//#include <asm-generic/page.h>
#include <linux/mm.h>
static int *p = NULL;

static int __init kmalloc_test_init(void)
{
	//p = kmalloc(PAGE_SIZE, GFP_KERNEL);		
	//printk(KERN_INFO "address: %p\n", p);
	
	//p = kmalloc_array(1025, 4 * 1024, GFP_KERNEL);
	struct page *page;
	p = kzalloc(4 * 1024 * 1024, GFP_KERNEL);
	page = virt_to_page(p);
	printk(KERN_INFO "address: %p\n", p);
	dump_page(page, "hyq - test");
	return 0;
}

static void __exit kmalloc_test_exit(void)
{
	printk("exit\n");
	if (p != NULL)
		kfree(p);
}

module_init(kmalloc_test_init);
module_exit(kmalloc_test_exit);
MODULE_LICENSE("GPL");

Makefile

obj-m+=kmalloc_test.o
CONFIG_MODULE_SIG=n
all:
	make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
clean:
	make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值