我正在尝试测试连续内存分配器的DMA映射框架。我已经编译了内核3.5.7并支持CMA,我知道它是实验性的,但它应该可行。 我的目标是在内核模块中为设备分配几个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补丁能够在类似系统上分配该数量。
感谢您的时间!
答案 0 :(得分:0)
最后我决定使用内核3.5和bigphysarea补丁(来自3.2)。它很容易,就像一个魅力。
CMA也是很好的选择,但使用调试(CMA需要实际设备)有点困难。我已经用尽所有技能来找出问题所在。内核代码中的Printk只能调试这个。