您的位置:首页 > 运维架构 > Linux

如何在linux内核中保留一块内存不被系统分配

2013-08-29 17:14 232 查看
要想在内核中保留一个块内存,不被系统分配,而是只由自己使用,可以使用以下函数

reserve_bootmem(addr,size,flag)

这个函数的三个参数,addr是你要保留的地址,size就是要保留的大小,flag是标志位,要来确定是否检查你要保留的空间是否已经被保留了,它可以设置为两个值,BOOTMEM_DEFAULT和BOOTMEM_EXCLUSIVE,前者就是总是会返回0(也就是保留成功),而后者则会检查你所要保留的空间是否已经被保留了,若已经被保留了,则它返回失败(负数)

那么这个函数一般放在哪里使用过了,我们建议放到内核init/main.c中,在页表的建立之前进行保留,比如我们下面的代码,放在main中的start_kernel函数中,我们的内核是2.6.32

asmlinkage void __init start_kernel(void)

{

……

……

trap_init();

if(reserve_bootmem(0x41000000,0x100000,BOOTMEM_EXCLUSIVE) != 0){

printk("reserve fail----\n");

}

printk("we reserve boot meme of 0x41000000 for gps---------------------------------\n");

mm_init();

……

……

}

这样就保留了一个起始地址为0x41000000,大小为1M的空间

转自:http://hi.baidu.com/xdyang1986/item/4a496235fc0c694b3075a1c9
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: