Linux下分配G级物理内存的方法-alloc_bootmem()


2.6.22.9的Linux内核
使用alloc_bootmem函数
在内核代码  init/main.c文件中
  1. asmlinkage void __init start_kernel(void)  
  2. {  
  3.         char * command_line;  
  4.         extern struct kernel_param __start___param[], __stop___param[];  
  5.         .  
  6.         .  
  7.         .  
  8.         cpuset_init_early();  
  9.         yy_p = alloc_bootmem(500000000);//yy_p在开始时定义   
  10.         if (!yy_p)  
  11.         {  
  12.                 printk("yy: alloc error!\n");  
  13.         }  
  14.         else  
  15.         {  
  16.                 printk("yy: alloc success! \n");  
  17.         }  
  18.         //一定要在mem_init函数前   
  19.         mem_init();  
  20.         .  
  21.         .  
  22.         .  
  23. }  

重新编译内核

这样,进系统后cat /proc/meminfo 就会发现自己的物理内存少了500M

只要把yy_p这个指针EXPORT_SYMBOL后,内核的驱动程序就可以访问500M内存了

相关内容