内核空间中的动态分配

时间:2012-10-18 09:03:54

标签: linux-device-driver kernel

我一直在尝试在内核空间中使用malloc为我正在处理的驱动程序分配空间(在这里使用malloc是一个约束;我不允许以任何其他方式分配空间) ,但如果我尝试分配“太多”元素(约为非常小的结构的500倍),实际上只分配了我所需空间的一小部分。

减少已分配元素的数量对我没有任何问题。内核空间中的动态分配是否有可能导致我看到的行为的限制?

1 个答案:

答案 0 :(得分:2)

malloc是一个用户空间库函数。你不能在内核空间中使用它。有一个名为kmalloc()的函数,用于在内核空间中分配内存。

您也可以使用vmalloc()。我建议你阅读这个帖子What is the difference between vmalloc and kmalloc?,以获得有关vmalloc()和kmalloc()的一些说明。

我还建议您在SO中搜索您的查询,然后提出问题。因为,已经有人问过here