2010-04-14 34 views
0

我正在爲我的應用程序編寫一個簡單的內存管理器,它將釋放我的模塊使用的任何多餘內存,以便它可以再次使用。我的模塊使用alloc_page & kmem_cache_alloc分配內存,因此內存管理器分別使用put_page & kmem_cache_free釋放未使用的內存。即使釋放內存,內存也不可用

我面對的問題是,即使我使用put_page & kmem_cache_free釋放內存後,我的模塊無法獲得可用內存。我寫了一個測試代碼,它在循環中分配了大量內存,當內存不足時在內存管理器上休眠以釋放內存。內存管理器成功執行空閒代碼並喚醒睡眠進程,因爲內存現在應該可用。有趣的是,alloc_page/kmem_cache_alloc調用仍然無法分配內存。現在,我無能爲力,爲什麼會這樣尋求幫助。

回答

0

我想出了問題,這是我用的API。如果我使用__free_page而不是put_page來釋放內存頁面,則所有內容都可以正常工作。

+0

如果你已經回答了你自己的問題,你應該接受你的答案。其餘的可能會更好地開始另一個問題。 – 2010-04-15 10:16:59