在網上搜了很久,才慢慢了解在開機保留內存的方法,現在總結一下這階段的學習過程!(我是在ARM板子上進行的實驗,內核版本是2.6.38)
linux cp命令、在開機保留內存的方式一共有三種方法:
1.?reserve_bootmem(addr,size,flag)
簡述在虛擬機中安裝centos7的過程?這種方法,我做實驗一直沒有成功...
2.?alloc_bootmem(size)
mem命令,其實還是比較簡單的,在int/main.c中:
//設置全局變量
char* reserve_memory;
EXPORT_SYMBOL_GPL(reserve_memory);
void __init start_kernel()
{
...
trap_init();
//在此添加代碼,在zone保留40M的內存
reserve_memory = alloc_bootmem(0x2800000);
mem_init();
...
}
但在內核中得到reserve_memory之后,可以在內核空間中直接使用
3. 開機時設置Linux 內核參數
mem=180M ? /* 開機時只給系統180M的內存空間,其余都保留 */
這種方法最為簡單,但是設置和使用的時候,需要和硬件內存物理大小相適應。
在內核驅動中,可以以ioremap()的方式映射到內核空間中,或者再mmap()到用戶空間中讀寫。
這種方法我沒有嘗試,不知道能不能用
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态