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

Memory management 为什么内核中没有devm_vmalloc()?,memory-management,linux-kernel,Memory Management,Linux Kernel,最近的linux内核提供了设备管理的资源分配,如devm\u get\u free\u pages(),devm\u kmalloc()或devm\u ioremap()。它允许我们在模块退出时调用所有释放时简化代码 虽然我可以自己实现它,但我想知道为什么还没有devm_vmalloc()。使用kmalloc分配的内存在ram中是连续的,因此可以分配给用户(例如在内核和用户之间创建共享内存) devm_*函数的使用是向使用sysfs的用户报告内核中发生了什么,用户可以使用它来做一些事情 例如,在

最近的linux内核提供了设备管理的资源分配,如
devm\u get\u free\u pages()
devm\u kmalloc()
devm\u ioremap()
。它允许我们在模块退出时调用所有释放时简化代码


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

使用kmalloc分配的内存在ram中是连续的,因此可以分配给用户(例如在内核和用户之间创建共享内存) devm_*函数的使用是向使用sysfs的用户报告内核中发生了什么,用户可以使用它来做一些事情 例如,在android(基于linux内核)中,可以使用ION将物理地址映射到用户,因此,如果一个设备(例如照相机)报告地址,其他设备(例如GPU)可以使用它,但这只能用于连续物理内存。
vmalloc分配不是连续的,这就是为什么用户与之无关,因为它无法访问内核内存,mmap不工作

为什么这个问题被否决?答案可能很简单:要么提交补丁,要么承认没有人需要此功能。我可以提交补丁,但我不明白为什么在实现对另一种分配方法的devm支持时忽略了vmalloc。我相信这个问题被否决了,因为答案可能是基于意见的(但我认为情况并非如此)。这个问题本身是好的,但我怀疑你会在这里得到答案,很难猜测这个决定背后的动机。我建议你们在邮件列表上问这个问题。另外,将补丁中出现的所有人员(包括“抄送:”和“签名人:”字段)添加到邮件中的“抄送”列表中。很抱歉,此答案是错误的。Devm与sysfs无关,kmalloc不需要是连续的等等。我只是想给出我的想法,因为没有Devm_vmalloc存在。你错了!!kmalloc分配连续的物理块,这就是为什么您可以将其映射到用户。devm_*函数的主要思想是用于资源管理,但也可以通过sys提供数据,因此在用户空间中,我可以读取数据并使用其他设备驱动程序(例如ION)对其进行映射