2013-02-05 55 views
0

我試圖測試連續內存分配器以用於DMA映射框架。我已經編譯了支持CMA的內核3.5.7,我知道它是實驗性的,但它應該可以工作。 我的目標是在內核模塊中爲設備分配幾個32MB物理連續內存塊,而無需分散/聚集功能。使用連續內存分配器(CMA)分配內存的問題Linux設備驅動程序開發

我測試我的系統與巴里宋測試補丁: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

嘗試使用啓動時內存分配... – akp

+0

我寧願(這是需求之一),因爲這是在內核模塊,我不認爲啓動時內存分配支持。 – na1pir

回答

0

最後我決定使用kernel 3.5和bigphysarea補丁(從3.2開始)。它很簡單,像魅力一樣工作。

CMA是很好的選擇,但使用調試(CMA需要實際設備)有點困難。我用盡了所有的技能來找出問題所在。內核代碼中的Printk只能調試這個。