当前位置:首页 > 内存 > 正文

linux预留内存访问

  • 内存
  • 2024-08-29 23:36:11
  • 5455

一、如何在linux内核中保留一块内存不被系统分配如果你想在内核中保留一块不是系统分配的、仅供自己使用的内存,可以使用下面的函数
reserve_bootmem(addr,size,flag)
该函数的三个参数,addr是你要预留的地址,size是你要预留的大小,flag是标志位,决定是否检查你要预订的空间是否已被预订。它是可以被定义的。有两个值:BOOTMEM_DEFAULT和BOOTMEM_EXCLUSIVE。第一个是总数。它会返回0(即预订成功),第二个会检查你要预订的空间是否已被预订。将返回失败(负数)
然后这些函数通常放在它们使用的地方。我们建议将它们放在coreinit/main.c中,并在建立页表之前将它们保留在那里。例如,我们下面的代码放置在main中的start_kernel函数中。我们的内核是2.6.32
asmlinkagevoid__initstart_kernel(void)
{
……
……
trap_init();
if(reserve_bootmem(0x41000000,0x100000,BOOTMEM_EXCLUSIVE)!=0){
printk("reservefail----\n");
}
printk("wereservebootmemeof0x41000000forgps---------------------------------\n");
mm_init();
……
……
}
这样就预留了一块起始地址为0x41000000、大小为1M的空间。
二、linuxmalloc分配的内存无法访问内存或数据故障。
1.由于内存故障,linuxmalloc分配的内存无法访问。
2。之前的程序中出现了内存访问受限的问题,导致linuxmalloc函数中分配的一些信息被删除。