linux - 我多早可以在 arm linux 内核中调用 kalloc?

标签 linux arm boot

我想从我的 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/

相关文章:

assembly - ARM 汇编循环

在 RPi3 上创建从 ARM 到 VideoCore 的 C 缓冲区

c++ - 从两个 96 位数字生成唯一的 32 位数字

linux - 运行 bash 脚本,在启动时自动打开终端

assembly - bootsector编程中无限跳转有什么用

linux - SOASTA CloudTest Lite ova VM 在导入 VirtualBox 后无法启动,出现错误 : "Your cpu does not support long mode. Use a 32bit distribution."

linux - Virtualbox 启动挂载不会卸载

带有检查目录的 Linux 别名

linux - 从 .txt 文件中读取键值对并在 shell 脚本中使用

c - 使用 Visual Studio 构建 UEFI 驱动程序