Linux kernel ARM平台下,如何在内核模块中将虚拟地址转换为物理地址?

Linux kernel ARM平台下,如何在内核模块中将虚拟地址转换为物理地址?,linux-kernel,arm,Linux Kernel,Arm,正如我们所知,在ARM平台上,页偏移量以下的内核模块保留了16MB的空间。 如果我写一个模块并定义一个全局变量,那么我如何得到它的物理地址? 很明显,我使用virt_to_phys函数得到了一个错误的物理地址。如果virt_to_phys对您不起作用,您可以使用MMU进行V=>p映射,请参见如果virt_to_phys对您不起作用,您可以使用MMU进行V=>p映射,请参见您是否询问Linux?如果是这样的话,你可能应该给你的问题贴上标签。你问的是Linux吗?如果是这样的话,你可能应该给你的问题

正如我们所知,在ARM平台上,页偏移量以下的内核模块保留了16MB的空间。 如果我写一个模块并定义一个全局变量,那么我如何得到它的物理地址?
很明显,我使用virt_to_phys函数得到了一个错误的物理地址。

如果virt_to_phys对您不起作用,您可以使用MMU进行V=>p映射,请参见

如果virt_to_phys对您不起作用,您可以使用MMU进行V=>p映射,请参见

您是否询问Linux?如果是这样的话,你可能应该给你的问题贴上标签。你问的是Linux吗?如果是这样的话,你可能应该给你的问题加上标签。我想知道为什么那些内核开发人员没有提供像virt_to_phys这样的函数?
virt_to_phys
是一个简单的宏。对于内核本身的代码,有一个虚拟到物理内存的一对一映射;简单的数学可以得到地址。对于其他内存,物理页是半随机的,必须进行查找。我想知道为什么那些内核开发人员没有提供诸如virt_to_phys这样的函数?
virt_to_phys
是一个简单的宏。对于内核本身的代码,有一个虚拟到物理内存的一对一映射;简单的数学可以得到地址。对于其他内存,物理页是半随机的,必须进行查找。