0

我正在尝试测试 DMA 映射框架的连续内存分配器。我已经编译了支持 CMA 的内核 3.5.7,我知道它是实验性的,但它应该可以工作。我的目标是在内核模块中为没有分散/收集功能的设备分配几个 32MB 物理上连续的内存块。

我正在使用 Barry Song 的测试补丁测试我的系统:http: //thread.gmane.org/gmane.linux.kernel/1263136

但是当我尝试使用echo 1024 > /dev/cma_test. 我明白了bash: echo: write error: No space left on device。在 dmesg 中:misc cma_test: no mem in CMA area

可能是什么问题呢?我错过了什么?系统刚刚重新启动,应该有至少 350mb 的可用连续内存,因为内核 3.2 上的 bigphysarea 补丁能够在类似系统上分配该数量。

感谢您的时间!

4

1 回答 1

0

最后我决定使用内核 3.5 和 bigphysarea 补丁(从 3.2 开始)。这很容易,而且效果很好。

CMA 也是不错的选择,但使用调试有点困难(CMA 需要实际设备)。我已经用尽了我所有的技能来找出问题所在。内核代码中的 Printk 是调试此代码的唯一可能性。

于 2013-08-05T13:24:12.613 回答