为什么内核中没有devm_vmalloc()?

时间:2016-03-18 12:05:01

标签: memory-management linux-kernel

最近的Linux内核提供了设备管理的资源分配,如devm_get_free_pages()devm_kmalloc()devm_ioremap()。它允许我们简化代码,同时在模块退出时调用所有解除分配。

Altough我可以自己实现它,我想知道为什么还没有devm_vmalloc()

1 个答案:

答案 0 :(得分:-1)

使用kmalloc分配的内存在ram中是连续的,因此可以通过mmaped给用户(例如在内核和用户之间创建共享内存) devm_ *函数的使用是使用sysfs报告用户在内核中发生什么,用户可以使用它来做某事 例如在android(基于Linux内核)中,可以使用ION将物理地址映射到用户,因此如果一个设备(例如摄像头)报告地址,则其他设备(例如GPU)可以使用它但是可以完成仅用于连续的物理内存。 vmalloc分配不是连续的,这就是用户无关的原因,因为它无法访问内核内存而mmap无法正常工作