【发布时间】:2013-09-04 10:00:38
【问题描述】:
我尝试在谷歌和这个网站上搜索这个主题,但我找不到合适的答案。
我试图在 Linux 启动过程中在一个设置的物理地址分配一个大的连续内存块(几 MB)。但我仍然不清楚我应该把我的“alloc_bootmem”函数放在哪里。我在 ARM 处理器上运行 Linux。
AFAIK,有一种方法可以创建一个包含对“alloc_bootmem”调用的驱动程序,然后将该驱动程序直接编译到内核中。
另一种方法是在 Linux 内核源代码的某处添加“alloc_bootmem”。
我认为存在的最后一种方法是创建一个类似 boot.rc 的设置文件?(不确定)以便在引导 Linux 期间保留我想要分配的内存。
如果有明确的方法或链接到这个问题的答案,我真的很感谢大家的帮助。基本问题是“我应该在哪里调用“alloc_bootmem”,这样它才能在引导期间工作?”
谢谢, 沙里尔
【问题讨论】:
-
如果“设置”物理地址是由硬件决定的,那么还有第四种方法可以确保内核永远不会将该内存视为通用 RAM。让引导加载程序(例如 U-Boot)从 ATAG(或 DT)和/或内核命令行中提供给内核的内存列表中排除此物理内存区域。创建一个新的 ATAG(或 DT 条目)以将此保留的内存资源传递给将使用它的设备驱动程序。更多细节是here。
标签: linux memory-management linux-kernel