繁体   English   中英

我可以在ARM Linux内核中叫kalloc多早?

[英]How early can I call kalloc in an arm linux kernel?

我想从我的arm linux内核中的machine_init函数动态分配内存。 但是,我的测试表明,调用kalloc有时会导致系统完全无法启动。

我的调试工具非常有限,因此我无法提供有关失败的更多信息。

简而言之,从ARM linux中的machine_init函数调用kalloc是否合法,如果没有,还有其他选择吗?

我了解到,在大多数情况下,在启动过程中尽早分配内存是错误的做法(这种工作应由设备驱动程序完成)。 但是,我坚信我的特定项目需要它。

我看不到从哪里调用machine_init,但我不禁以为您正在尝试做错事。

设备驱动程序和其他子系统有其自己的初始化时间,尽早尝试执行操作通常是一个错误(因为尚未开始所需的操作)。 您可以肯定在设备驱动程序初始化期间调用kmalloc(至少,大多数。也许控制台驱动程序是不同的)。

无论如何,ARM上的事实表明它是嵌入式系统,因此您不必处理许多不同的硬件。 您是否只能静态分配一个数组,其中包含可能需要的元素(如果超出则给出错误)?

Kmalloc是最顶层slab / slob / slub内存框架工作中的内核API。 一旦初始化了这些框架中的任何一个(内核使用的框架),kmalloc就可以正常工作。 在初始化slab / slob / slub之后确保您的呼叫

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM