我正在为我的应用程序编写一个简单的内存管理器,它将释放我的模块使用的任何多余内存,以便它可以再次使用。我的模块使用alloc_page&分配内存。 kmem_cache_alloc等内存管理器使用put_page& kmem_cache_free分别释放未使用的内存。
我面临的问题是,即使我使用put_page& amp; kmem_cache_free,我的模块无法获得空闲内存。我编写了一个测试代码,它在循环中分配了大量内存,当内存不足时,内存管理器休眠以释放内存。内存管理器成功执行免费代码并唤醒休眠过程,因为内存现在应该可用。有趣的是,alloc_page / kmem_cache_alloc调用仍然无法分配内存。现在,我无能为力,为什么会这样,寻求帮助。
答案 0 :(得分:0)
我发现了问题,这是我使用的API。如果我使用 __free_page而不是put_page来释放内存页面,一切 工作得很好。