我想从我的 arm linux 内核中的 machine_init 函数动态分配内存。但是,我的测试表明调用 kalloc 有时会导致系统完全无法启动。
我的调试工具非常有限,所以我无法提供有关失败的更多信息。
简单地说,在 ARM linux 中从 machine_init
函数调用 kalloc
是否合法,如果不合法,是否有替代方案?
我知道在大多数情况下,在引导过程的早期就分配内存是错误的(这种工作应该由设备驱动程序完成);但是,我确信我的特定项目需要它。
最佳答案
我看不到从哪里调用 machine_init,但我不禁认为你在尝试做错事。
设备驱动程序和其他子系统有自己的初始化时间,尝试过早地做事通常是错误的(因为需要的东西还没有开始)。您绝对可以在设备驱动程序初始化期间调用 kmalloc(至少,大多数情况下是这样。也许控制台驱动程序不同)。
无论如何,您在 ARM 上的事实表明它是一个嵌入式系统,因此您不太可能需要处理很多不同的硬件。你不能静态地分配一个包含尽可能多的元素的数组吗(如果超过就报错)?
关于linux - 我多早可以在 arm linux 内核中调用 kalloc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2527671/